2012-09-13 49 views
1

這可能是一個很簡單的問題,但我完全新的Git這樣......Git的 - 新的Checkout

  1. 我做我的主分支上拉。
  2. 另一個人對master分支做了很多修改。
  3. 我想放棄所有的更改,所以我刪除了本地項目(剛從Windows資源管理器中刪除),然後運行一個git pull myremote master。

我現在明白爲什麼這是行不通的。它結束了,只有從主分支更改的文件被拉。如果我現在運行git status,我會將所有其他文件視爲已刪除的文件。不好!!

所以,我想要做的是獲得一個乾淨的副本或簽出(或它被稱爲)的主分支,就好像這是我第一次從主分支拉項目。重置本地Git存儲庫或其他東西?

我該如何繼續?

回答

0

我最終創建了一個新文件夾,瀏覽到這個文件夾並在這個文件夾中運行'git init'。然後我在這個文件夾中創建了一個新的遠程指向我的項目,然後我用'git pull myremote master'來拉動這個項目。然後我刪除了以前導致我的問題的文件夾。 這很簡單:-)。

1

嘗試這樣做是爲了disreguard更改:

git checkout . 

和/或:

git reset HEAD --hard 

然後從主拉

編輯:

此外,如果你做一個git status並看到文件被刪除,你可以做一個git add -u來演示那些del並提交他們確認。

+0

謝謝你,完美的工作。我只是做了git結賬。然後從主人拉。現在我已檢出所有文件,並且git狀態不報告任何已刪除的文件。它確實說我雖然在原產地/主人之前提交了181次提交。不明白這意味着什麼,但希望沒有什麼不好。 – user1140596

+0

你有額外的文件沒有與主還未推送 –

+0

好吧,我該如何擺脫這些額外的文件?這是否意味着如果我現在推動,主分支會做很多更改?我不希望我以前的任何更改被提交。 – user1140596

1

要重置本地樹(文件實際上你可以編輯)到主服務器(遠程),你可以做確切的狀態(假設遠程名稱到您的服務器是原點):

git reset origin/master --hard 
git clean -fd 

第一個命令會將當前簽出的本地分支的頭部(第一行git status爲:On branch $current_branch)重置爲服務器主服務器的狀態(意味着$ current_branch的git日誌和原始/主服務器的完全相同)。第二個命令將刪除可能遺留的無關文件。

我會推薦使用

git checkout -b wip 

前的情況下,創建一個分支WIP命名要保留一些地方unpushed直接在本地主的提交完成。您可以根據需要合併wip或櫻桃選擇一些提交。

建議的命令

git reset HEAD --hard 

將當地的樹重置爲頭記錄的狀態提交您當地的分行,但當地分支機構的歷史仍將可能是從遠程的歷史不同科。它將清除你在本地完成的任何修改,並且不會丟失任何尚未推送的提交。

+0

感謝讓爲你的好解釋。不幸的是我沒有看到你的評論,然後我完全刪除了我的git checkout的全部本地目錄,然後創建了一個全新的目錄,請參閱下面的答案。因此我無法驗證您的答案是否適合我。至少它讓我更加明亮:-),一票贊成。 – user1140596

+0

您可以通過重新創建您所處的狀態輕鬆實驗:在master上創建一個本地虛擬提交,然後使用一些文件並嘗試各種命令:) – Jean

相關問題