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 branch, master(最新)
和远程:featureBranch(现在领先?!)和 master。
我只是想更新我的功能分支,这样它甚至可以接近 master 上的版本...
为什么git会这样...
我已经阅读了很多关于此的主题,唯一的解决方案似乎是使用 --force
对于我来说,对于这种常用的工具,这个 dosen 似乎完全是一个解决方案...
原则上git push --force
没有问题
它的作用是用本地替换分支的远程负责人。
有两种情况,一种推力还可以,一种根本不行:
如果你变基(并因此为你的分支创建了一个新的提交链),你的分支和远程分支就会发生分歧,这是可以预料的。你故意让他们分道扬镳。例如,您的分支不是最新的 master
,因此您将其变基到 master
之上的 "move it"(从技术上讲,提交是从新基重新创建的,在这种情况下 master
但实际上它看起来好像已被移动)。所以您 知道 他们有分歧,您的本地版本是正确的。在这种情况下,可以告诉 git: "Take this version, discard the one you have".
但是,如果您与同一个分支上的人一起工作,并且一个人在您进行自己的更改时推送新更改的分支,那么当您想要推送时,Git 也会告诉您你当地的分支机构和它的上游分道扬镳,所以你应该先拉,依此类推。 在这种情况下重要的是不要push --force
否则你同事的作品会被抹掉,he/she会很漂亮沮丧的。所以在这种情况下你确实必须首先 pull
(我建议 pull --rebase
不要创建合并提交,并保持你的历史更清晰,但这是非常主观的),然后 push
(以及之后拉动,不需要 --force
。
底线是,知道 git push --force
的作用,知道什么时候可以用你的本地覆盖上游(然后你可以强制),什么时候不行(你需要拉)。
回到原来的情况,你重新调整了你的分支,所以它发散了(根据定义),所以如果你单独在分支上工作,或者如果你确保同时没有人在它上面推送任何东西, git push --force
就是你所需要的。
我知道以前有人问过这个问题,但我似乎无法理解这件事...
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 branch, master(最新)
和远程:featureBranch(现在领先?!)和 master。
我只是想更新我的功能分支,这样它甚至可以接近 master 上的版本... 为什么git会这样...
我已经阅读了很多关于此的主题,唯一的解决方案似乎是使用 --force
对于我来说,对于这种常用的工具,这个 dosen 似乎完全是一个解决方案...
原则上git push --force
没有问题
它的作用是用本地替换分支的远程负责人。
有两种情况,一种推力还可以,一种根本不行:
如果你变基(并因此为你的分支创建了一个新的提交链),你的分支和远程分支就会发生分歧,这是可以预料的。你故意让他们分道扬镳。例如,您的分支不是最新的 master
,因此您将其变基到 master
之上的 "move it"(从技术上讲,提交是从新基重新创建的,在这种情况下 master
但实际上它看起来好像已被移动)。所以您 知道 他们有分歧,您的本地版本是正确的。在这种情况下,可以告诉 git: "Take this version, discard the one you have".
但是,如果您与同一个分支上的人一起工作,并且一个人在您进行自己的更改时推送新更改的分支,那么当您想要推送时,Git 也会告诉您你当地的分支机构和它的上游分道扬镳,所以你应该先拉,依此类推。 在这种情况下重要的是不要push --force
否则你同事的作品会被抹掉,he/she会很漂亮沮丧的。所以在这种情况下你确实必须首先 pull
(我建议 pull --rebase
不要创建合并提交,并保持你的历史更清晰,但这是非常主观的),然后 push
(以及之后拉动,不需要 --force
。
底线是,知道 git push --force
的作用,知道什么时候可以用你的本地覆盖上游(然后你可以强制),什么时候不行(你需要拉)。
回到原来的情况,你重新调整了你的分支,所以它发散了(根据定义),所以如果你单独在分支上工作,或者如果你确保同时没有人在它上面推送任何东西, git push --force
就是你所需要的。