在git中恢复到文件的原始版本(甚至在添加之前)

时间:2013-05-12 19:15:20

标签: git clearcase

我是Git的新用户,我的经历来自ClearcaseClearcase当我想要修改文件时,我checked-out该文件使其可写,修改它,如果我对更改不满意,我只需要undo checkout返回文件的原始版本 使用git就像黑盒子一样 我可以开始写我的文件了(它不是只读的,对吗?)然后我应该add后跟commit
但是,如果我对我的变化不满意并决定甚至不add,那该怎么办? 如何回到原始文件中删除我的修改?

2 个答案:

答案 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 --'