我最近提交了一个包含十个文件的提交。其中一个文件不应该被提交:它有我的本地测试更改,不会为其他任何人工作。
我希望从之前的提交中检出该文件,然后将其重新提交为原始文件,然后在本地重新应用我的更改。
git revert
听起来不错,但似乎是针对整个提交,而不是提交中的一个文件。是否有一个很好的方法来保持git chatter / logs最小化?或许修改前一次提交?
如果有帮助的话,这些都没有推过。
答案 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
看看历史,你应该都很好。