簡體   English   中英

無法自動從git中提取

[英]Failed to pull from git automatically

我有一個啟動腳本,應該將機器上的git repo與master同步

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

仍然得到錯誤。 我怎樣才能確保從主人那里獲得成功?

[這是自動完成的。]

謝謝

如果您只想讓本地副本中的origin/master內容丟棄任何本地更改,您有兩個選擇:

  • 你可以刪除repo並再次克隆它。 這是一項昂貴的操作(取決於倉庫大小),但它保證您本地副本中不存在遠程倉庫中的其他文件。
  • 或者您可以通過運行git fetch origin && git reset --hard origin/master來更新本地副本,從而放棄對跟蹤文件的所有更改。 這比完整克隆選項更快,因為它只需要獲取本地沒有的遠程倉庫中的新提交。 這有一個小問題,即您的工作副本可能包含遠程倉庫中的更多文件。 執行git clean -dffx將刪除git未跟蹤的所有內容,因此您最終會獲得遠程git clean -dffx的干凈副本。

錯誤:合並將覆蓋以下未跟蹤的工作樹文件:

如果您沒有重要的本地更改,請使用remote/master hard reset local/master remote/master

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

注意:潛在的hard reset危險命令,因為它會丟棄所有未提交的更改和本地提交,而不是remote/master


替代方案:

添加未跟蹤的文件。

$ git add .

回到干凈的工作目錄中stashing 保持本地修改並reverts工作目錄以匹配HEAD commit

$ git stash

現在拉起源大師。

$ git pull origin master

您已將這兩個文件添加到存儲庫,

file1.py
Folder2/file3.rb

並沒有承諾。 因此,如果您不希望這些文件從您的存儲庫手動刪除這些文件,那么您的腳本將在此之后正常工作

更新

如果你想要一個通用的方式,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM