是否有一种轻触方式来改变意外提交的单个文件?

时间:2015-03-19 14:45:43

标签: git git-revert amend

我最近提交了一个包含十个文件的提交。其中一个文件不应该被提交:它有我的本地测试更改,不会为其他任何人工作。

我希望从之前的提交中检出该文件,然后将其重新提交为原始文件,然后在本地重新应用我的更改。

git revert听起来不错,但似乎是针对整个提交,而不是提交中的一个文件。是否有一个很好的方法来保持git chatter / logs最小化?或许修改前一次提交?

如果有帮助的话,这些都没有推过。

2 个答案:

答案 0 :(得分:4)

  

git revert听起来不错,但它似乎适用于整个提交,而不是提交中的一个文件。

没有轻触方式来改变提交。如果你想在现有的提交中改变一个小小的东西,你必须创建一个新的(只有一个新的SHA),它只是与原始的一样。

  

是否有一个很好的方法可以将git chatter / logs保持在最低限度? (或许修改先前的提交?)

如果有问题的提交不是分支机构中的最后一个,git commit --amend对您没有多大帮助;请参阅this获取解释。您可以使用git revert或...

  

如果这有帮助的话,这些都没有推过......

由于您尚未推送到远程(是的,它确实有帮助),您始终可以执行interactive rebase从首次引入违规文件的位置重写分支的历史记录

答案 1 :(得分:3)

如果没有被推 - 你是金色的,你可以随意改写历史。

修改提交是一个好主意,如果你的提交是分支上的最后一个(如果不是 - 不要担心,因为它没有被推送,你可以相当简单地重写历史记录)。要获取文件的“旧”版本,您只需使用命令git checkout COMMIT-HASH-ID path_to_file从上一次提交中检出它。

因此,如果您的git log --oneline看起来输出看起来像这样 -

 $ git log --oneline
9ab100f Your awesome 10-file commit message
e62c6d5 Merge pull request #607 from origin/someone-elses-feature
cfdf47a someone elses commit message

只做

git checkout e62c6d5 path/to/your_file_name.js

然后将其添加到舞台

git add .

然后修改

git commit --amend

看看历史,你应该都很好。