Git:撤消本地更改; git add。 + git rm?

时间:2011-10-14 16:03:02

标签: git git-reset git-add git-rm

需要帮助找出Github的几个常见工作流程。我来自VS TFS背景,请原谅我。

撤消待处理的更改

假设我已将git存储库克隆到我的本地文件系统。此时,项目的本地文件与远程repoistory中的文件完全匹配。

然后我决定对代码进行一些更改,并更改几个文件的本地版本。在做了一些测试之后,我发现我想丢弃我的本地更改并将本地文件还原回远程repoistory中的内容。

如何撤消这些本地更改,将它们还原到存储库中的当前版本?

提交所有更改

每当我修改我的存储库克隆中的本地文件的内容,或添加新文件,并想要推送更改时,我发出“git add。”,“git commit”和我的评论,然后“git push”到我的主人。

但是,当我删除存储库中跟踪的本地文件时,“git add”。不捕获rm的变化。相反,我必须在“git commit”之前“git rm [filename]”来更新存储库。我总是忘记这样做。

是否有一个git命令将“git add”。和“git rm”我在本地删除的所有文件,一步到位?在修改本地文件并删除一对之后,我想发出一个命令,在我“git commit”之前捕获我的所有更改。

2 个答案:

答案 0 :(得分:23)

  

如何撤消这些本地更改,将它们还原到存储库中的当前版本?“

git reset --hard

(这会将您的索引和工作目录重置为HEAD)

  

是否有一个git命令会git add .git rm我在本地删除的任何文件,只需一步?

git add -u

(它不会添加新文件)

如果您要添加新文件,请删除rm个文件,并对文件进行修改:

git add -A

答案 1 :(得分:3)

您可以通过发出以下命令恢复到上一次有效提交(即巡回示例中远程仓库的副本):

git reset --hard HEAD

此外,我建议阅读有用的http://progit.org/2011/07/11/reset.html页面,以便更好地了解重置工作和索引的内容,以及为什么git add和git rm是单独的命令。