2011-10-14 81 views
11

需要幫助解決一些常見的Github工作流程。我來自VS TFS背景,所以請原諒我。Git:撤消本地更改; git add。 + git rm?

撤消掛起的更改

比方說,我已經克隆一個Git倉庫的到我的本地文件系統。此時,項目的本地文件完全匹配遠程repoistory中的內容。

然後我決定對代碼進行一些更改,並更改幾個文件的本地版本。在做了一些測試之後,我發現我想放棄我的本地更改並將本地文件恢復到遠程repoistory中的內容。

如何撤銷這些本地更改,將它們還原到存儲庫中的當前版本?

提交所有更改

每當我修改的本地文件的內容在我的倉庫克隆或添加新文件,並要推的變化,我發出「git的補充。」,「git的承諾」與我的意見,然後「git推」給我的主人。

但是,當我在本地刪除在存儲庫中跟蹤的文件時,「git add」。不會捕獲rm更改。相反,我必須在「git commit」更新存儲庫之前「git rm [filename]」。我總是忘記這樣做。

是否有git命令將「git添加」。和「git rm」我在本地刪除的任何文件,只需一步?在修改本地文件並刪除一對之後,我想在「git commit」之前發出一條捕獲所有更改的命令。

回答

22

如何撤消這些局部變化,它們恢復到當前版本的資料庫?`

git reset --hard 

(這將重置您的索引和工作目錄HEAD)

是否有一個git命令會「git add」。和「混帳RM」我本地刪除任何文件,一步到位?`

git add -u 

(它不會添加新文件)

如果你也想添加新文件,刪除RM」 ed文件和舞臺修改文件:

git add -A 
+0

我認爲這是正確的答案。查看此鏈接瞭解更多信息:http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html – dresende

3

可以恢復到您的最後一個有效的提交(即遠程回購,在旅遊例如副本)發出:

git reset --hard HEAD 

另外,我建議您閱讀有用http://progit.org/2011/07/11/reset.html頁面,以便更好地理解如何復位工作,索引是什麼,以及爲什麼git add和git rm是單獨的命令。