我需要一個非常惱人的問題的幫助。我是a github repo的開發團隊中的一員,其中一部分意味着我經常審閱來自其分支分支的貢獻者的功能更新。要做到這一點,我拉下使用此代碼的回購和結賬特定分支機構的本地副本:GIT認爲我已經做了更改,當我沒有
git remote add this_fork this_fork_url
git checkout -b this_fork/this_branch
git branch --set-upstream-to=remotes/this_fork/this_branch this_fork/this_branch
git pull
我有幾個貢獻者回購的本地副本,以及爲原點,其中我頻繁地切換。使用貢獻者回購,我永遠不會更改代碼,我只是檢查代碼並編譯&測試應用程序。
但是,我注意到有時候,當我檢出其中一個貢獻者分支時,git會告訴我Your branch is a head of remotes/this_fork/this_branch by ## commits. (use "git push" to publish your local commits)
或Your branch and 'remotes/this_fork/this_branch' have diverged, and have ## and ## different commits each, respectively. (use "git pull" to merge the remote branch into yours)
。因爲我知道我沒有做出任何改變,所以我試圖通過運行一個git pull
來攻擊士兵,但這會導致git在前一種情況下迫使我變成git commit
,並導致git在後者中執行合併。正在運行git status
顯示相同類型的消息,但有未顯示修改的文件。
一旦我的本地副本分叉回購得到了這種情況下,我發現解決它的唯一方法是完全刪除本地副本回購 - 但這並不總是幫助。我在一個分支上觀察到,在我完全刪除它之後,它仍然處於相同的狀態,然後重新添加遠程(實際上,我刪除了整個導演& .git目錄與所有本地回購副本)。運行git reset --hard
沒有幫助。
這是在Ubuntu和Windows上發生的(應用程序是跨平臺的)。請注意,這不會發生在每個遠程,每個分支或每次檢出分支時。我會在幾個星期內與分支機構沒有任何問題,然後有一天當我檢查出來時,會發生這種情況。
請注意,這與this不一樣,其中作者實際上已經對&進行了推送更改。在我的情況下,我沒有改變。
所以我想我的問題是雙重的:「爲什麼git會認爲我在沒有時做過改變?」和「我該如何解決這個問題?」
'$混帳取Caritor_Amit howej @里約71 MINGW64〜/ KTAB(Caritor_Arun/XMLParser的) $ git的結帳-B Caritor_Amit /測試 轉到並重置分支 'Caritor_Amit /測試' 你的分支和「遙控器/ Caritor_Amit/testing'已經分開, 並且分別有36和42個不同的提交。 (使用「git pull」將遠程分支合併到你的程序中)' –
@ Dr.Drew what'git checkout -B Caritor_Amit/testing remotes/Caritor_Amit/testing' will return? – VonC
似乎已經做到了。但是有一個分支,語法'git checkout -B this_fork/this_branch'確實有效,而另一個則需要第二個分支。爲什麼會這樣? –