2013-12-22 28 views
1

我有一個類似的問題,作爲一個在this question,但有根本區別:另一個「如何變基一個git倉庫到另一個」問題

我們得到了來自客戶端的代碼,用於評估和開始工作在簽署合同之前。他們給了我們純代碼,沒有git回購。我們從它創建了一個git repo並使用它一段時間。

隨着項目的推進,我們可以訪問其項目的git倉庫。該代碼也發展了。我應該在他們的回購中創建一個新的分支,並將我們的工作重新分配到新的分支中。

讀了前面提到的問題,我瞭解到graft,其中回購B可以有一個父回購A使用graft來告訴B的基礎是A的一些提交。但在我的情況下,我不知道A(他們的回購)的承諾是B(我的回購)的基礎。

這是一個非常奇怪的情況,其中兩個回購可以被認爲是不同的 - 因爲我不知道可能是第二個迴應的提交,但第二個更改應該重新分配到第一個文件。

+1

您如何向客戶詢問他們向您發送了哪些修訂? – Chronial

+0

我希望人生如此簡單:) – Roberto

回答

2

解釋你的問題是「發現在他們與樹爲他們送你的源代碼庫的修訂版本」,

ours=$(git rev-parse our_commit_of_their_source^{tree})
git rev-list --pretty=format:'%h %T %s' | grep $ours

如果沒有任何相同的樹,您至少可以有效地列出與git diff-tree --name-status $ours $theirs不同的文件,以查看提交中有多少文件與您的文件不同,這是執行Robin建議的一種方法。也許使用'-b'的diff-trees忽略只有空白的變化。

+0

如果我們在開始回購時有一個稍微不同的set o文件,該怎麼辦?有人可能會改變.gitignore或添加一些文件。不幸的是,當我運行第一個命令時,我正在使用Windows和MINGW32崩潰,我認爲輸出太大而設置爲「我們」。 – Roberto

+0

我的歉意,'show'應該是一個簡單的'rev-parse'。修正了。 – jthill

+0

@Roberto對於我們改變的東西的第一種情況,我能做的最好的是如何幫助明智地選擇在羅賓的答案中手動對比的一些想法 – jthill

1

您也許可以在某個合理的日期範圍內搜索所有修訂版,以在其回購庫中找到匹配的修訂版。當然,你將不得不忽略.gitignore中的文件。

但合理的第一個猜測是,修訂將在他們向您發送代碼的那一天發出,因此您只需檢查一些修訂。

您可以使用git diff HEAD來檢查差異。

相關問題