我是Git
的新用户,我的经历来自Clearcase
在Clearcase
当我想要修改文件时,我checked-out
该文件使其可写,修改它,如果我对更改不满意,我只需要undo checkout
返回文件的原始版本
使用git
就像黑盒子一样
我可以开始写我的文件了(它不是只读的,对吗?)然后我应该add
后跟commit
。
但是,如果我对我的变化不满意并决定甚至不add
,那该怎么办?
如何回到原始文件中删除我的修改?
答案 0 :(得分:4)
git status
输出告诉您如何执行此操作:
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
使用git checkout -- <file>
甚至在add
之前就放弃更改。
如果您已经add
该文件,然后您发现它不满意,
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
使用git reset HEAD <file>
取消暂停。
答案 1 :(得分:2)
可能是我在脑海中的Clearcase模型中想到这一点,我不应该
是:请参阅main differences between ClearCase and Git here。
选中“Git Status Takes a Long Time to Complete”以查看为什么git状态需要很长时间:最多不应超过几秒钟(除非有pager issue)。
请记住,你的git repo比ClearCase Vob要小得多。我有很棒的Vobs(几TB)。 git repo不应超过几兆字节,以便有效克隆 确保您当前的仓库不代表什么是巨大的ClearCase Vob,其中可能包含多个项目。
关于您的初始问题,我喜欢“Undo 'git add
' before commit”中定义的unadd/unstage
别名。
git config --global alias.unadd 'reset HEAD --'
git config --global alias.unstage 'reset HEAD --'