Git에서 브랜치 토폴로지 시각화 전체 지사 지형을 볼

나는 내 컴퓨터에서 Git과 분리하여 놀고 있는데, 모든 브랜치와 커밋의 정신 모델을 유지하는 것이 어렵다는 것을 알았습니다. 나는 내가 git log어디에서 커밋 히스토리를 볼 수는 있지만 지사를 설명하기 위해 모든 곳에서 사용되는 것으로 보이는 ASCII 맵과 같은 전체 지사 지형을 볼 수있는 방법이 있습니까?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

누군가가 와서 내 저장소를 가져 오려고하면 정확히 무슨 일이 일어나고 있는지 알아내는 것이 어려울 것입니다.

AccuRev의 스트림 브라우저 의 영향을받는 것 같습니다 …



답변

git log --graph또는을 사용하십시오 gitk. (두 가지 모두 수락 --all하면 현재 분기 대신 모든 분기가 표시됩니다.)

지점 이름과 간단한보기를 보려면 다음을 시도하십시오.

git log --graph --decorate --oneline

답변

나는 보통

git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

색상 포함 (쉘이 배 시인 경우) :

git log --graph --full-history --all --color \
        --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

다음과 같은 텍스트 기반 표현이 인쇄됩니다.

* 040cc7c       (HEAD, master) Manual is NOT built by default
* a29ceb7       Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd     (cvc3) cvc3 now configured before building
| * d9e8b5e     More sane Yices SMT solver caller
| | * 5b98a10   (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874     CFLAGS for cvc3 to work successfully
| *   1579581   Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b   nostaticalias option
| | * 73b91cc   Comment about aliases.
| | * 001b20a   Prints number of iteration and node.
| |/
|/|
| * 39d2638     Included header files to cvc3 sources
| * 266023b     Added cvc3 to blast infrastructure.
| * ac9eb10     Initial sources of cvc3-1.5
|/
* d642f88       Option -aliasstat, by default stats are suppressed

(당신은 그냥 사용할 수는 git log --format=oneline있지만 커밋 메시지를 숫자로 묶을 것입니다.

이 명령에 대한 바로 가기를 만들려면 ~/.gitconfig파일 을 편집 할 수 있습니다.

[alias]
  gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

그러나 주석에 Vociferous 메모가 있기 때문에 그러한 긴 형식 명령은 기억하기 어렵습니다. 일반적으로 ~/.gitconfig파일에 넣을 수 있으므로 문제가되지 않습니다 . 그러나 구성 파일을 수정할 수없는 원격 시스템에 로그인해야하는 경우 더 간단하지만 더 빨리 버전을 입력 할 수 있습니다.

git log --graph --oneline

답변

일반적으로 파일에 던지는 3 개의 별칭 (및 빠른 사용을위한 4 개의 별칭)~/.gitconfig있습니다.

[alias]
    lg = lg1
    lg1 = lg1-specific --all
    lg2 = lg2-specific --all
    lg3 = lg3-specific --all

    lg1-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
    lg2-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
    lg3-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'

git lg/ git lg1다음과 같습니다 :

git lg2 다음과 같이 보입니다 :

git lg3모양이 맘에 :

이 솔루션은 모든 솔루션을 의미하는 것이 아니라 원하는대로 변경, 추가 및 수정하기위한 템플릿입니다. 이것을 사용하려면 다음을 권장합니다.

  1. 에 추가하십시오 .gitconfig.
  2. 취향에 맞게 사용자 정의하십시오 (다른 색상 선택, 2 줄 및 3 줄 버전에 대한 다른 줄 배열 등).
  3. 그런 다음 사본을 Gist 또는 다른 코드 스 니펫 도구에 저장하여 나중에 복사하여 붙여 넣을 수 .gitconfig있습니다 (또는 물론 도트 파일을 버전 제어) .

참고 : 답변이 stackoverflow.com/questions/1057564/pretty-git-branch-graphs 에서 답변보다 복사되고 개선되었습니다 . 여기서보다 훨씬 적합하기 때문입니다. 역사적인 이유로 다른 질문에 사본을 남겼습니다. 지금 닫히고 답변은 다른 답변으로 참조됩니다.


답변

이 레시피 (git log 또는 gitk 기반)에 --simplify-by-decoration히스토리의 흥미롭지 않은 선형 부분을 축소하기 위해 추가 할 수 있습니다 . 이를 통해 훨씬 더 많은 토폴로지를 한 번에 볼 수 있습니다. 이제이 옵션 없이는 이해할 수없는 큰 역사를 이해할 수 있습니다!

잘 알려진 것처럼 보이지 않기 때문에 게시해야 할 필요성을 느꼈습니다. 기록 시각화에 대한 대부분의 스택 오버플로 질문에는 나타나지 않으며 원하는 것을 알고 난 후에도 검색하는 데 약간의 시간이 걸렸습니다! 드디어이 데비안 버그 보고서 에서 찾았습니다 . 스택 오버플로에 대한 첫 번째 언급은 Antoine Pelisse의 답변 입니다.


답변

Gitk 언젠가는 읽기 힘들다.

GitVersionTree 작성 하도록 동기를 부여하십시오 .


답변

내 시간의 99.999 %가 이력을보고 git lg있고 0.001 %가입니다 git log.

유용 할 수있는 두 개의 로그 별칭을 공유하고 싶습니다 (.gitconfig에서 구성).

[Alias]
     lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
     hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
  • git lg 현재 지점 기록을 볼 수 있습니다.
  • git hist 전체 지사 기록을 볼 수 있습니다.

답변

토폴로지를 명쾌하게 보여주는 크로스 플랫폼 GUI 인 Gitkraken을 살펴보십시오 .

다음 은 몇 가지 고급 기능에 대한 간단한 비디오 자습서 입니다.