2017-08-29 118 views
0

我想比較我的本地回購(後git克隆)之間的遠程回購。 我使用命令:如何比較遠程回購之間的本地回購?

git add newfile 
git commit -m "my change" 
git diff HEAD origin --name-only 

我想僅比較更改文件的上下文。 不重命名。

我有兩個問題: 1.如果我更改文件的名稱,它會顯示我。 2.如果我添加/更改遠程回購文件,它會顯示我。我想看到相對於我本地回購的變化。

我該如何解決?

回答

0

如果您克隆了一個分支(例如將其稱爲「mybranch」),那麼當您克隆回購時,您將有一個名爲「origin/mybranch」的分支。這實際上是遠程分支的狀態。

然後你在本地檢出的分支,你會叫一個分支「mybranch」 - 你做你的修改,然後你可以做的兩個分支之間的差異:

git diff origin/mybranch mybranch

或者你可以簡單看你的例子中的HEAD。當你克隆回購時,你將在頭上。當你提交一些東西時你仍然會在HEAD上,但是前面的提交可以作爲HEAD〜1來訪問。所以,你的git diff命令即可:

git diff HEAD~1 HEAD

或者只是看看日誌git log或圖形視圖git log --oneline --graph --all --decorate,並挑選任何兩個提交哈希的/標籤/分支比較。

更新

我可能誤解了這個問題。從您的意見,我認爲你只是試圖爲內容已經改變的文件做差異。你可以使用--diff-filter選項:

git diff --diff-filter=M HEAD~1 HEAD

其中 「M」 是修飾。如果需要,也可以使用「R」進行重命名(並且可以組合多個選項,例如用於修改和重命名文件的git diff --diff-filter=MR HEAD~1 HEAD)。

+0

如果我從另一個目錄(其中沒有.git)執行git diff。我需要添加哪個標記? @code_fodder – Alex

+0

如果你不想只把CD放到你的git目錄中,你可以使用「-C-選項:'git -C/your/git/dir diff HEAD〜1 HEAD' ' –

+0

我的建議和你的? – Alex