2017-02-23 45 views
1

我有一個應該與主無法從混帳拉自動

git pull -r origin master 

獲取

error: The following untracked working tree files would be overwritten by merge: 
    file1.py 
    Folder2/file3.rb 
    Please move or remove them before you can merge. 
    Aborting. 

試圖解決這個使用

git clean -df 
git clean -dn 

git stash 
git checkout master 
git pull -r origin master 
# to pull new branches 
git fetch 
同步機器上的git倉庫啓動腳本

仍然出現錯誤。 我如何確保成功從主人拉?

[這是自動完成的。]

感謝

+1

我想你想合併'master'在你當前的分支。因爲如果你只是想擁有主人的內容,你可以刪除回購,並再次克隆(昂貴),或者只是'git fetch origin && git reset --hard origin/master'(便宜) –

+0

謝謝@CarlosCampderrós。有效。寫它作爲答案,我會批准 – WebQube

+0

我已經用稍長的解釋創建了一個答案 –

回答

2

如果你只是想有從origin/master內容在您的本地副本丟棄任何局部的變化,你有兩個選擇:

  • 可以去除回購和再克隆。這是一個昂貴的操作(它取決於回購大小),但它可以保證您的本地副本中不存在除遠程回購庫以外的其他文件。
  • 或者您可以通過運行git fetch origin && git reset --hard origin/master來更新您的本地副本,從而丟棄對跟蹤文件的所有更改。這比完整的克隆選項要快,因爲它只需在遠程倉庫中獲取本地沒有的新提交。這有一個小問題,即您的工作副本可能會擁有遠程回購中擁有的更多文件。做git clean -dffx會刪除所有沒有被git跟蹤的東西,所以你最終會得到一個遠程repo的乾淨副本。
0

您已經將這兩個文件添加到資料庫,

file1.py 
Folder2/file3.rb 

,並沒有提交。所以,如果你不希望這些文件從你的資料庫&手動刪除這些文件,腳本將正常工作後

更新

如果你想有一個通用的方法,

  • 要刪除目錄,運行git clean -f -dgit clean -fd
  • 若要刪除被忽略的文件,請運行git clean -f -Xgit clean -fX
  • 要刪除忽略和不被忽略的文件,運行git clean -f -xgit clean -fx
+0

感謝DilumN,我正在尋找更通用的解決方案。一種會強制git軟件無論如何都是從主控制器拉出來的。我知道手動解決方案。 – WebQube

+0

更新了答案 – DilumN

1

error: The following untracked working tree files would be overwritten by merge:

如果沒有當地重要的變化再做hard resetlocal/masterremote/master

$ git fetch 
$ git reset --hard origin/master 

N.B:潛在危險hard reset命令,因爲它扔掉,在remote/master沒有您所有的未提交的更改和本地提交。


備選:

添加未跟蹤文件。

$ git add . 

回到乾淨的工作目錄stashing。保留您的本地修改,並將reverts的工作目錄與HEAD commit相匹配。

$ git stash 

現在拉起源主。

$ git pull origin master 
+0

嗨sajib,'git add .'沒有用。最終使用'git fetch origin && git reset --hard origin/master' – WebQube

+0

好的。 '硬重置'也是另一種解決方案(可能有點危險)。更新了我的答案。 –