我知道以前有人问过这个问题,但我似乎无法理解这件事......
git checkout master
git pull
git git checkout feature
git rebase origin/master
then resolve all the problems....
Try to push - not gonna happen...
Run Code Online (Sandbox Code Playgroud)
git 真的告诉我,在进行了 rebase 之后(处理 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.
Run Code Online (Sandbox Code Playgroud)
我在本地有:功能分支,主(最新)
和远程:featureBranch(现在领先?!)和主人。
我只是想更新我的功能分支,所以它甚至接近 master 上的版本......为什么 git 这样......
我已经阅读了很多关于此的主题,唯一的解决方案似乎是使用 --force
对于我来说,对于这样常用的工具,这似乎是一个解决方案......
pad*_*win 20
git push --force原则上没有问题。
它的作用是用本地替换分支的远程负责人。
有两种情况,一种是推力可以,一种是根本不行:
如果您重新定位(因此为您的分支创建了一个新的提交链),您的分支和远程会发生分歧,这是可以预料的。而你故意让他们分道扬镳。例如,您的分支不是最新的master,因此您将其重新设置为“移动它” master(从技术上讲,提交是从新基础重新创建的,在这种情况下,master但实际上它看起来好像已被移动)。所以你知道他们有分歧,你的本地版本是正确的。在这种情况下,可以告诉 git:“使用这个版本,丢弃你拥有的那个”。
但是,如果您与同一分支上的人一起工作,并且在您进行自己的更改时,一个人将新更改推送到该分支,那么当您想要推送时,Git 还会告诉您您的本地分支与其上游分支,所以你应该先拉,依此类推。在这种情况下,重要的是不要 push --force否则您同事的工作将被删除,他/她会非常沮丧。因此,在这种情况下,您确实必须pull首先(我建议pull --rebase不要创建合并提交,并保持您的历史记录更清晰,但这是非常主观的),然后push(在拉动之后,--force不需要)。
底线是,知道什么是,知道什么git push --force时候可以用你的本地覆盖上游(然后你可以推力)和什么时候不行(你需要拉)。
回到你原来的案例,你重新定位了你的分支,所以它(根据定义)发散了,所以如果你独自在分支上工作,或者你确保在此期间没有人在它上面推送任何东西,这git push --force就是你所需要的。
| 归档时间: |
|
| 查看次数: |
9655 次 |
| 最近记录: |