2011-04-24 29 views
5

我在過去幾天開始學習git,我有一個基本問題。從github提取新版本時,如何從Git存儲庫中刪除本地更改?

想象一下這樣的情況:

您創建一個空文件夾,並在那裏創建foo.txt的文件。

爲了將數據推入遠程存儲庫(例如github上),則進行以下命令:

  • git init - >以initalize資源庫中的文件夾中
  • git add . - >在爲了添加到索引中的所有文件夾中,在這種情況下foo.txt的
  • git commit -m "First commit" - >我們做的第一個承諾
  • git remote add origin [email protected]:username/gitrepository.git - >我們加入GitHub的倉庫
  • git push origin master - >我們將更改發送到遠程倉庫

    1. 現在你只有foo.txt的文件GitHub的倉庫。

    2. 所以,現在你是在另一臺機器,並希望使用存儲庫中,所以您創建一個空文件夾,並從遠程倉庫拉數據。
      然後創建一個名爲bar.txt的文件,刪除foo.txt,將文件(bar.txt)添加到索引,進行提交併將更改推送到遠程存儲庫。

    3. 現在在倉庫中我們只有跳回到bar.txt文件

    4. 但現在的第一臺機器,我們仍然有foo.txt的文件,如果我們做一個拉從遠程倉庫,我們有富.txt和bar.txt。

但是,這不是我想要做什麼,我想拉從庫中的所有文件,並只與那些文件。所以在這個例子中,如果我現在只在倉庫中有bar.txt,那麼當我做一個pull時,我不想在我的項目文件夾中有任何其他文件。

你是如何管理的?

回答

5

我想你錯過了2

一個步驟中,您必須從索引中刪除foo.txt的文件。它需要一個特定的命令(「git add。「只有把文件的索引,但不刪除文件):

  • 的git RM foo.txt的
  • git的增加-u(從索引中刪除了不再是不是在工作區中的所有文件)

然後提交。

在步驟3,第一臺計算機上拉後,foo的文件都應該消失。

+0

我想我解釋不清自己。試想一下,你在一個倉庫只有酒吧.tx t文件,並在家裏你有你的工作目錄與foo.txt。如果你從github進行pull操作,你的工作目錄中會同時包含bar.txt和foo.txt。但我不想這樣做,我希望每次進行pull操作時都要清理github存儲庫,這意味着如果我在github中只有bar.txt,當我進行pull操作時,我只想在我的bar.txt文件中工作文件夾和沒有更多的文件。 – rfc1484 2011-04-27 21:28:09

+1

拉是一個「獲取+合併」。如果我明白,您不希望與您的本地更改合併。 這是一種方法,但我必須警告您:您的本地更改甚至已提交,將會丟失。 FIRST:「git fetch origin」(而不是拉)。然後:「git reset --hard origin/master」。 – 2011-04-28 15:20:35

+0

這正是我需要的,謝謝! – rfc1484 2011-04-29 13:51:07

1

git的工作方式,你將總是有這些文件在您的存儲庫(即在您的存儲庫的.git文件夾中)。不同之處在於,在第4步中,一旦您完成更改,您仍然保留原始工作副本(如果您沒有更改,git將僅自動合併)。我猜你是一個合併離你想要的東西:)

我覺得這Git Cheat-sheet非常有幫助。

相關問題