我在git存储库中有一个已更改文件的列表.目前有一个我不想提交的文件.我可不可以做:
git commit -a
Run Code Online (Sandbox Code Playgroud)
提交所有文件然后以某种方式从当前提交中删除该文件?删除后,它仍然应该在未提交的文件列表中.
Cas*_*bel 59
你想这样做:
git add -u
git reset HEAD path/to/file
git commit
Run Code Online (Sandbox Code Playgroud)
确保从回购的顶层做到这一点; add -u添加当前目录中的更改(递归).
关键行告诉git将索引中的给定路径的版本(提交的暂存区域)重置为HEAD(当前检出的提交)的版本.
并提前警告其他人阅读此内容:add -u分阶段进行所有修改,但不添加未跟踪的文件.这跟什么commit -a一样.如果您还想添加未跟踪的文件,请使用add .递归添加所有内容.
Ash*_*wan 13
如果你已经推送了你的提交.做
git checkout origin/<remote-branch> <filename>
git commit --amend
Run Code Online (Sandbox Code Playgroud)
如果您尚未在服务器上推送更改,则可以使用
git reset --soft HEAD~1
Run Code Online (Sandbox Code Playgroud)
使用藏匿处; 像这样:
git add .
git reset Files/I/Want/To/Keep
git stash --keep-index
git commit -a -m "Done!"
git stash pop
Run Code Online (Sandbox Code Playgroud)
如果您不小心提交了文件,并想要重写您的git历史记录,请使用:
git reset HEAD~1 path/to/file
git commit -a -m "rollback"
git rebase -i HEAD~2
Run Code Online (Sandbox Code Playgroud)
并压制到两个领先的提交.如果您有一组您不希望自动提交的已知文件,则可以编写一个帮助程序脚本来执行其中任何一个.