我是新来的Git
,我的经验来自Clearcase
。
当Clearcase
我想修改文件时,我checked-out
将文件使其可写,修改它,如果我对更改不满意,我只是undo checkout
返回到文件的原始版本。
有了git
它就像黑匣子。
我可以开始写入我的文件(它不是只读的,对吗?)然后我应该add
在commit
.
但是,如果我对自己的改变不满意并决定不改变add
怎么办?
我如何回到原始文件,从根本上删除我的修改?
问问题
272 次
2 回答
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>
取消暂存。
于 2013-05-12T19:17:52.290 回答
2
可能是我在脑海中的 Clearcase 模型中思考这个,我不应该
是的:在此处查看 ClearCase 和 Git 之间的主要区别。
检查“ Git Status Takes a Long Time to Complete ”以了解为什么 git status 需要很长时间:它最多不应该超过几秒钟(除非存在寻呼机问题)。
请记住,您的 git 存储库比 ClearCase Vob 小得多。我有很大的 Vobs(几 TB)。一个 git repo 不应超过几兆字节,以便有效地克隆。
确保您当前的 repo 不代表一个巨大的 ClearCase Vob,其中可能包含多个项目。
关于您最初的问题,我喜欢“ Undo ' ' before commitunadd/unstage
”中定义的别名。git add
git config --global alias.unadd 'reset HEAD --'
git config --global alias.unstage 'reset HEAD --'
于 2013-05-12T21:06:41.200 回答