如何同步本地和远程存储库
How to sync local and remote repositories
在 GitHub 上合并拉取请求 (PR) 并在远程存储库 (origin) 上进行 3 次提交后,我执行了拉取以更新我的本地存储库 (main)。不知何故出了问题,标准 CI 测试在本地失败。我使用
重置本地存储库以忽略 3 次提交
git reset --hard SHA
重新回到PR前的本地状态。然后,为了单独检查提交,我使用
显式地执行了拉取
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 拉取与以前的效果相同)。预先感谢您的任何提示。
简答
要放弃任何本地更改并将您的沙箱置于与原始状态相同的状态,运行:
git fetch
git reset --hard origin/main
(假设:您正在分支 main
上工作。)
进一步评论
当您不确定沙箱中发生了什么时,您应该使用一种工具来直观地查看您的提交图。有很多图形化的,但这里有一个简单的命令行:
git log --all --oneline --graph --decorate
关键是让它显示图形、分支名称(本地和远程)和所有分支。
此命令将准确显示远程和本地的差异。然后,您可以决定是要保留本地更改并使用合并或变基,还是放弃本地更改并使用硬重置。
另注:我真的不是git pull
的粉丝。事实上,我从不使用它。它与 git fetch
后跟 git merge
相同,但盲目地合并是否是个好主意。我更喜欢 1) 获取,2) 运行 git 显示图形的日志命令,然后 3) 决定我是否真的想要合并、变基、重置或诸如此类的东西。
在 GitHub 上合并拉取请求 (PR) 并在远程存储库 (origin) 上进行 3 次提交后,我执行了拉取以更新我的本地存储库 (main)。不知何故出了问题,标准 CI 测试在本地失败。我使用
重置本地存储库以忽略 3 次提交git reset --hard SHA
重新回到PR前的本地状态。然后,为了单独检查提交,我使用
显式地执行了拉取 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 拉取与以前的效果相同)。预先感谢您的任何提示。
简答
要放弃任何本地更改并将您的沙箱置于与原始状态相同的状态,运行:
git fetch
git reset --hard origin/main
(假设:您正在分支 main
上工作。)
进一步评论
当您不确定沙箱中发生了什么时,您应该使用一种工具来直观地查看您的提交图。有很多图形化的,但这里有一个简单的命令行:
git log --all --oneline --graph --decorate
关键是让它显示图形、分支名称(本地和远程)和所有分支。
此命令将准确显示远程和本地的差异。然后,您可以决定是要保留本地更改并使用合并或变基,还是放弃本地更改并使用硬重置。
另注:我真的不是git pull
的粉丝。事实上,我从不使用它。它与 git fetch
后跟 git merge
相同,但盲目地合并是否是个好主意。我更喜欢 1) 获取,2) 运行 git 显示图形的日志命令,然后 3) 决定我是否真的想要合并、变基、重置或诸如此类的东西。