我的本地树与主人分道扬:
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 7 and 3 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
我试过git pull --rebase并且失败了:
$ git pull --rebase
First, rewinding head to replay your work on top of it...
Applying: * ...
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging ChangeLog
CONFLICT (content): Merge conflict in ChangeLog
Failed to merge in the changes.
Patch failed at 0001 * ...
Run Code Online (Sandbox Code Playgroud)
所以我用git rebase恢复了 - 我现在在1号广场.
我想要的是:
我明白git rebase - 继续这样做.我做了它,它确实工作(经过一些手动合并和一个git添加).但是,我希望能够手动执行此操作,因此我想知道上面的hg命令对应的git命令是什么.
谢谢.
PS.请不要告诉我使用带有git的ChangeLog文件是愚蠢的.即使是这样,也不适合我.
Pat*_*otz 45
当然,有几种方法可以手动完成.你仍然会有同样的冲突,因为git基本上是为你做这件事.但如果您想手动执行此操作,可以采用以下几种方法.
首先,将提交导出为一系列补丁.最简单的方法是使用git format-patch:
git format-patch -M @{upstream}
Run Code Online (Sandbox Code Playgroud)
将生成7个补丁文件 - 每个提交一个.(注意"@ {upstream}"是文字的 - 它是git的一个不太知名的特性.)这比捕获输出更好,git diff因为保留了所有提交信息(作者,日期,消息等) .
然后您可以重置您的存储库以匹配上游:
git reset --hard @{upstream}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用git am- 一次一个或一次全部重新应用补丁.
git am 0001-blah-blah.patch
git am 0002-blah-blah.patch
...
Run Code Online (Sandbox Code Playgroud)
第二种选择是在你的工作上创建一个备用分支:
git branch scrap
Run Code Online (Sandbox Code Playgroud)
然后将分支重置为上游:
git reset --hard @{upstream}
Run Code Online (Sandbox Code Playgroud)
然后樱桃挑选提交:
git cherry-pick scrap~6
git cherry-pick scrap~5
git cherry-pick scrap~4
...
Run Code Online (Sandbox Code Playgroud)
然后废弃废料分支:
git branch -D scrap
Run Code Online (Sandbox Code Playgroud)
Sai*_*esh 17
你试过git merge origin/master吗?
您的远程更改存储在分支中origin/master.(或者它会,如果你这样做git fetch.)只需合并两个分支 - master和origin/master- 像任何两个分支一样,解决冲突(如果有的话).
如果您需要知道如何解决git冲突,这可能会对您有所帮助.
Git表示它试图完全按照您的意愿行事(在原始/主人的最新变更之上重新应用补丁)但失败并发生冲突.在git pull --rebase冲突之后立即打开一个带有冲突文件的编辑器(git status将在"已更改"下列出这些文件)并解决冲突,标记为diff diffua.当你完成解决冲突时git rebase --continue(git rebase --skip如果你的决议没有引入任何变化).
阅读他在Stackexchange文档中的"解决Git rebase之后的合并冲突".