创建没有commit提交历史的新分支
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建没有commit提交历史的新分支相关的知识,希望对你有一定的参考价值。
参考技术A 项目提交历史记录那么长,通常git branch name创建新分支的时候会带着密密麻麻的历史提交记录,看的头皮发麻。整理了如何创建没有历史commit的新分支。完活...
如何使用git移动历史commit(当你提交到错误的 Git 分支时该怎么办)
翻译自: 当你提交到错误的 Git 分支时该怎么办(What to do when you commit to the wrong Git branch.)
1. 故事背景
某日你正在享受编码的美好时光,并且作为一个优秀程序员,你总会定期commit
然后你突然发现最近的几次提交,都到了错误的分支。现在怎么办?
这就是我们正在将要谈的Git,好消息是处理起来并不很难
假设你提交到了 master
,但是其实你原本打算提交到名为myfeature
的新分支,那么有两件事需要修复。首先,你需要将 master
恢复到原来的位置。其次,你需要在新分支上进行更新commit
现在你有两个选择:
- 撤消
master
上的提交,checkout
到新分支myfeature
并将所有更改作为一个整体的commit
提交 - 手动修改
refs
以使master
指向你所在的位置,以及新分支ref
的位置。
第一个解决方案很好,简单且易于应用,有相对较小的犯错空军。然而缺点是不会在新分支上获得原始提交消息,并且所有更改都作为一条带有新提交消息的单个commit
提交
第二种解决方案更加合理。然而,这意味着你所有的提交都被传递到新的分支。当然,你应该在推送到中央仓库之前检查结果,因此会比较容易出错
2. 处理方法
2.1 撤消并提交到新分支
确保你在一直提交的分支上。使用 git log
检查您要回滚的提交次数。然后使用 git reset HEAD~N
撤消提交,其中“N”是您要撤消的提交数。
例如,要撤消一个提交:
git reset HEAD~1
然后创建一个新分支并checkout(签出),再次add(添加)并commit(提交)您的更改。
git checkout -b newbranch
git add -A
git commit -m "Committed on new branch"
请注意,使用git add -A
时,可能会添加不相关的未提交文件和目录。建议在提交检查之前使用git status
查看
2.2 将commits移至另一个分支
为了获得更大的错误余地。第一步是记下想要成为新分支头结点的commit的 commit id
git log
将commit id
复制到一个安全的地方
然后通过一次commit(或者无论多少次您需要退回的commit)重置您当前的分支:
git reset --hard HEAD~1
最后一步是将随后的提交移动到新分支:
git checkout -b newbranch
git reset --hard < commit_id >
已经完成了!现在是时候推送两个分支了(如果需要,使用 --force
,即如果您之前推送了更改). 但是,与往常一样,使用 --force
时请确保没有其他commit跟随您的commit,因为有的话它们将被覆盖掉
以上是关于创建没有commit提交历史的新分支的主要内容,如果未能解决你的问题,请参考以下文章
如何使用git移动历史commit(当你提交到错误的 Git 分支时该怎么办)
如何使用git移动历史commit(当你提交到错误的 Git 分支时该怎么办)
如何使用git移动历史commit(当你提交到错误的 Git 分支时该怎么办)