2011-09-15 40 views
7

我創建了一個本地的Git倉庫,和我將更改從中我與如何在eclipse中使用egit同步master和origin/master?

git init my_git 
git remote add origin [email protected]:my_git 
... various adds and commits 
git push origin master:refs/heads/master 

現在創造了Gitosis的遠程,我編輯並在eclipse本地提交的變化,當我承諾,我看到(使用qgit)它將我的master分支移動到該版本。

但是,它也顯示我origin/master是在以前的版本。

git status命令行上顯示我的一切是最新的:

$ git status 
# On branch master 
nothing to commit (working directory clean) 

我可以看到版本的差異與

git diff origin/master 

如果我在我的命令行做git push,然後qgit節目我origin/master分支現在和我的master在同一個地方。

我不知道如何在eclipse中配置「remote/push」或「remote/configure push to upstream」對話框來執行與命令行git push相同的操作,以將origin/master移動到與master

我總是不得不通過命令行來使origin/mastermaster位於同一個地方。

Q1。任何人都可以告訴我如何在eclipse中做到這一點? Q2302。什麼是命令行版本git push這樣做的Eclipse版本不做?

Q3。我的假設是master是我的本地HEAD指針,origin/master是遠程服務器對當前HEAD的看法是否正確?

+0

雖然在Eclipse中推送時,gitolite存儲庫中的'master'分支是否已更新? –

+0

是的,它似乎已更新。我做了一次eclipse推送,然後在其他地方克隆了gitolite庫,並且我所做的更改都放在了我的新克隆中。 'origin/master'仍然被設置爲前一個版本,所以這告訴我推動正在工作,'origin/master'不是遠程服務器的HEAD。新克隆在最新的版本中具有「主」,「起源/主」,而且在先前版本中具有「起源/起源/主」 –

+1

您在新克隆中擁有「起源/起源/主」向我暗示,你不小心將'origin/master'(而不是'master')推送到gitolite存儲庫中的匹配名稱。 –

回答

2

egit's documentation您可以將相關部分去:

  • 點擊「添加所有分支規格」按鈕,您的所有地方分公司的名稱相同推到那些在遠程存儲庫,或
  • (相對來說更爲安全選項)只需選擇master兩個「源裁判」和「目的地REF」只下把你的master分支

遠程跟蹤分支origin/master通常是由更新git fetch(它是git pull的一部分),但是通過命令行git,遠程跟蹤分支也被成功推送到正在跟蹤的遠程存儲庫中的分支上。 Egit可能是基於git的純Java實現之一,而不是命令行工具,它不會以相同的方式成功推送origin/master。如果是這種情況,您可以只需do a fetch更新origin/master


更新:看來,這是在例如:It一個已知的bug(不是底層JGit) - 錯誤報告是在這裏:

+0

優秀,抓取做到了。我想我明白爲什麼現在我必須在本地移動'origin/master',這是一個功能還是一個錯誤?我希望本地知道遠程主服務器在哪裏,如果我是一個推動它的人,那麼我必須在第二步中詢問它,這似乎很奇怪,而命令行正在做我'更自然地期望發生。 –

+0

是的,我期望同樣的,我會把它稱爲一個錯誤。事實上,我剛剛發現了這個錯誤跟蹤:https://bugs.eclipse.org/bugs/show_bug.cgi?id=317411 –

1

的更新這個,我使用的是eclipse Helios,而且我已經升級到Indigo,並帶有最新版本的egit,修復程序看起來很活躍,因爲我不再需要在推送之後拉動。

+0

嗯,我使用開普勒和本地回購「L1」,也遠程裸在另一個磁盤分區上回購「R1」。除此之外,我還在一臺pendrive上製作了R的裸機克隆「P」。在另一臺計算機上,我製作了一個P的克隆「R2」,然後使用repo「L2」將項目表單R2簽出到Eclipse中。它基本上是通過pendrive在兩臺計算機之間交換更改並在兩臺計算機上進行裸機備份的服務器。它看起來像這樣: – Cromax

相關問題