我很好奇如何删除git中的第一次提交。
做任何事情之前的修改是什么?这个修订版有名称或标签吗?
我很好奇如何删除git中的第一次提交。
做任何事情之前的修改是什么?这个修订版有名称或标签吗?
当前回答
# Check out to a temporary branch:
git checkout --orphan TEMP_BRANCH
# Add all the files:
git add -A
# Commit the changes:
git commit -am "Initial commit"
# Delete the old branch:
git branch -D master
# Rename the temporary branch to master:
git branch -m master
# Finally, force update to our repository:
git push -f origin master
其他回答
我正在寻找一种方法来撤销所有的git提交从一个回购,就像他们从来没有发生过。
调整基准在一定程度上会起作用。但是,第一次(按时间顺序来看,最早的git提交)总是会有问题,因为它没有父节点,所以会出错。
这些答案都不能完全解决我的问题。但经过大量的搜索和试错,我发现这个工作!
git update-ref -d HEAD
git push origin master -f
希望这对你有所帮助。祝你有愉快的一天。
这个问题的答案取决于:
你想要删除一个分支上的第一个AND ONLY提交(同时保留其他分支),或者是否 你想要删除某个分支上的第一次提交,同时“保留”后续的提交(以及其他分支)。
第二种方法相对简单。本质上,你必须重新基于根-这里的大多数答案都是关于如何做到这一点。
To do the second (removing the first and only commit from a branch whilst leaving other branches alone) is harder. Or, at least, especially harder if you want it to happen and for the change to be reflected back in GitHub or Bitbucket. There is (as far as I can tell) no way at all in Git to push or force push a branch with no commits. And there is also (again, as far as I can see) no way at all to create a new, empty branch with no commits on it in either GitHub or Bitbucket. So you essentially have to create a new repository in order to create a completely empty branch, and then add back the branches which you want (including the commits which you want) - as per @user1338062's answer.
所以我希望这个答案能澄清一些可能不太明显的问题——有两种不同的方法需要采取,针对两种不同的(或多或少合理的)场景,这两种都是你可能想要能够做到的事情,以便完全掌握做OP要求的事情。
如果你只是提交了它,但没有推送它,那么只需删除。git目录并再次init git…
# Check out to a temporary branch:
git checkout --orphan TEMP_BRANCH
# Add all the files:
git add -A
# Commit the changes:
git commit -am "Initial commit"
# Delete the old branch:
git branch -D master
# Rename the temporary branch to master:
git branch -m master
# Finally, force update to our repository:
git push -f origin master
对我来说,最安全的方法是使用update-ref命令:
git update-ref -d HEAD
它将删除命名的引用HEAD,因此它将重置(轻轻地,你不会丢失你的工作)你当前分支的所有提交。
如果你想合并第一次提交和第二次提交,你可以使用rebase命令:
git rebase -i --root
最后一种方法是创建一个孤儿分支,一个具有相同内容但没有任何提交历史的分支,并在其上提交你的新内容:
git checkout --orphan <new-branch-name>