假设我已经在myBranch上提交了10次提交(并且myBranch是签出的)。我想重新基地与大师和壁球所有提交。
我们目前的工作流程是..。
总共有6个步骤和交互式重基控制台来处理(更别提武力推进的风险了)。
是否有一个更短的工作流程,会有同样的效果?
发布于 2016-04-07 14:47:20
如果您的目标只是针对上游的master分支进行重新基地,那么没有理由更新您的本地master分支。您可以替换以下步骤:
git checkout master
git fetch origin
git pull -r origin master
git checkout myBranch
git rebase -i master通过以下方式:
git fetch origin
git rebase -i origin/master如果要避免交互式重基,可以执行this answer中描述的操作。
git fetch origin
git reset --soft origin/master
git commit -m 'message for merged commit'这在不影响工作目录的情况下将当前分支重置为origin/master,并在索引中保留所有更改。这意味着git commit将在一个步骤中提交您的所有更改。
发布于 2016-04-07 14:53:20
如果您只想使用本地提交来压缩它们,那么您甚至不需要进行交互式重基。您可以使用git reset --soft来完成它,这要方便得多:
git reset --soft HEAD~10 #软重置为10提交
git commit -m "Message for the squashed commits" #此时您的所有更改都将添加到索引中
然后,您可以根据远程的master分支进行重基:
git fetch origin git rebase origin/master
请注意,只有当没有人(除了您)已经从myBranch中提取这10次提交时,压缩提交才是安全的,否则您将重写历史,您将有一个糟糕的时间。
发布于 2016-04-07 14:47:52
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 myBranchhttps://stackoverflow.com/questions/36479576
复制相似问题