簡體   English   中英

git - 自創建以來對分支的更改?

[英]git - changes to branch since created?

我總是問自己一些關於我創建的分支的問題,我還沒有確定如何完成:

  1. 我在分支中更改了哪些文件?
  2. 我對分支的實際變化(差異)是什么?
  3. 我對分支機構提交的日志是什么?

現在我想如果弄清楚如何獲取所有提交給分支但未使用git cherry master <branchname>合並到master中的提交的哈希值。 有了這個我可以通過哈希哈希並弄清楚一切,但如果你有很多提交,這可能是耗時的。 請注意,我不想與當前的主人狀態進行比較。 我認為關鍵是要知道你創建分支的master的哈希值,但我不確定如何確定它。

要查找當前結帳與主分支的分歧,

base=`git merge-base master HEAD`
echo $base

找出自那時以來改變了哪些文件,

git diff --name-only $base HEAD

顯示累積的差異

git diff $base HEAD

當你想要描述一系列提交時,你可以使用上面鏈接的Gabriele Petronella的答案中的語法, master..HEADHEAD ^master簡寫,這意味着“所有提交都可以從HEAD訪問,但不包括從master可以訪問的提交” 。 缺少端點默認為HEAD,因此您可以說git log --oneline master..

假設你從master分支,

1.自分支以來哪些文件發生了變化?

git diff master...<branchname> --name-only

2.分支后的完整差異是什么?

git diff master...<branchname>

3.分支后的提交日志是什么?

git log master..<branchname>

如果你簽出了它,你不需要指定<branchname> (例如, git diff master... )。

注意: git diff需要三點...git log需要雙點..來獲取你要求的行為。


有關點語法的說明,請參閱:

對於更改的文件列表和實際差異,如果您知道要比較的2個提交,則更有意義。

如果你想看到START_SHA1END_SHA1之間的差異,你可以這樣做:

git diff START_SHA1 END_SHA1

如果您只想要文件列表,您可以:

git diff --name-only START_SHA1 END_SHA1

如果您還想知道文件中的更改類型(如AMDCRU ),您可以執行以下操作:

git diff --name-status START_SHA1 END_SHA1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM