1

我是新来的Git,我的经验来自Clearcase
Clearcase我想修改文件时,我checked-out将文件使其可写,修改它,如果我对更改不满意,我只是undo checkout返回到文件的原始版本。
有了git它就像黑匣子。
我可以开始写入我的文件(它不是只读的,对吗?)然后我应该addcommit.
但是,如果我对自己的改变不满意并决定不改变add怎么办?
我如何回到原始文件,从根本上删除我的修改?

4

2 回答 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 回答