2014-11-08 104 views
0

我現在使用git一段時間,製造混亂和奇怪的東西,但現在想實現一個良好的工作流程。Git克隆鏡像存儲庫上提交

這是場景,我在github上得到了一些回扣,我想只有當我得到一個體面的承諾時纔會進入回扣。所以我克隆了(--mirror)我的工作站上的github倉庫,所以我可以從我的筆記本電腦和本地工作站上的鏡像上工作,而不會搞亂github(「經常提交,推一次」他們說)。

一切都很好,但是我需要知道在執行從鏡像到github之前需要知道的基本知識,即知道在鏡像中有多少提交(我知道,git狀態不起作用因爲鏡子也是裸露的類型回購)。

我的工作流的簡單模式:

(GIT克隆) - >(工作站上的git鏡像) - >(github上)

所以,我怎麼能知道有多少提交是領先於克隆鏡像回購?

+0

目前尚不清楚,你需要在所有 – 2014-11-08 17:55:46

+0

鏡子回購在什麼意義安德魯?我的想法是有一個本地共享存儲庫,可以推入github,所以我在想一個本地鏡像。你有什麼建議? – Marcs 2014-11-08 18:12:58

+0

在推動之前只需重新綁定?除非您正在積極使用github來備份正在進行的工作,否則不需要中間存儲庫。 – 2014-11-08 18:30:21

回答

1

無論您在哪裏結賬鏡像存儲庫(在工作中或在筆記本電腦上)。添加第二個遠程對github上

git remote add github [email protected]:username/repo.git 

當你完成你的提交,你可以直接推動他們的github沒有在所有的鏡子搞亂。

git push github master 

然後,當你想推WIP提交,只是用推,他們將如何你通常會和推送到你的鏡子代替。然後看你的主人是超前的GitHub的有多遠,你可以做

git log github/master..master 
+0

感謝您澄清Andrew C的建議。這是一個更清潔的解決方案。你是對的,「我做錯了」。 – Marcs 2014-11-09 10:43:50

+1

只是爲了閱讀您的答案的人,我嘗試了並且完美地運作。在做'git log github/master..master'之前的錯誤,我必須像這樣拉github:'git pull github'。 – Marcs 2014-11-09 11:52:28

1

在鏡像存儲庫中,運行git rev-list --count FETCH_HEAD..HEAD將顯示鏡像超出其原點的提交數。這是基於您在鏡像中執行的最後一次提取,但請注意,鏡像中的git fetch將消除提交給鏡像但未推送到鏡像原點的任何更改。

你可以看到

git rev-list --count --left-right HEAD...FETCH_HEAD 

這給兩個數字更詳細的圖片;第一個是當前分支上存在於鏡像中但不在原點中的提交數量,第二個是當前分支上存在於原點但不在鏡像中的提交數量(這將是如果將分支重置爲先前的提交,或者重新綁定已經推送的某些提交,則爲正值)。

0

比我其他的答案簡單的解決辦法:如果你git fetch鏡子,那麼所有的裁判也有相同的原點,在鏡子的克隆,以便git fetch && git status您正在使用中會告訴你,你需要知道什麼(因爲最近更新的鏡像是其原點的精確副本)。

這也有其優勢,它適用於任何分支,而不僅僅是master

+0

好點,但'git fetch'消除鏡像上的每一次提交都是一個問題。我可能會將來自各種機器的更改提交到主工作站上的鏡像中。 – Marcs 2014-11-08 18:08:11

+0

你想用鏡像存儲庫實現什麼? – 2014-11-08 19:19:22

+0

我想使用鏡像作爲我局域網中的機器之間的共享存儲庫。然後將它用作單個節點,最終推送到github,當我對我的提交感到滿意時。 – Marcs 2014-11-08 19:39:32