在Git中更改旧提交

时间:2018-07-23 12:54:52

标签: git unity3d

因此,我从master分支了我的项目,并对新分支进行了5次提交。现在,我发现我的第一个提交很有趣:我在一些我不应该拥有的文件中添加了一些更改。如何在不弄乱整个事情的情况下正确地犯这个错误?

更新:对不起,我说错了,因为英语不是我的母语。当您打开Unity编辑器时,某些文件会自动更改。我也意外地提交了这些文件。我不要我宁愿摆脱那些更改(使用 clean ?)并提交我实际进行的更改。

1 个答案:

答案 0 :(得分:-1)

简短答案:您不能!

详细答案:也许可以!

git中的每个提交都依赖于先前的提交,并且所有提交都在一个链条中..因此,您不能在不更改所有以后的提交的情况下更改提交。 (每个提交都有一个 哈希ID ,它依赖于先前的提交)

因此,唯一的方法是将所有提交从最后提交(HEAD)更改为该提交。假设我们有三个提交(commit1,commit2,commit3 == HEAD),而您想更改commit1。

您必须这样做:

git reset HEAD~1  // Going back one commit (now HEAD is commit2)
git stash // to keep this commit's changes in stash area
git reset HEAD~1 // Going back one commit (now HEAD is commit1)
(Now doing your changes in commit1)
git add [changed_files]
git commit --amend // Changing first commit
git stash pop // inserting back changes of commit2
git commit -am 'new commit message for commit2'
git stash pop // inserting back changes of commit3
git commit -am 'new commit message for commit3'