2013-03-22 41 views
7

夥計們,git的分支是提前起源/主,而回購是同步

這東西在git的,只是沒有道理給我,這裏是發生了什麼

  • 我做了git status ,我看到我在分支大師,沒有提交和工作目錄是乾淨的。
  • 我然後做git pull origin master我拉了一堆代碼,沒有問題。
  • 現在,當我做git status我看到一個新的行你的分支是領先對手1產地/主的承諾

我的本地回購和遠程回購是完全同步的,你的分支是超前什麼呢原產地/主人1承諾的意思是,這是非常非常混亂的。任何輸入/反饋都非常感謝。謝謝

+1

您爲什麼認爲您的存儲庫與遠程同步? – 2013-03-22 13:01:10

+0

你不是在默認情況下重新綁定你嗎?你可以嘗試提取和合並單獨而不是拉? – 2013-03-22 13:01:56

+0

你可以使用「gitk」。查看哪些提交具有附加的「主」和「源/主」標籤。 – 2013-03-22 13:30:40

回答

9

我所經歷的,正是你看到的。 我找不到git-scm.com適當的解釋,但我相信它是這樣的:

  1. 我從克隆原點的回購,可以說起源有主,我現在有我的師傅當地回購
  2. 現在的起源和你的回購有一個參考上次提交。此引用主分支和參考是在你的本地回購和起源相同
  3. 比方說,有人(其他然後你)推新提交原產地掌握
  4. git pull origin master
  5. 現在你做git status和你會看到你的分支在原產地/主人面前甚至很難在你的本地回購中沒有新的提交,也沒有推動! (在這個例子中,自從步驟1(克隆)以來本地沒有提交任何新東西)

==>我在做主設備時通過執行git pull origin來解決此問題。

A git pull origin master將從原始分支上的所有新提交拉到您的本地分支。

A git pull origin也將重新設置您對master的引用,等於master在引用時的引用! (當這種情況沒有發生的時候,git-bash會認爲你提前做了很多提交!因爲在commit-tree裏有很多提交之後你提交的主引用是提交的!)

這對你有任何意義嗎?它確實給我:)

也請隨時支持我toughts有點硬證據/文檔:)

+0

,請同時閱讀blunderboy下面的評論。有用戶1781472說,解決了他的問題+一些評論爲什麼它解決了他的問題。 – deblendewim 2013-03-22 15:37:11

4

您已在本地計算機上添加了一個提交,該提交尚未發送到遠程服務器。

如果您確信您的修改應與遠程存儲庫共享,發送提交到遠程與git push命令來完成:

git push orgin master:master 
+0

不,這就是整個問題,我沒有任何東西在我的本地機器上沒有提交。 – user1781472 2013-03-22 13:33:45

+0

** git push origin master **和** git push origin master的區別:origin/master ** – user1781472 2013-03-22 13:51:28

+0

First off:我的錯誤,命令應該讀爲'git push origin master:master' - 在帖子。 – LeGEC 2013-03-22 14:40:56

0

其實,這是你的假設,你的本地分支和遠程分支同步。如果它表示你的本地分支在1次提交之前就是源於/主人,那肯定是。我們都信任GIT。

用這個來測試。

git checkout master // You move to master branch 
cat .git/HEAD //shows the commit on which HEAD is pointing to 

git checkout origin/master //you switch to origin master branch 
cat .git/HEAD 

如果您發現本地主服務器和遠程主分支中的HEAD指向相同的提交,則兩者都同步。

如果您當地的分行是提前1承諾,只要它推(如果你想)到遠程分支作爲

git push origin master 
+1

感謝您的回答,所以我在閱讀本文之前只檢查了本地(git log)和遠程文件,它們都具有相同的近期提交。然後我做了一個** git fetch **,現在這個消息不見了,這說明我的分支在1提交之前。看起來像我得到的任何東西拉Git認爲這是我的提交不推動和Git獲取解決,不知道這裏發生了什麼 – user1781472 2013-03-22 14:24:53

+0

1.你是否推動你的承諾起源。如果你還沒有推它,那麼你的提交無法完成。 2。你是否用硬選項重置HEAD?因爲這也會從您的分支中刪除提交。 – sachinjain024 2013-03-22 14:42:43

+1

@ user1781472:在git-scm網站上,我發現了以下內容:更新遠程跟蹤分支: $ git fetch origin 上述命令從遠程refs/heads /命名空間複製所有分支,並將它們存儲到本地ref/remotes/origin /命名空間,除非分支。 .fetch選項用於指定非默認的refspec。 – deblendewim 2013-03-22 15:26:00

1

你是不是100%與遠程倉庫同步爲你想。你有來自遠程倉庫的一切,是的。但是您的本地主人通過一次提交就可以領先於原產地/主人。

運行它,並告訴我們結果:

git log --all --graph --pretty=format:'%h %d %s' 

我希望看到這樣的:

* (master) Commit D 
* (origin/master) Commit C 
* Commit B 
* Commit A 

如果我正確地讀你的文章,你是一個犯提前,因爲你有D,而遠程分支在C上。您必須git push將提交D推送到遠程存儲庫。那麼你將100%同步。

相關問題