我已经弄乱了树枝。
我一直在摔键,已经合并/拉扯/挤压,我不知道还有什么。
我的功能分支上的所有工作都应在1次提交中
我想保留我的工作位置,但是我不希望有10个提交历史记录。
由于冲突,我再也无法压扁提交了,只是一团糟。
压扁不再是一种选择,因为git rebase-i HEAD〜2我在某个时候已经完成了合并,但是不能这样做-因为在重新设置中间,由于某些原因我的更改无法应用如何通过挤压落后于遥控器-我一定做错了。
所以我想做的是签出一个新分支,并删除上一个分支之前的所有提交历史记录。
做到这一点的最佳方法是什么? 还可以请您像我五岁那样解释解决方案吗?
答案 0 :(得分:1)
如果提交的文件内容正确,则可以从中创建一个新分支。假设提交哈希为abc123
,新分支为foo
git checkout --orphan foo abc123
git commit
现在您拥有foo
,并且只有一次提交,该提交与abc123
具有相同的文件。然后您可以删除旧分支。
git branch -D <old_branch>
但是如果您可能后悔,只需保留旧分支,直到确定您不再想要它为止。
答案 1 :(得分:1)
如果您在工作目录中拥有所需的所有文件,则只需删除当前的git存储库并创建一个新的存储库即可:
rm -rf .git
git init
git add .
git commit -m "initial commit"
如果您想保持reflog完整,您还可以做的是将reset用作便宜的重新定基方法。找出您最初提交的哈希,重置-与它混合,将所有更改保存在您的工作目录中,然后提交--amend将这些更改添加到初始提交:
# find out the id of your first commit
git rev-list --max-parents=0 --abbrev-commit HEAD
# reset to it
git reset --mixed <first commit id>
# add files to index and amend
git add .
git commit --amend -m "initial commit"