트리와 같은 방식으로 Git branch
지금은 "git branch"를 입력하면
내 가지를 임의의 순서로 나열합니다.
"git branch"가 내 출력을 패션과 같은 트리에 나열한다면 제가 선호하는 것은 다음과 같습니다.
master
|-- foo
|-- foo1
|-- foo2
|-- bar
|-- bar4
여기서 foo & bar는 마스터에서 분기되었고, foo1 & foo2는 foo에서 분기되었으며, bar4는 bar에서 분기되었습니다.
이것은 쉽게 달성할 수 있습니까?
[명령줄 유틸리티만 해당].이것은 내 zsh/vim 워크플로우에 맞아야 합니다.]
아래 답변은 다음을 사용합니다.
2009년에 "터미널에서 깃 트리를 표시할 수 없음"과 유사한 접근 방식을 언급했습니다.
git log --graph --pretty=oneline --abbrev-commit
하지만 제가 사용한 전체 내용은 "git log --graph를 사용하여 태그 이름과 지점 이름을 표시하는 방법"(2011)에 있습니다.
git config --global alias.lgb "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches"
git lgb
원답 (2010)
git show-branch --list
(토포 주문과 함께) 찾고 있는 것에 가깝습니다.
--topo-order
기본적으로 분기와 해당 커밋은 시간순 역순으로 표시됩니다.
이 옵션을 사용하면 이러한 사용자가 토폴로지 순서로 나타납니다(즉, 하위 커밋이 부모 앞에 표시됨).
하지만 도구 gitwtf도 도움이 될 수 있습니다.예:
$ git wtf
Local branch: master
[ ] NOT in sync with remote (needs push)
- Add before-search hook, for shortcuts for custom search queries. [4430d1b] (edwardzyang@...; 7 days ago)
Remote branch: origin/master (git@gitorious.org:sup/mainline.git)
[x] in sync with local
Feature branches:
{ } origin/release-0.8.1 is NOT merged in (1 commit ahead)
- bump to 0.8.1 [dab43fb] (wmorgan-sup@...; 2 days ago)
[ ] labels-before-subj is NOT merged in (1 commit ahead)
- put labels before subject in thread index view [790b64d] (marka@...; 4 weeks ago)
{x} origin/enclosed-message-display-tweaks merged in
(x) experiment merged in (only locally)
NOTE: working directory contains modified files
git-wtf
표시:
- 원격 repo와 분기의 관계(추적 분기인 경우)
- 분기가 피쳐 분기인 경우 비 피쳐("버전") 분기와 관련된 방식입니다.
- 버전 분기인 경우 분기가 피쳐 분기와 관련된 방식
당신이 요청한 것은 아니지만,
git log --graph --simplify-by-decoration --pretty=format:'%d' --all
꽤 잘 해냅니다.태그와 원격 분기도 표시됩니다.이것이 모두에게 바람직하지는 않을 수도 있지만, 저는 그것이 유용하다고 생각합니다. --simplifiy-by-decoration
표시된 심판을 제한하는 큰 속임수입니다.
비슷한 명령을 사용하여 로그를 봅니다.나는 나의 것을 완전히 대체할 수 있었습니다.gitk
사용:
git log --graph --oneline --decorate --all
~/.gitconfig 파일에 다음 별칭을 포함하여 사용합니다.
[alias]
l = log --graph --oneline --decorate
ll = log --graph --oneline --decorate --branches --tags
lll = log --graph --oneline --decorate --all
편집: 제안된 로그 명령/에일리어스가 더 간단한 옵션 플래그를 사용하도록 업데이트되었습니다.
TLDR; 사용git show-tree
또는git lg
별칭(내가 선호하는 선택).
트리 보기에 모든 분기(원격 분기 포함)를 표시하는 방법
사용하다git show-tree
:
참고:git show-tree
코어의 일부가 아님git
"git-extra"로 알려진 추가 유틸리티로 설치해야 합니다.Linux Ubuntu에서 사용할 수 있는 기능은sudo apt install git-extras
여기에 있는 설치 지침에서 운영 체제를 찾아 git-extra 설치 지침을 따릅니다.
Ubuntu에서 테스트됨:
# Install it
sudo apt install git-extras
# Run it:
git-show-tree
# OR (same thing)
git show-tree
이는 여기서 가장 많이 투표된 2개의 답변과 유사한 효과를 생성합니다.
출처: http://manpages.ubuntu.com/manpages/bionic/man1/git-show-tree.1.html
예:
man git show-tree
.
예
모든 분기에 대한 커밋 기록 로그를 트리 보기로 출력합니다.
* 4b57684 (HEAD, develop) Merge branch upstream master. |\ | * 515e94a Merge pull request #128 from nickl-/git-extras-html-hyperlinks | |\ | | * 815db8b (nickl/git-extras-html-hyperlinks, git-extras-html-hyperlinks) help ronn make hyperlinks. | * | 7398d10 (nickl/develop) Fix #127 git-ignore won´t add duplicates. | |/ | | * ab72c1e (refs/stash) WIP on develop: 5e943f5 Fix #127 git-ignore won´t add duplicates. | |/ |/| * | 730ca89 (bolshakov) Rebase bolshakov with master |/ * 60f8371 (origin/master, origin/HEAD, master) Merge pull request #126 from agrimaldi/fix-changelog-last-tag * 9627780 (tag: 1.7.0) Release 1.7.0 * 2e53ff6 (tag: 1.6.0) Release 1.6.0 * bbd32d8 (tag: 1.5.1) Release 1.5.1 | * 6b6b758 (nickl/gh-pages, gh-pages) add example git-extras to gh-pages | * 19cfd11 (origin/gh-pages) Index page | | * 881a70e (tag: 1.5.0) Release 1.5.0 | |/ |/| * | 4db5ee0 (tag: 1.4.0) Release 1.4.0 * | 9b0bc89 (tag: 1.3.0) Release 1.3.0 * | be49961 (tag: 1.2.0) Release 1.2.0 * | c1d2dfc (tag: 1.1.0) Release 1.1.0 * | 4a56adb (tag: 1.0.0) Release 1.0.0 * | 948308b (tag: 0.9.0) Release 0.9.0 * | 40b131d (tag: 0.8.1) Release 0.8.1 * | 391431d (tag: 0.8.0) Release 0.8.0
에 다은의샘출다니입력플음의 .git show-tree
아두파일럿 레포에서:
또한, 아크나리스트가 설치되어 있는 경우(수정:Uber의 아카니스트 포크가 설치되었습니다. 설치 지침은 여기 제 답변의 하단을 참조하십시오.arc flow
를 보여줍니다, 이전에 종아즉종의트업운름보속, 트종다는니리여줍성속설리를성된정스다림트성속이, 에전▁of즉종트성리는▁shows▁depend▁a속ency▁upstream▁set▁previous▁were▁(▁depend▁treeieencieslyarc flow new_branch
또는 를 통해 수동으로git branch --set-upstream-to=upstream_branch
는 다음과 같습니다.arc flow
:
master └──graft-D999 └──new_feature_1 └──new_feature_2
나는 정말로 발견합니다.arc flow
유용하게에 저는 이것(비활성이고 아직을 있습니다.git tree
제가 행동을 복제할 계획인 오픈 소스 프로젝트: https://github.com/ElectricRCAircraftGuy/git-tree .
하나의 가지를 "트리와 같은" 방식으로 표시하려면:
# Show the currently-checked-out branch
git lg
# OR: show branch_name
git lg branch_name
추가할 수 있습니다.-p
또는--patch
변경된 라인도 표시합니다.
git lg -p
# OR
git lg --patch
별칭을 설치하려면(출처: https://coderwall.com/p/euwpig/a-better-git-log) :
git config --global alias.lg "log --color --graph \
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) \
%C(bold blue)<%an>%Creset' --abbrev-commit"
레포의 포크, 병합 및 기타 항목을 보여주는 출력 예:
보너스 기트 트릭:
- 중첩 셸을 실행 중인지 확인하려면 어떻게 해야 합니까? - "보너스: 항상 터미널에 현재 상태를 표시하십시오!"라는 제목의 섹션을 참조하십시오.
관련:
다음 예제에서는 커밋 상위 항목도 보여 줍니다.
git log --graph --all \
--format='%C(cyan dim) %p %Cred %h %C(white dim) %s %Cgreen(%cr)%C(cyan dim) <%an>%C(bold yellow)%d%Creset'
다음과 같은 도구를 사용할 수 있습니다.gitk
.
Github을 사용하는 사람들을 위해, 그들은 읽기 더 쉬워 보이는 지점 네트워크 뷰어를 가지고 있습니다.
저는 바로 그렇게 하는 간단한 CLI를 만들고 그것을 양조하기 위해 넣었습니다.
언급URL : https://stackoverflow.com/questions/2421011/output-of-git-branch-in-tree-like-fashion
'programing' 카테고리의 다른 글
axios 시간 초과 후 알림 받기 (0) | 2023.06.27 |
---|---|
MongoDB 및 PostgreSQL 생각 (0) | 2023.06.27 |
Spring Boot 테스트에 게시할 JSON 개체 생성 (0) | 2023.06.27 |
MongoDB를 사용하여 노드에 일부 작은(1MB 미만) 파일 저장그리드FS 미포함 JS (0) | 2023.06.27 |
vuex 함수 - 개체 값을 기준으로 true 또는 false를 반환합니다. (0) | 2023.06.27 |