繁体   English   中英

重新设置后的Git推送

[英]Git push after rebase

我知道这已经被问过了,但是我似乎无法把这个事情包住头...

git checkout master
git pull
git git checkout feature
git rebase origin/master

then resolve all the problems....
Try to push - not gonna happen...

git真的是在告诉我,在进行了重新设置之后(处理n:ths冲突)

我有两个选择,使用--force似乎有风险和愚蠢。

还是再次pull并再次处理合并冲突...并最终处于相同情况?

error: failed to push some refs to 'ssh://git@git.zzz.com/yyy/xxx.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我在本地:feature分支,master(最新)

和远程:featureBranch(现在在前面?!)和master。

我只想更新我的功能分支,所以它甚至接近母版上的版本...为什么git像这样...

我已经读过很多关于此的主题,唯一的解决方案似乎是使用--force

对于我来说,对于这种常用工具而言,这似乎是一个解决方案……

git push --force原则上没有错。

它的作用是用本地替换分支的远程头。

有两种情况,一种情况适用推力,另一种根本不适用:

如果您重新设置了基础(并因此为分支创建了新的提交链),则分支和远程分支将出现差异。 并且您使它们故意偏离。 例如,您的分支不是master最新版本,因此您将其重新建立基础以将其“移动”到master (从技术上讲,提交是从新的基础(在本例中为master重新创建的,但实际上看起来好像已经移动)。 因此,您知道它们有所不同,并且您的本地版本是正确的版本。 在这种情况下,最好告诉git:“获取此版本,放弃您拥有的版本”。

但是,如果您与同一个分支上的人一起工作,而一个人在进行自己的更改时以新的更改推送该分支,那么当您要推送时,Git还会告诉您您本地的分支及其上游分支,所以你应该先拉等等。 在这种情况下不要用 push --force这很重要,否则您的同事的工作将被抹除,他/她将非常沮丧。 因此,在这种情况下,您必须确实先pull (我建议使用pull --rebase来不创建合并提交,并使历史记录更整洁,但这是非常主观的),然后再进行push (并且在拉后不需要--force )。

最重要的是,知道git push --force作用,知道何时可以用本地覆盖上游(然后可以用力推),什么时候不可以(需要拉)。

回到原始情况,您重新设置了分支的基础,因此分支(按照定义)有所不同,因此,如果您独自在分支上工作,或者确保同时没有人在分支上施加任何内容,则git push --force是您所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM