如何同步本地和远程存储库



在GitHub上合并了一个拉取请求(PR(,并在远程存储库(origin(上提交了3次之后,我执行了一次拉取以更新我的本地存储库(main(。不知怎么的,事情出了问题,标准CI测试在本地失败了。我重置本地存储库以忽略使用的3个提交

git reset --hard SHA

并在PR之前恢复了本地状态。然后,为了单独检查提交,我使用显式执行了pull

git fetch origin
git merge SHA-commit1
git merge SHA-commit2
git merge SHA-commit3

并到达与远程相同的(功能(状态,所有CI测试均正常。

为了完整起见:我在远程有另一个PR提案,它还没有合并(包含一些错误(。

虽然,我的本地和远程存储库现在实际上是一样的,命令

git status origin

显示

On branch main
Your branch and 'origin/main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)

我想知道是否有一种简单的方法来同步这两个存储库(我担心建议的git pull会有和以前一样的效果(。提前感谢您的任何提示。

简短答案

要放弃任何本地更改并将沙箱置于与原始沙箱相同的状态,请运行:

git fetch
git reset --hard origin/main

(假设:您正在处理分支main。(

进一步评论

当你不确定沙盒中发生了什么时,你应该使用一个工具来直观地查看你的提交图。有很多图形化的,但这里有一个简单的命令行:

git log --all --oneline --graph --decorate

关键是使其显示图形、分支名称(本地和远程(以及所有分支。

此命令将向您显示远程和本地是如何分化的。然后,您可以决定是保留本地更改并使用合并或重定基准,还是放弃本地更改并进行硬重置。

另一点:我真的不是git pull的粉丝。事实上,我从来没有用过它。它和git fetch后面跟着git merge一样,只是盲目地进行合并,不管这是不是一个好主意。我更喜欢1(获取,2(运行显示图形的git log命令,然后3(决定是否真的要合并、重定基准或重置等等。

相关内容

  • 没有找到相关文章

最新更新