gpt4 book ai didi

git - 如何修复 Git 推送落后于远程副本

转载 作者:太空狗 更新时间:2023-10-29 14:43:46 24 4
gpt4 key购买 nike

在 Git 中,master 分支的变化应该被集成到 dev 分支中。我首先在本地磁盘中制作了 DEV 的副本,然后将 master 重新设置为 DEV 分支。然后使用 WinMerge 手动比较文件。

但看起来这个策略不起作用。我做了一些搜索,解决方案之一是使用 push 'force' 来修复它。我们还有其他优雅的方式吗?

这是我的步骤:

aa@lenovo-pc MINGW64 /c/temp/TestGit2App (DevelopmentBranch)
$ git rebase -Xours master #keep the master changes first
# use WinMerge to merge changes back to files ...
git add -A
git commit -m "ddd"
git push

To 192.168.1.8:/home/git/TestGit2App.git
! [rejected] DevelopmentBranch -> DevelopmentBranch (non-fast-forward)
error: failed to push some refs to 'git@192.168.1.8:/home/git/TestGit2App.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.

最佳答案

需要强制将您的开发分支推送到远程,从而覆盖之前存在的版本,这是您正在使用的 rebase 工作流的一个完全正常的部分。当您将开发分支重新建立在 master 上时,您重写了该前分支的历史。考虑下面的简单图表,其中 devmaster 分支各有一个提交分歧:

master: A -- B
dev: A -- C

当你这样做的时候

git checkout dev
git rebase master

你最终得到了这张图

master: A -- B
dev: A -- B -- C'

换句话说,您从 master 中提取了更改,然后在这些更改之上重新提交了您所有独特的工作。如果仔细观察,您会注意到 C' 提交有一个撇号。这是为了表明它与 dev 分支中的原始 C 提交完全不同。

rebase 的一个副作用是 dev 分支不能再简单地推送到远程,因为 base 已经改变了。相反,您将不得不通过以下方式强制推送它:

git push --force origin dev

关于git - 如何修复 Git 推送落后于远程副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41007761/

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