Ale*_*ula 367 git patch commit
情况:
这样:
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
然后我开始研究quickfix2,但不小心将quickfix1作为源分支进行复制,而不是master.现在quickfix2处于X + 2提交+ 2相关提交.
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
\
q2a--q2b (quickfix2 HEAD)
Run Code Online (Sandbox Code Playgroud)
现在我希望有一个quickfix2分支,但没有属于quickfix1的2次提交.
q2a'--q2b' (quickfix2 HEAD)
/
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
我尝试从quickfix2中的某个修订版创建补丁,但补丁不保留提交历史记录.有没有办法保存我的提交历史记录,但有一个分支没有更改quickfix1?
Von*_*onC 358
这是一个经典案例rebase --onto:
# let's go to current master (X, where quickfix2 should begin)
git checkout master
# replay every commit *after* quickfix1 up to quickfix2 HEAD.
git rebase --onto master quickfix1 quickfix2
Run Code Online (Sandbox Code Playgroud)
所以你应该去
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
\
q2a--q2b (quickfix2 HEAD)
Run Code Online (Sandbox Code Playgroud)
至:
q2a'--q2b' (new quickfix2 HEAD)
/
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
最好在干净的工作树上完成.
看git config --global rebase.autostash true,特别是在Git 2.10之后.
DJ.*_*DJ. 151
您可以使用它git cherry-pick来选择要复制的提交.
可能最好的方法是从master创建分支,然后在该分支中使用git cherry-pick你想要的quickfix2的2次提交.
Chr*_*oph 138
你可以做的最简单的事情是挑选一个范围.它做的一样,rebase --onto但眼睛更容易:)
git cherry-pick quickfix1..quickfix2
Run Code Online (Sandbox Code Playgroud)
Mat*_*hen 26
我相信它是:
git checkout master
git checkout -b good_quickfix2
git cherry-pick quickfix2^
git cherry-pick quickfix2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
198537 次 |
| 最近记录: |