일상적인 사용자 지정 Git 명령

4724 단어 gitprogramming

내가 반복하는 것에 주의를 기울이고...기록하기



이 기사에서는 git에 대해 이야기하고 나만의 git 명령을 작성하려고 합니다. 구현된 대로git$PATH로 시작하는 git-의 모든 실행 파일을 git 명령으로 인식합니다.

내 컴퓨터에는 내 ~/bin의 일부인 $PATH 폴더가 있으며 이러한 git 명령이 많이 있습니다. 그 중 몇 가지를 살펴보겠습니다.

Git "Slog" 둘러보기



내가 거의 매일 사용하는 하나의 git 명령이 있습니다: git slog ; a simple custom function that I wrote .

해당 명령의 본문은 다음과 같습니다.

git log \
    --graph \
    --pretty=format:'%C(auto)%h — %s %C(blue)%an, %C(green)(%cs)%Creset%C(auto)%d%Creset' \
    $@



위의 명령은 커밋당 한 줄을 생성하고(시각적 스캔에 도움이 되는 색상 포함) 해당 커밋의 "그래프"를 렌더링합니다.

후행 $@ 를 사용하면 git slog 로 전달되는 추가 인수를 git log 로 전달할 수 있습니다. --since , --until , --author 또는 many of the other git log options 을 사용하려는 경우에 유용합니다.

아래는 오늘 기준으로 Hyrax의 메인 브랜치에서 나온 처음 몇 줄의 출력입니다.

* 4f8b5ded3 — provide default PermissionBadge presenter behavior when `nil` tamsin johnson, (2022-08-23) (HEAD -> main, origin/main, origin/HEAD)
* 3e08ab376 — don't load_and_authorize a model when indexing Embargoes tamsin johnson, (2022-08-23)
* 1c40a73cd — support newer versions of FactoryBot tamsin johnson, (2022-08-23)
* bf5df6f9d — Move copy of template below injection of mixin it references Chris Colvard, (2022-08-23)
* 3bf4b276a — soften dependendy on search_state_class for app generation Chris Colvard, (2022-08-23)
* c97f078c1 — Remove TAGS rodyoukai, (2022-08-18)
* b04b1eb7d — update batch_upload_form test rodyoukai, (2022-08-18)
* a4b5e0d40 — add bibliographic_citation to work form rodyoukai, (2022-08-18)
* 27ef645f0 — Merge pull request #5790 from samvera/admin_set_fallback_main Daniel Pierce, (2022-08-05)
|\
| * a7afa4639 — AdminSet needs to fall back to an id if noid is false Rob Kaufman, (2022-08-03)
|/
* 346cef1ed — Merge pull request #5784 from samvera/cbeer-patch-1 Daniel Pierce, (2022-07-27)
|\
| * 63c3cecf4 — SPARQL gem monkey-patches Hash#deep_dup and breaks Blacklight's expected contract with Rails Chris Beer, (2022-07-23)
| * 35cc0a054 — Implement search_state_class used by upstream blacklight Chris Beer, (2022-07-22)
| * 6cd2ca8ba — Unpin Blacklight Chris Beer, (2022-07-22)
|/
* 0cdb45928 — comet: decouple Derivatives from Characterization tamsin johnson, (2022-07-14)



내가 작성한 추가 사용자 지정 Git 기능



이들 중 대부분은 원래 git aliases으로 시작했습니다. 그러나 나는 그것들을 명령으로 "승격"하기로 선택했습니다. 부분적으로는 연습의 문제이기도 하지만 명령을 문서화하기가 더 쉽다는 것을 알았기 때문이기도 합니다.

내가 쓴 다른 몇 가지가 있습니다.

git-edit
(내 $EDITOR를 통해) git에 따라 변경된 모든 파일을 편집합니다.
git-byegone
원격 분기가 사라진 모든 로컬 추적 분기를 삭제합니다(예: 삭제됨).
git-prune-branchesgit-byegone와 같지만 원격 분기를 정리하고 지정된 분기에 병합된 분기를 삭제합니다.
git-squash
주어진 분기에서 분기된 지점에서 현재 분기에 대해 대화형 리베이스를 수행합니다.
git-stats-for
주어진 저장소에 대한 작성자의 통계를 보기 위한 명령줄 Ruby 스크립트.
git-unmerged-edit
( my $EDITOR 를 통해) 현재 저장소에서 병합되지 않은 모든 파일을 편집합니다.

./bin directory of my dotzshrc repository에서 볼 수 있습니다.

결론



근무 시간 내내 나는 종종 내 명령 기록을 참조합니다.
나는 CTRLr + history-incremental-search-backward를 사용하여 내 명령을 검색하라는 프롬프트를 제공하고 이전에 수행한 작업을 기억하도록 도와줍니다.
위의 대부분의 명령은 내가 "제대로"캡처하기 전에 몇 번 사용하고 있음을 발견했습니다. 그리고 그것들을 기억할 수 있도록 그들 자신의 파일에 썼습니다.

좋은 웹페이지 즐겨찾기