同步分支与上游仓库
Syncing branch with upstream repo
我分叉了一个 repo 并在我的分叉中创建了一个名为 B
的新分支。工作了一段时间后,我想为 B
创建一个 pull request,但原来的 repo 已经提交了。目前该分支是“提前 3 次提交,落后原始 5 次提交”。
如何确保在创建 Pull Request 时没有冲突?
我知道这听起来像是一个重复的问题,但我无法find/couldn不理解网络上的任何解决方案。
首先,要考虑的一点是,如果您没有更改原始存储库中更改的任何相同代码行,那么可能不会有任何合并冲突。如果是这种情况,那么即使您的分支落后,维护者也应该能够使用 GitHub 的合并按钮。
如果不是这种情况,或者您仍想确保您的分支是最新的,请继续阅读。
您的存储库可能看起来像这样:
A--B--C--D--E--F [master]
\
G--H--I [branch B]
(执行 git log --all --oneline --decorate --graph
以查看您的存储库的类似输出。)
您有两个选择:合并或变基。检查 repo 中的 CONTRIBUTING
文件(如果有的话),因为项目通常会有关于您应该使用哪个选项的规则或指南。
合并
要一次解决所有冲突,您可以从原始仓库中的 master
合并到您的分支中。你会这样做:
git checkout B
git merge --no-ff master
如有必要,解决任何冲突并提交。
您的历史记录将如下所示:
A--B--C--D--E--F [master]
\ \
G--H--I--J [branch B]
变基
为了避免合并提交 J
,您可以改为将您的分支变基到 master
。
git checkout B
git rebase master
您的历史记录将如下所示:
A--B--C--D--E--F [master]
\
G'--H'--I' [branch B]
例如标签G'
表示提交具有与以前相同(或相似)的内容,但由于它们具有新的父提交,因此它们在技术上是新的提交(具有新的 SHA1 哈希)。
合并的好处是可以一次解决所有的冲突,但它会导致更混乱的历史。变基的好处是它可以导致更清晰的历史记录,但由于它涉及重写历史记录,如果您已经发布了分支,它可能会导致冲突。再次检查项目是否有任何使用规则/指南。
我分叉了一个 repo 并在我的分叉中创建了一个名为 B
的新分支。工作了一段时间后,我想为 B
创建一个 pull request,但原来的 repo 已经提交了。目前该分支是“提前 3 次提交,落后原始 5 次提交”。
如何确保在创建 Pull Request 时没有冲突?
我知道这听起来像是一个重复的问题,但我无法find/couldn不理解网络上的任何解决方案。
首先,要考虑的一点是,如果您没有更改原始存储库中更改的任何相同代码行,那么可能不会有任何合并冲突。如果是这种情况,那么即使您的分支落后,维护者也应该能够使用 GitHub 的合并按钮。
如果不是这种情况,或者您仍想确保您的分支是最新的,请继续阅读。
您的存储库可能看起来像这样:
A--B--C--D--E--F [master]
\
G--H--I [branch B]
(执行 git log --all --oneline --decorate --graph
以查看您的存储库的类似输出。)
您有两个选择:合并或变基。检查 repo 中的 CONTRIBUTING
文件(如果有的话),因为项目通常会有关于您应该使用哪个选项的规则或指南。
合并
要一次解决所有冲突,您可以从原始仓库中的 master
合并到您的分支中。你会这样做:
git checkout B
git merge --no-ff master
如有必要,解决任何冲突并提交。
您的历史记录将如下所示:
A--B--C--D--E--F [master]
\ \
G--H--I--J [branch B]
变基
为了避免合并提交 J
,您可以改为将您的分支变基到 master
。
git checkout B
git rebase master
您的历史记录将如下所示:
A--B--C--D--E--F [master]
\
G'--H'--I' [branch B]
例如标签G'
表示提交具有与以前相同(或相似)的内容,但由于它们具有新的父提交,因此它们在技术上是新的提交(具有新的 SHA1 哈希)。
合并的好处是可以一次解决所有的冲突,但它会导致更混乱的历史。变基的好处是它可以导致更清晰的历史记录,但由于它涉及重写历史记录,如果您已经发布了分支,它可能会导致冲突。再次检查项目是否有任何使用规则/指南。