2017-01-01 44 views
3

我需要一個非常惱人的問題的幫助。我是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會認爲我在沒有時做過改變?」和「我該如何解決這個問題?」

回答

3

嘗試改爲git checkout -B this_fork/this_branch remotes/this_fork/this_branch
作爲中提到的git checkout man page

如果-B給出,如果不存在則創建;否則,它被重置。這是事務相當於

$ git branch -f <branch> [<start point>] 
$ git checkout <branch> 

這樣的話,你肯定你的本地分支this_fork/this_branch總是復位到分叉處remotes/this_fork/this_branch你有牽強。
在這種情況下,應該沒有提交或後面的提交。

+0

'$混帳取Caritor_Amit howej @里約71 MINGW64〜/ KTAB(Caritor_Arun/XMLParser的) $ git的結帳-B Caritor_Amit /測試 轉到並重置分支 'Caritor_Amit /測試' 你的分支和「遙控器/ Caritor_Amit/testing'已經分開, 並且分別有36和42個不同的提交。 (使用「git pull」將遠程分支合併到你的程序中)' –

+0

@ Dr.Drew what'git checkout -B Caritor_Amit/testing remotes/Caritor_Amit/testing' will return? – VonC

+0

似乎已經做到了。但是有一個分支,語法'git checkout -B this_fork/this_branch'確實有效,而另一個則需要第二個分支。爲什麼會這樣? –

相關問題