Git 在不同的机器上拉取提交重置

Git Pulling commits reset in different machine

我在我的办公室计算机和私人计算机上工作的回购协议中有提交 A、B、C(A 是最新的)。

然后我从我的私人计算机重置提交 A、B 并添加新的提交 D。现在我的私人计算机有提交 D、C。然后我强制推送它们所以我的远程仓库也只显示 D、C。

现在,当我从我的办公室计算机中提取我的存储库时,它有提交 D、A、B、C 和一个新的 'merge conflict' 提交,我在提取存储库时必须这样做?

如何让我的办公室计算机与远程存储库(即 D、C)具有相同的提交?

不得不做

git reset --hard origin/master

git pull

之后

pull(git pull)的意思是fetch,然后做第二个命令,一般是merge:也就是git fetch然后git merge。所以合并来自第二个 Git 命令 git pull 运行s.

因为您不想要合并,所以不要运行git merge。这意味着:不要 运行 git pull. 因为 git pull 实际上只是 two Git命令,运行第一个自己做:git fetch.

然后,在获得新提交 D 后,您想要执行与您的强制推送和 git reset 所做的相同类型的重置。在这种情况下,这意味着您需要 运行:

git reset --hard origin/master

(或任何 origin/ 远程跟踪名称,对应于您当前的分支)。小心 git reset --hard,它会删除您所做的任何未提交的工作:运行 git status 首先确保您没有任何此类工作,或者愿意丢弃它。

(我建议一般避免使用 git pull。如果您 想要在 git fetch、运行 之后添加 git merge那是你自己。但那是一个单独的问题。)