在我的情況下,我正在跟蹤其他人合併並刪除的遠程修補程序分支。是否有一個可以解決錯誤的git命令:找不到遠程分支'refs/heads/foo/bar'?
我已經刪除了我的本地分支,但是當我拉我仍然得到上面的錯誤,因爲我有我的混帳配置文件中的以下行:
錯誤可以通過刪除這些行來解決文件,但有沒有辦法從命令行執行它?
在我的情況下,我正在跟蹤其他人合併並刪除的遠程修補程序分支。是否有一個可以解決錯誤的git命令:找不到遠程分支'refs/heads/foo/bar'?
我已經刪除了我的本地分支,但是當我拉我仍然得到上面的錯誤,因爲我有我的混帳配置文件中的以下行:
錯誤可以通過刪除這些行來解決文件,但有沒有辦法從命令行執行它?
還有,但如果你想擺脫一條匹配線,它通常比手動編輯困難得多。
修改git配置文件的命令是git config
。它有--unset
,--unset-all
和--remove-section
選項用於刪除某個特定部分或關鍵字中的一個,全部匹配或所有條目。
在這種情況下,該部分是remote.origin
(因爲它位於該文件中的[remote "origin"]
),關鍵是remote.origin.fetch
。在這種情況下,您不希望刪除整個部分,以便將--unset
和--unset-all
作爲可能性。
可以有多個fetch
一行,以及多個push
一行。換句話說,可以有一個鍵的多個副本,具有不同的值。
如果只有一個remote.origin.fetch
行,你想刪除它,你可以簡單地說:
git config --unset remote.origin.fetch
如果你試試這一個存儲庫多取線,您可以:
warning: remote.origin.fetch has multiple values
你會發現沒有東西被刪除(至少這是我用git 2.1.0得到的)。在這種情況下,你需要更復雜的變體,無論是--unset-all
(刪除所有的remote.origin.fetch
鍵)或--unset keyvalue_regex
(刪除其值匹配value_regex
這些密鑰)。
由於您大概只希望取消設置一個匹配行,您必須拿出一個正則表達式來匹配那一行,並且只有那一行。通讀the git config
documentation以提供一個合適的正則表達式;請注意,由於這些是POSIX「擴展」RE,因此+
字符表示「前一個字符」中的一個或多個字符,因此+refs/...
不會像「前一個字符」部分丟失一樣工作。 (根據文檔,這些也顯然是未固定的。)在這種情況下,:refs/remotes/origin/foo/bar
可能就足夠了,但您可能會更加喜歡。
要刪除push
條目,請重複上述步驟,但使用remote.origin.push
作爲鍵。
(或者只是使用你喜歡的編輯器和交互式刪除的行權,這是一個容易得多,儘管不是很適合腳本...)
謝謝你,答案是全面和準確的。如果我有聲望,我會投票。 – Naylor 2014-09-03 21:53:27
遠程Git修剪起點沒有解決這個問題。 – Naylor 2014-09-03 15:20:15