Git에서 브랜치에 대한 '설명'을 가질 수있는 방법이 있습니까?
설명적인 이름을 사용하려고 할 때 한 지점에서 잠시 일하면 때때로 다른 주제 지점 중 일부를 만든 이유에 대한 기억이 약해집니다. 브랜치에 설명적인 이름을 사용하려고 시도하지만 '설명'(브랜치의 목적에 대한 짧은 메모)이 좋을 것이라고 생각합니다.
Git에서 브랜치에 대한 '설명'을 가질 수있는 방법이 있습니까?
설명적인 이름을 사용하려고 할 때 한 지점에서 잠시 일하면 때때로 다른 주제 지점 중 일부를 만든 이유에 대한 기억이 약해집니다. 브랜치에 설명적인 이름을 사용하려고 시도하지만 '설명'(브랜치의 목적에 대한 짧은 메모)이 좋을 것이라고 생각합니다.
답변:
Git 1.7.9가이를 지원합니다. 로부터 1.7.9 릴리스 노트 :
* "git branch --edit-description"을 사용하여 설명 텍스트를 추가 할 수 있습니다 주제 분기에 대해 설명합니다.
커밋 6f9a332 , 739453a3 , b7200e8 과 함께 2011 년 9 월에 다시 도입 된 기능을 볼 수 있습니다 .
struct branch_desc_cb {
const char *config_name;
const char *value;
};
--edit-description::
편집기를 열고 텍스트를 편집하여 분기가 무엇인지 설명하고 다양한 다른 명령 (예 :)에 사용
request-pull
하십시오.
분리 된 HEAD 브랜치에서는 작동하지 않습니다.
그 설명은 스크립트 요청 풀에서 사용되는 : 참조 c016814783를 저지 뿐만 아니라 git merge --log
.
request-pull
표준 출력에 대한 두 커밋 간의 변경 사항을 요약하고 생성 된 요약에 지정된 URL을 포함하는 데 사용되는 스크립트입니다.
[@AchalDave에서] 안타깝게도 설명이 구성에 저장되어 있기 때문에 설명을 푸시 할 수 없으므로 팀의 지점을 문서화하는 데 쓸모가 없습니다.
git config branch.topic.description
은 branch에 대한 설명을 보여주는 것 topic
입니다. .git/config
파일에 저장 됩니다.
git branch
목록에 설명 만 표시 한다면 ...
당신이 경우 않는 있는 README를 사용하게하는 생성 자식 별칭 수정 git checkout
하여 README 당신이 가지를 전환 할 때마다 표시되도록합니다.
예를 들어 ~ / .gitconfig의 [alias] 아래에 추가하십시오 .
cor = !sh -c 'git checkout $1 && cat README' -
이 후, 당신은 실행할 수있는 git cor <branch_name>
스위치 지점에 와 당신이 전환하고있는 지점의 README를 표시합니다.
1.7.11-msysgit.1
). 대신 $ 0를 사용하고 있습니다. 그리고 모든 것이 좋습니다.
sh -c
" 대신 빠른 기능을 사용합니다 . 예를 들어. alias = "!f() { git checkout "${1}" && cat README.md; }; f"
(이 경우 불필요한 괄호와 인용 부호는 좀 더 복잡한 것이 필요할 경우 완전성을 위해 포함되었습니다.)
~/.gitconfig
아래 [alias]
, 별명의 이름이 실제 (그리고 당연하게도 혼동)이라고 alias
내 실제 설정에서 (내가 이름을 변경해야 cor
일관성이 예를 들어). 내 실제 alias
별칭은 alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
Usage : git alias {alias_name}
또는 git alias {alias_regexp}
입니다. bash alias
명령 과 유사합니다. 예를 들어 다음과 $ alias ll
같습니다 alias ll='ls -l'
. 및 $ git alias br
수익률 : alias.br branch -v --list
(또한 사용할 수 있습니다 $ git alias 'b.*'
)
git branch --edit-description
분기 설명을 설정하거나 편집하는 데 사용 합니다.
다음은 git branch
설명 과 비슷 하지만 설명이 추가 된 분기를 표시하는 쉘 함수 입니다.
# Shows branches with descriptions
function gb() {
current=$(git rev-parse --abbrev-ref HEAD)
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 == $current ]; 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.
그리고 이미지로서, 당신은 색상을 볼 수 있습니다 :
는 README
제안 크리스 J , 작업 할 수 그것으로 설정되어 제공되는 A의 정의 된 사용자 정의 병합 드라이버.gitattribute
.
이렇게하면 병합 중 로컬 버전 README
이 항상 유지됩니다.
분기에 대한 "설명"은 해당 메타 데이터와 관련된 "설명"으로도 알려져 있으며 지원되지 않습니다.
적어도 README
파일을 사용하면 모든 브랜치에서 다음을 수행 할 수 있습니다.
$ git show myBranch:README
README가 REPO의 루트 디렉토리에있는 경우 사용되는 경로 git show
는 해당 repo의 최상위 디렉토리에있는 절대 경로이므로 모든 경로에서 작동 합니다.
.gitattributes
파일을 저장소에 체크인 하므로 모든 사람에게 적합합니다. 불행히도 Azure DevOps에서 풀 요청을 사용할 때와 같이 일부 웹 기반 인터페이스를 병합 할 때 작동하지 않는 것 같습니다.
여기에 두 가지 인기있는 제안이 있습니다.
git branch --edit-description
: 당신이 그것을 밀 수 없기 때문에 우리는 이것을 좋아하지 않습니다. 어쩌면 내가 만든 지점이 무엇인지 기억할 수 있지만 팀은 확실히 할 수 없습니다.README
파일 홍보 분기. 병합 과정에서 발생하는 어려움은 다음과 같습니다. 충돌이 발생하기 쉬우 README
며 기능 분기를 병합 할 때 분기 에서 가져옵니다. 가지 사이의 차이점도 고통입니다.우리는 고아 branches-readme
지점 을 만들기로 결정했습니다 . 고아 지점은 별도의 역사가있는 gh-pages
지점입니다 .Github 지점 에서 알 수 있습니다 . 이 고아 브랜치는 단일 README
파일을 포함 합니다. 다음과 같은 내용이 있습니다.
master:
The default branch
mojolicious:
Start using Mojolicious
branch-whatever:
Description of the whatever branch
푸시 및 병합이 가능합니다. 다음 README
을 사용하여 지점에서 봅니다.
git show branches-readme:README
단점은 당신이를 업데이트 할 때 이상한 고아 분기를 체크 아웃 할 필요가있다 README
그리고이 README
지점의 이름이 변경되는 때, 올하거나하지 자동 업데이트를 수행합니다. 그래도 괜찮습니다.
다음과 같이하십시오 :
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
.
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
명령은 전역 옵션 alias.about
을 쉘 표현식으로 정의합니다 . git about <branch>
리포지토리에서 실행 하면 설정된 경우 분기의 설명이 표시됩니다.
"!describe() { git config branch.\"$(git symbolic-ref --short -q HEAD)\".description; }; describe"
git config --global --add alias.about '!describe() { git config branch."$(git symbolic-ref --short -q HEAD)".description; }; describe'
git branches
Greg Hewgill이 암시 한 명령 의 가능한 구현은 다음과 같습니다 .
#!/usr/bin/perl
sub clean {
map { s/^[\s\*]*\s// } @_;
map { s/\s*$// } @_;
return @_;
}
sub descr {
$_ = `git config branch.@_.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";
}
여기의 git
alias
당신에게 세트와 현재 분기에 읽기 설명을 모두 할 수 있습니다이 :
git config --global --add alias.about '!describe() { msg="$1"; git config branch."$(git rev-parse --abbrev-ref HEAD)".description ${msg:+"$msg"}; }; describe'
사용법 / 예 :
(develop) $ git about
(develop) $ git about message
(develop) $ git about
message
(develop) $ git about "this is a new message"
(develop) $ git about
this is a new message
(develop) $ git checkout -b test_branch
Switched to a new branch 'test_branch'
(test_branch) $ git about
(test_branch) $ git about "this is the test branch"
(test_branch) $ git about
this is the test branch
(test_branch) $ git checkout -
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
(develop) $ git about
this is a new message
저를 시작한 답변에 대한 @Felicio에게 특별한 감사를드립니다.
현재 기능이 지원되지 않는 것이 확실합니다. 가장 좋은 방법은 기본적으로 README 인 설명 텍스트 파일을 원하는 정보가있는 지점에 만드는 것입니다.
선택한 대답은 나에게 과잉 것 같습니다. 나는 정상적인 소스 제어 파일, 말이고 지점마다 설명 파일 유지하는 경향 거라고 master.txt
, dev.txt
등을하고 다루기 힘든 번호 또는 지점이있는 경우 더 나은에 계층 구조를 만들를 구성 할 것입니다.
git show master:dev.txt
선택한 답변보다 단순한 것이 아닌 것을 사용해야 합니다.
그냥 사용하십시오 :
git config branch.<branch name>.description
신용이 필요한 곳에 신용을 제공하려면 https://glebbahmutov.com/blog/git-branches-with-descriptions/
사용하다
git branch --list -v
업스트림 지점을 표시하려면
git branch --list -vv
-r
리모컨 만 표시하거나 -a
리모컨 및 로컬을 표시 하려면 추가하십시오 .