来自远程 Master 的 Git Rebase

Chr*_*tti 8 git branch github rebase

以前可能有人问过这个问题,但我对术语有点困惑,所以我不确定哪些命令是完成我需要完成的任务的正确命令。现在我有一个 GitHub 存储库,正在与我的团队一起工作。在那里,我为一项任务创建了一个分支。我将存储库克隆到本地计算机,然后在本地检查该分支。我开始进行一些我希望继续进行的更改...在进行这些更改时,我的团队一直在更新他们的代码并将更改推回 GitHub 上的主分支。我如何从 GitHub 上的 master 分支上拉取他们的更改,以便它在本地和 GitHub 上更新我的分支(现在在 GitHub 上,它说我领先 1 个提交,落后于 master 19 个提交)。感谢您在这里的建议...这将是我计划定期做的事情,因此学习正确的流程对我很有帮助...

Mar*_*one 13

您可以在此处应用一系列方法来完成您想要的任务。这可能取决于您的存储库策略。例如,如果您对分支进行变基,您将无法将其推送回服务器,您必须使用 -f 推送它或删除远程分支并推送一个新分支。有些人可能会说,一旦您已经将分支推送到服务器,如果这是您的存储库的策略,那么 rebase 不是一个好方法,因此您必须将主分支合并到您的分支中,然后将其推回远程。

我们来谈谈这两种方法:

变基:

我个人更喜欢进行变基操作,但前提是我确定没有其他人正在使用我在远程推送的分支。我喜欢变基,因为这最终会留下更清晰的历史记录,它这样做是因为它从分支中删除我的更改,应用远程更改,然后将我的更改应用回顶部,但是,这样做会更改提交哈希值,并且它确实与您之前的同一提交不匹配,因此您必须使用 -f 推送它或删除远程分支并再次创建它。

我会这样做,在您的本地存储库上我会转到主分支:

git checkout master

然后用远程更改更新它:

git pull

它将在 git master 分支上在幕后运行 git fetch 和 merge。

然后回到你的分支:

git checkout my_branch

然后与 master 重新建立基础:

git rebase master

如果一切顺利,没有冲突,那么就可以开始了。

您可以使用:

git push -f origin my_branch

(小心!这个命令将覆盖你的远程分支,在使用这个命令之前确保你的 rebase 一切正常是非常危险的。)

或者您可以删除远程分支端,将其正常推送回服务器:

git push origin my_branch

合并:

使用这种方法,您最终会在历史记录上进行合并提交,并且随着时间的推移,日志可能会变得混乱,但是这也有一些优点,如果确实存在冲突,您只需解决一次,当你合并时,如果你在变基时遇到冲突,你可能必须多次解决它,因为它会尝试将你的提交一一应用到新的远程提交上。

为此,您只需转到主分支并更新它即可:

git checkout master

和:

git pull

将执行与我们之前看到的相同的操作

现在回到你的分支:

git checkout my_branch

并运行:

git merge master

如果您没有任何冲突,那么您就可以将其推送到服务器,如果有,您只需解决它,并且您也可以将其正常推送到服务器,因为现在您已经解决了冲突新提交,本地分支和远程分支之间没有任何差异。

git push origin my_branch

就是这样,我希望您觉得这有帮助,您可能可以用更少的步骤来完成此操作,但这些只是我喜欢做的步骤,它们可能不是更短的步骤,但我觉得这样更安全。当然,有很多关于合并和变基的选项,我建议您更多地研究它们,它们非常有用。