2011-08-02 81 views
12

如果這不是很清楚,但在Git中,我發現有一種方法可以按名稱查看分支上所有已更改的文件。 據我所知,我可以使用git log來查看單個提交中已更改的文件,但我希望查看自創建分支以來發生更改的所有文件,這些文件都是多次提交。有沒有辦法在Git的分支上查看所有更改的文件?

有git diff,但這也列出了我不想看到的比較分支中的已更改文件。我有點想要一個命令說'給我顯示這個分支中所有已更改文件的文件名'。

非常感謝

回答

34

假如你在分支foo,和你感興趣的哪些文件已自點,當它從master分歧改變,你可以做:

git diff --name-only master... 

(注意三個點)如果你不foo,你可以使用完整形式:

git diff --name-only master...foo 

我做了一些圖形解釋了雙點和三倍點符號,以及它們在git rev-listgit log其含義之間的差異 - 你可以在this answer找到他們。

+0

非常感謝你。我會看看三點式符號,因爲它明顯起作用。剛剛嘗試過。血腥的偉大。再次感謝。 – screenm0nkey

+0

另外值得注意的是,如果您在後面的參數中顛倒了順序分支名稱,則可以檢查原始分支上的更改(很適合在合併之前指示更改) – stephenfin

1

不知道,有一些東西不正是隻根據你的當前分支你想要什麼,但如果你知道提交的ID是你分支的父母,你可以這樣做:

git diff --name-only <commit id of branch point>..HEAD 
+0

這是一個好主意,一個我想過,但我不知道該怎麼在我創建分支時確定要與哪個提交進行比較。這有道理嗎? – screenm0nkey

+0

您可以使用三點表示法(例如'git diff A ... B')來比較'A'和'B'的合併基數(在大多數情況下這將是您的分支點談論)和'B'。我在回答中增加了更多關於此的內容。 –

0

假設你已經簽出你正在工作的分支上,並希望把它比作主人:

git diff --name-only master 
+0

這會在主節點和HEAD之間做一個差異--OP詢問關於主題分支剛剛更改的文件。 –

+0

@Mark好點@Mark。我錯過了這個問題的細節。 – nocache

0

我使用這個命令來找出N個文件列表兩個版本之間變化,其中N是50

git log --pretty=format: --name-only <SourceBranch>...<TargetBranch> | sort | uniq -c | sort -rg | head -50 
相關問題