如何缩短变基工作流程?

时间:2016-04-07 14:42:15

标签: git

假设我在myBranch上做了10次提交(myBranch已经签出)。 我想和主人一起改变并压制所有提交。

我们目前的工作流程是......

  1. git checkout master
  2. git fetch origin
  3. git pull -r origin master
  4. git checkout myBranch
  5. git rebase -i master
  6. git push -f origin myBranch
  7. 共有6个步骤和交互式rebase控制台来处理(更不用说推力的风险)。

    是否有更短的工作流程会产生相同的效果?

3 个答案:

答案 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