2010-01-21 125 views
220

git中有一種方法可以爲分支提供「描述」嗎?雖然我嘗試使用描述性名稱,但在單個分支上工作一段時間有時會減弱我爲什麼創建其他主題分支的記憶。我嘗試使用分支的描述性名稱,但我認爲'描述'(關於分支目的的簡短說明)會很好。git中的分支描述

+2

你爲什麼不按你的想法命名分支?林不知道,但一個功能應該描述在一個複合詞 – fyr 2011-07-20 12:16:22

+2

這將是一個非常有用的功能。 git分支-a可以顯示分支名稱旁邊的描述。也許git筆記將支持分支的註釋以及未來的提交? – jhabbott 2011-10-31 13:55:31

+1

我有一個[類似的問題](http://stackoverflow.com/questions/1876142/git-how-to-keep-a-file-common-across-all-branches)。我使用該文件來記錄分支,以及它們爲什麼存在(等等)。 – themis 2010-01-23 01:13:27

回答

155

Git 1.7.9支持這個。從1.7.9 release notes

 
* "git branch --edit-description" can be used to add descriptive text 
    to explain what a topic branch is about. 

你可以看到在2011年9月推出回到這個功能,以提交6f9a332739453a3b7200e8

struct branch_desc_cb { 
    const char *config_name; 
    const char *value; 
}; 

--edit-description:: 

打開一個編輯器,編輯文本,以說明什麼分支用於被其他各種命令使用(例如request-pull)。

請注意,它不適用於分離的HEAD分支。

該描述被腳本request-pull使用:請參閱commit c016814783,還可以使用git merge --log

request-pull是用來概括到標準輸出兩次提交之間的變化的腳本,並且包括在所生成的概要給定的URL。

+38

有沒有辦法顯示分店? – Owen 2012-04-03 18:38:22

+14

@Owen:我現在唯一知道的方法是使用'git config branch.topic.description'來顯示branch'topic'的描述。它存儲在'.git/config'文件中。 – 2012-04-03 19:23:01

+10

@GregHewgill謝謝。有幾個別名實際上並不是一個很好的查看方法。現在,如果只有'git branch'會顯示列表中的描述... – Owen 2012-04-04 20:10:30

0

我很確定該功能當前不受支持。我認爲你最好的選擇是在分支中創建一個描述文本文件,一個README文件,它有你想要的信息。

+4

我不得不擔心(不)在跨分支合併此文件。我不是嗎? – 2010-01-21 10:40:59

+1

@KaspervandenBerg:也許只是留下評論而不是拔出-1張牌,然後等待一段時間,如果提問者不願意改變帖子,但你看到他/她/它同時訪問了這個網站, 把它拼出來。或者_you_定期檢查你的答案,看看他們是否仍然正確? – 2012-08-15 08:12:02

+1

@phresnel:好點;我的意圖是幫助未來的這個問題的提問者,並且有良好的反應能力和不正確的反應能力,但並不是爲了「懲罰」克里斯J並導致他失去聲譽。不幸的是,該網站表示我的投票被鎖定:(。 – 2012-08-15 10:26:38

27

README通過Chris J建議可以工作,只要它是建立一個custom merge driver defined in a .gitattribute
這樣,本地版本的README始終保留在合併期間。

分支的「描述」也被稱爲與該元數據關聯的「註釋」,並且不被支持。

至少,有README文件,你可以爲任何一間分行,做:

$ git show myBranch:README 

如果你的自述是在你的REPO的根目錄下,它會從任何路徑工作,因爲由使用的路徑是來自所述回購的頂部目錄的絕對路徑。

+1

團隊中的每個人都必須意識到這一點,並將其設置在他們的.gitattribute中,如果他們想要它嗎?如果是這樣,在我看來,這將是難以管理的,並且實際上人們很可能會這樣做。 – 2015-07-15 22:26:15

0

選定的答案似乎對我來說過分殺傷。我傾向於維護每個分支描述文件,這是一個普通的源代碼控制文件,如master.txt,dev.txt等,如果有難以處理的數字或分支我會創建一個層次結構來更好地組織它。

+4

然後你不得不擔心將這些文件合併到其他分支,或者記得使用' git show master:dev.txt',它不比選擇的答案簡單。 – 2010-12-23 22:40:45

3

您可以將意見標籤:

git tag -m 'this was a very good commit' tag1 

按照慣例,你可以有與您的分支名稱標籤或者你可以使用標籤-f保持註釋標記在您的主題分支的頭。

+8

這是不理想的,因爲它不跟蹤分支的頭部 – AndyL 2011-05-27 19:42:01

36

如果使用README做末起來,創建一個git alias修改git checkout,使您的README顯示每次轉換分支的時間。

例如,在〜/的.gitconfig添加此,下[別名]

cor = !sh -c 'git checkout $1 && cat README' - 

在此之後,可以運行git cor <branch_name>切換分支顯示你是分支的自述切換到。

+1

+1。這是一個很好的提示,但你不是指'.gitconfig'而不是'.gitignore'? – 2010-11-03 10:39:33

+0

有趣的提示(不知道爲什麼它downvoted)。 +1 – VonC 2010-11-03 11:55:04

+4

當人們沒有理由地倒退時,我討厭它。整個練習的重點要學習和提高。 – 2010-11-03 16:21:51

5

這裏是一個可能實現的git branches命令格雷格Hewgill提到的:

#!/usr/bin/perl 

sub clean { 
    map { s/^[\s\*]*\s// } @_; 
    map { s/\s*$// } @_; 
    return @_; 
} 

sub descr { 
    $_ = `git config [email protected]_.description`; 
    s/\s*$//; 
    return $_; 
}; 
sub indent { 
    $_ = shift; 
    s/^/  /mg; 
    return $_; 
}; 

my @branches = clean `git branch --color=never --list`; 
my %merged = map { $_ => 1 } clean `git branch --color=never --merged`; 

for my $branch (@branches) { 
    my $asis = `git branch --list --color=always $branch`; 
    $asis =~ s/\s*$//; 
    print " $asis"; 
    print " \033[33m(merged)\033[0m" if ($merged{$branch} and $branch ne "master"); 
    print "\n"; 

    print indent descr $branch; 
    print "\n"; 
    print "\n"; 
} 
19

使用git branch --edit-description設置或編輯一個分支描述。

這是一個shell函數,用於顯示類似於git branch的分支,但附有說明。

# Shows branches with descriptions 
function gb() { 
    branches=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||') 
    for branch in $branches; do 
    desc=$(git config branch.$branch.description) 
    if [ $branch == $(git rev-parse --abbrev-ref HEAD) ]; then 
     branch="* \033[0;32m$branch\033[0m" 
    else 
     branch=" $branch" 
    fi 
    echo -e "$branch \033[0;36m$desc\033[0m" 
    done 
} 

這裏是gb樣子,此處顯示爲的情況下,文本圖像腐爛:

$ gb 
* logging Log order details. Waiting for clarification from business. 
    master 
    sprocket Adding sprockets to the parts list. Pending QA approval. 

而作爲一個圖像,所以你可以看到的顏色:

enter image description here

3

使用:

git branch --list -v 

顯示上游分支:

git branch --list -vv 

添加-r只或-a顯示遙控器顯示遙控器和本地

+0

這些都很有用,我正在尋找一些自定義的東西。附有參考文件的某種說明。 – 2015-08-07 09:36:30

5

有兩種流行的建議在這裏:

  1. git branch --edit-description:我們不喜歡這個,因爲你不能推它。也許我可以記住我創建的分支是做什麼的,但我的團隊肯定不能。
  2. README file pr。科。這是合併時的一種痛苦:超級傾向於合併衝突,當我們合併特徵分支時,我們將從分支中抽取README。樹枝之間的差異也是一種痛苦。

我們決定創建一個孤兒branches-readme分支。孤兒分支機構是擁有自己獨立歷史的分支機構 - 您可以從Github的gh-pages分支機構瞭解它們。這個孤兒分支包含一個單獨的README文件。它有像這樣的內容:

master: 
    The default branch 
mojolicious: 
    Start using Mojolicious 
branch-whatever: 
    Description of the whatever branch 

這是推和合並友好。從任何一間分行查看README有:

git show branches-readme:README 

缺點是,你需要簽出怪異的孤兒分支,當你想更新READMEREADME不作爲分支機構獲得改名不自動更新,來或去。不過,這對我們來說很好。

不喜歡它:

git checkout --orphan branches-readme 
# All the files from the old branch are marked for addition - skip that 
git reset --hard 
# There are no files yet - an empty branch 
ls 
vi README 
# put in contents similar to above 
git add README 
git commit -m "Initial description of the branches we already have" 
git push origin branches-readme 
# get all your original files back 
git checkout master 

與之相似,各個團隊成員也可以創建自己的branches-$user孤兒分支機構描述自己的私有分支,如果他們想,只要他們沒有他們推到球隊。

隨着進一步的工具,這也可以與git branch的輸出集成。爲此,或許可以考慮README.yaml文件而不是簡單的README

+0

只有*可以*擁有master中的自述文件。這會增加混亂,但始終可以訪問。 – 2017-07-11 12:14:27

+0

@ PeterA.Schneider:當然,但是然後添加一個新的分支需要一個提交,即使這個改變與master沒有任何關係。另外,當分離主人時,你將在所有分支中有一份自述文件,這是一團糟。 – 2017-07-12 04:32:42

8
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe' 

命令將定義一個全局選項alias.about作爲shell表達式。在存儲庫中運行git about <branch>將顯示分支的說明(如果設置)。

+3

謝謝!我改變了它,所以它只是看着我在 - 「」!(描述)()(git配置分支。「$(git符號ref -short -q HEAD)\」。描述;}描述「' – aug 2017-03-23 23:40:32

+0

@aug - 我需要在參數引號前面放置反斜槓以使其起作用:'git config --global --add alias.about'!describe(){git config branch。」$(git symbolic-ref --short -q HEAD)「。描述; }; describe'' – 2017-04-26 13:40:55

0

只需使用:

git config branch.<branch name>.description 

要給予信貸,信貸是由於: https://glebbahmutov.com/blog/git-branches-with-descriptions/

+0

這是在添加問題後發佈的git版本中添加的。接受的答案提到了這一點。 – 2017-11-27 15:17:48

+0

啊是的。它在評論中被提及。 – 2017-11-28 13:45:02