采取以下案例:
我在主题分支中有一些工作,现在我已准备好合并回主人:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)
我从master执行合并,解决冲突,现在我有:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)
现在,合并花了我一些时间,所以我再做一次提取并注意到远程主分支有新的变化:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)
如果我从master中尝试'git rebase origin/master',我将被迫再次解决所有冲突,并且我也失去了合并提交:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* …Run Code Online (Sandbox Code Playgroud) 我有2个分支,master和dev.
我在dev分公司,我想摘樱桃1从承诺master到dev.所以我做了
$ git cherry-pick be530cec7748e037c665bd5a585e6d9ce11bc8ad
Finished one cherry-pick.
Run Code Online (Sandbox Code Playgroud)
但是,当我做的git status和gitx,我没有看到我的承诺be530cec7748e037c665bd5a585e6d9ce11bc8ad在git的历史.
我怎样才能在dev分支中看到我的提交?
我试图了解它们之间的区别
git push -f
Run Code Online (Sandbox Code Playgroud)
和
git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)
我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控器?
如果有更好的方式来表达问题,lmk,但希望它很清楚.
commit b0e5db36ed68d4562275adeb08001b1316a4da52
Merge: ea38baa 8220bb1
commit ea38baa3f46a48722987b8dd3892d2b8d81c4d1a
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我如何压缩这两个提交
我在用
git rebase -i HEAD~2
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为它删除了合并提交并且不可用于挤压
git ×4
merge ×2
cherry-pick ×1
commit ×1
git-push ×1
git-rebase ×1
github ×1
rebase ×1
squash ×1