如何返回到之前的提交并在之前的提交中进行更改?
How to go back to a previous commit and make change in this previous commit?
我正在与 git 合作。几天以来,我从一位大师那里得到了一个分支。
$ git log
commit 412455451515dd5d5dldldld454585fgdgjd // #7
Author: me
Date: Fri Mar 03 14:27:55 2015 +0100
feature7A
commit 95299628812ae425c06accc61a0ef4203cc // #6
Author: me
Date: Wed Mar 03 11:20:35 2015 +0100
feature6A
commit 82f1691fcfd6348ddf5462be42bf9983b2f // #5
Merge: 052c908 6c2c93d
Author: me
Date: Tue Mar 02 16:36:01 2015 +0100
feature5A
commit 6c2c93da125a66f7dbb5b14a96feed819f70671d // #4
Author: me
Date: Tue Mar 01 14:30:48 2015 +0100
feature4A
我回到提交 82f1691fcfd6348ddf5462be42bf9983b2f // #5
git checkout 82f1691fcfd6348ddf5462be42bf9983b2f
我更正了此提交中的错误。
我想在提交 412455451515dd5d5dldldld454585fgdgjd // #7 中恢复此更改。
想要的就是最好的做法:
保存零钱
切换到提交#7
使用 git stash pop
应用更改
合并提交 #5 和 #7。
谢谢
您将要更改历史记录。仅当您尚未共享您的修改时才执行此操作。
当心!
如果你已经分享了这个,那么不要惊慌,但也不要做下面的事情。请参考负责 repo 的人并获得适当的帮助,这与您项目中的工作流程一致。
// in the following i'm assuming that you were working on master.
git checkout 82f1691f -b recovery
// This checks out the commit you want to modify and creates a branch there that we will delete afterwards.
//Hack hack hack.
git add my_Modified_File.h //You can replace this 2 lines by using git gui
git commit --amend //and selecting the menu commit->fix the last commit
git checkout master
git rebase recovery
最干净、最好、最诚实,就是把变化应用在当下。提交 #5 有一个错误,就这样吧。每个开发者都会写出bug,让历史来证明它不是问题。重写历史来隐藏它是没有意义的。
最佳做法是:
$ git stash
$ git checkout #7
$ git stash apply
检查您的修复是否仍然有效
$ git commit -a
可能在您的提交消息中提及这修复了提交 #5 中引入的错误。
我正在与 git 合作。几天以来,我从一位大师那里得到了一个分支。
$ git log
commit 412455451515dd5d5dldldld454585fgdgjd // #7
Author: me
Date: Fri Mar 03 14:27:55 2015 +0100
feature7A
commit 95299628812ae425c06accc61a0ef4203cc // #6
Author: me
Date: Wed Mar 03 11:20:35 2015 +0100
feature6A
commit 82f1691fcfd6348ddf5462be42bf9983b2f // #5
Merge: 052c908 6c2c93d
Author: me
Date: Tue Mar 02 16:36:01 2015 +0100
feature5A
commit 6c2c93da125a66f7dbb5b14a96feed819f70671d // #4
Author: me
Date: Tue Mar 01 14:30:48 2015 +0100
feature4A
我回到提交 82f1691fcfd6348ddf5462be42bf9983b2f // #5
git checkout 82f1691fcfd6348ddf5462be42bf9983b2f
我更正了此提交中的错误。 我想在提交 412455451515dd5d5dldldld454585fgdgjd // #7 中恢复此更改。 想要的就是最好的做法:
保存零钱 切换到提交#7 使用 git stash pop
应用更改
合并提交 #5 和 #7。
谢谢
您将要更改历史记录。仅当您尚未共享您的修改时才执行此操作。 当心!
如果你已经分享了这个,那么不要惊慌,但也不要做下面的事情。请参考负责 repo 的人并获得适当的帮助,这与您项目中的工作流程一致。
// in the following i'm assuming that you were working on master.
git checkout 82f1691f -b recovery
// This checks out the commit you want to modify and creates a branch there that we will delete afterwards.
//Hack hack hack.
git add my_Modified_File.h //You can replace this 2 lines by using git gui
git commit --amend //and selecting the menu commit->fix the last commit
git checkout master
git rebase recovery
最干净、最好、最诚实,就是把变化应用在当下。提交 #5 有一个错误,就这样吧。每个开发者都会写出bug,让历史来证明它不是问题。重写历史来隐藏它是没有意义的。
最佳做法是:
$ git stash
$ git checkout #7
$ git stash apply
检查您的修复是否仍然有效
$ git commit -a
可能在您的提交消息中提及这修复了提交 #5 中引入的错误。