gpt4 book ai didi

git - 在 Git 中重新定位远程分支

转载 作者:IT王子 更新时间:2023-10-29 01:21:10 25 4
gpt4 key购买 nike

我正在使用中间 Git 存储库来镜像远程 SVN 存储库,人们可以从中克隆并继续工作。中间存储库的主分支每晚从上游 SVN 重新定位,我们正在处理功能分支。例如:

remote:
master

local:
master
feature

我可以成功地将我的功能分支推回远程,并以我期望的结果结束:

remote:
master
feature

local:
master
feature

然后我重新设置分支以跟踪远程:

remote:
master
feature

local:
master
feature -> origin/feature

一切都很好。我想从这里做的是将 feature 分支 rebase 到远程的 master 分支,但我想从我的本地机器上做这件事。我希望能够做到:

git checkout master
git pull
git checkout feature
git rebase master
git push origin feature

保持远程功能分支与远程主控保持同步。然而,这种方法导致 Git 报错:

To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.

git pull 可以解决问题,但会导致我想避免的 merge 提交。我担心该消息说明 feature -> feature 而不是 feature -> origin/feature 但这可能只是一个演示文稿。

我是不是遗漏了什么,或者是以完全错误的方式进行的?避免在远程服务器上进行 rebase 并不重要,但它会使从 rebase 修复任何 merge 冲突变得更加困难。

最佳答案

归结为该功能是否由一个人使用,或者其他人是否正在使用它。

如果只有你一个人,你可以在 rebase 后强制推送:

git push origin feature -f

但是,如果其他人正在处理它,您应该 merge 而不是从 master rebase 。

git merge master
git push origin feature

这将确保您与合作的人有共同的历史。

在不同的层面上,您不应该进行反向 merge 。您正在做的是用不属于该功能的其他提交污染您的功能分支的历史,从而使该分支的后续工作更加困难 - 无论是否 rebase 。

这是我关于主题的文章 branch per feature .

希望这对您有所帮助。

关于git - 在 Git 中重新定位远程分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com