Git: 将现有的本地存储库连接到现有的远程存储库

Git: Connect existing local repository to existing remote repository

这可能是非常基础的,但我还没弄明白:

我在两台服务器上有一个 PHP 项目 运行,我们将它们称为 LiveStaging
两台服务器 运行 显然是同一个项目,但有一些变化。
该项目到达我手中时不在 Github 上,所以这就是我现在首先要做的事情。

我设法在 Github 上创建了一个新的远程存储库并将 Live 系统连接到它。
(通过将 Github 存储库添加为 'origin' 在 Live)
git remote add origin https://github.com/path-to-repo/repo.git

所以 Live 系统目前在 master 分支上并且是最新的 origin/master 它有 4 次提交的历史记录。

现在我也在尝试连接 Staging 上的 Github 存储库

所以我做了一个

git init
git remote add origin https://github.com/path-to-repo/repo.git
git remote -v

origin  https://github.com/path-to-repo/repo.git (fetch)
origin  https://github.com/path-to-repo/repo.git (push)

git fetch

现在,当我执行 git 状态时,我看到存储库仍处于初始提交状态,所有文件和文件夹都列为未跟踪:

 root@staging-host:/var/www/html# git status
 On branch master

 Initial commit

 Untracked files:   (use "git add <file>..." to include in what will be
 committed)

         .htaccess
         README.md
         _index.html
         api/
         app/
         composer.json
         global/
         index.php
         package-lock.json
         package.json
         phpinfo.php
         system/
         vendor/
         view/

origin/master
中的最后一次提交相比,我如何检查本地更改 我不想丢失任何本地更改,但也不想提交或推送任何内容
在逐个文件决定提交什么和重置什么之前,我需要先检查差异

可能有更好的方法,但这应该可行。

  1. git add .
  2. git commit -m 'tmp'
  3. git diff HEAD origin/master
  4. git reset --soft HEAD~1

您可以重置为检查差异所做的提交

您的方法几乎是正确的。看看你的命令:

git remote add origin https://github.com/path-to-repo/repo.git

这会尝试添加一个远程仓库作为来源但失败了,因为它已经存在。

运行

git remote -v

您会看到这是您的实时回购。以不同的方式命名,例如

git remote add staging https://github.com/path-to-repo/repo.git

然后它应该可以工作了。如果origin是live,staging是staging,那么pull, pushing to staging是这样的:

git pull staging <branch>

git push staging <branch>

分别。如果我是你,我更喜欢 origin 指向 staging,另一个叫 live 的 remote 会指向 live,因为你会更频繁地使用 staging。

编辑

显然我误解了这个问题。基本上有一个由 GitHub 托管的存储库,您也想将其用于暂存。您不需要 运行

git init

在这种情况下也不会添加遥控器。你只需要克隆 repo,比如

git clone https://github.com/path-to-repo/repo.git