假设我在myBranch上做了10次提交(myBranch已经签出)。 我想和主人一起改变并压制所有提交。
我们目前的工作流程是......
共有6个步骤和交互式rebase控制台来处理(更不用说推力的风险)。
是否有更短的工作流程会产生相同的效果?
答案 0 :(得分:2)
如果您的目标是,则没有理由更新您的本地dict
分支机构
只是为了反对上游master
分支。您可以替换这些步骤:
master
使用:
git checkout master
git fetch origin
git pull -r origin master
git checkout myBranch
git rebase -i master
如果您想避开交互式rebase,可以执行this answer中描述的内容:
git fetch origin
git rebase -i origin/master
这会将当前分支重置为git fetch origin
git reset --soft origin/master
git commit -m 'message for merged commit'
而不会影响您的工作目录,并且会将所有更改保留在索引中。这意味着origin/master
将在一个步骤中提交所有更改。
答案 1 :(得分:2)
如果你想用你的本地提交做的就是压缩它们,你甚至不需要做一个交互式的rebase。您可以使用git reset --soft
来完成,这样更方便:
git reset --soft HEAD~10
#soft reset to 10 commitits
git commit -m "Message for the squashed commits"
#all此时您的更改已添加到索引
然后你可以反对远程的master
分支:
git fetch origin
git rebase origin/master
请注意,如果没有人(除了你)已经从myBranch
提取了这10个提交,那么压缩提交是安全的,否则你将重写历史记录并且你将度过糟糕的时光。
答案 2 :(得分:1)
git fetch origin
git rebase -i origin/master
git push -f origin myBranch
或者如果你想在所有行上保存节的更改并想要使用全新的提交消息
git fetch origin
git rebase origin/master
git reset --soft origin/master
git commit
git push -f origin myBranch
或者如果你想在所有行上保存节的更改并希望重用所有压缩提交中的提交消息
git fetch origin
git rebase origin/master
git reset --soft origin/master
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"
git push -f origin myBranch