我有一个简单的存储库,其中包含线性的提交历史记录,例如:
[A] -> [B] -> [C] -> [D] -> [E] ...
Run Code Online (Sandbox Code Playgroud)
我基本上需要删除提交A和B,所以我想我会创建一个新的存储库,并希望实现类似的东西:
[X] -> [C] -> [D] -> [E] ...
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个新的存储库,手动创建了提交X,它从A和B获取存储相关信息,现在需要一个命令,它将从原始存储库中提交C,D,E等提交,并将其放在我的新存储库之上提交X.
怎么做?
编辑:我建议的樱桃挑选方法有两个问题:
git branch -D myoriginalrepo/master,它表示没有这样的分支存在,而我可以在我的GUI工具中清楚地看到这些提交.ant*_*tak 16
不确定为什么你需要提交日期保持不变但是这里:
git rebase B E --onto X --committer-date-is-author-date
Run Code Online (Sandbox Code Playgroud)
如果B..E不在同一个存储库中X(如果你在就地创建新的启动它们就可以),你需要先获取它们:
git fetch <path_to_old_repos>
Run Code Online (Sandbox Code Playgroud)
当然,B,E和X这里的意思是他们犯下的IDS,如果你还没有真正标记/支它们.
您也可以通过A在原始存储库中重新定位并压缩B它来执行类似的操作(尽管不会保留提交日期):
git rebase -i `A`
# change "pick b" to "squash b"
Run Code Online (Sandbox Code Playgroud)
您将有机会更改提交消息,此时您可以使用它X.
| 归档时间: |
|
| 查看次数: |
3342 次 |
| 最近记录: |