git recent-branch와 peco로 브랜치를 빠르게 전환

2523 단어 5cliGitPeco

소개



git에서 여러 기능을 병렬로 개발할 때 등 브랜치를 자주 전환하는 것은 있을까 생각합니다.
git에서는 git checkout - , git rebase - 와 같이 -3개 이상의 브런치를 오가거나 할 때에는 사용할 수 없습니다.

그래서 git에서 최근 checkout 한 branch를 표시하는 git recent-branch 라는 git 부속 명령을 만들었습니다.

sachaos/git-recent-branch
$ git recent-branch
develop                                  (16 seconds ago) Fri May 12 00:06:52 JST 2017
feature/hogehoge                         (28 seconds ago) Fri May 12 00:06:40 JST 2017
feature/test2                            (41 seconds ago) Fri May 12 00:06:27 JST 2017
master                                   (57 seconds ago) Fri May 12 00:06:11 JST 2017
feature/test                             (2 minutes ago)  Fri May 12 00:05:02 JST 2017
ae8bcd440123ee5db3fa994eb618f918a857ed5b (1 week ago)     Tue May  2 21:54:36 JST 2017

이것과 peco 를 조합하는 것으로, 최근 checkout 한 브랜치를 편하게 왕래할 수 있습니다.

데모





Tips 때리기



내부 거동



git 의 조작 로그는 git 관리하의 디렉토리에 있는 .git/logs/HEAD 에 보관 유지되고 있습니다.
이것을 파스하고 checkout의 로그를 주워 와서 성형해 표시하는 것만으로 매우 심플한 만들기가 되어 있습니다.git reflog 명령도 이 녀석을 이용하고 있는 것 같습니다.

git 부속 명령을 만드는 방법



몰랐습니다만, git는 git-recent-branch 와 같은 커멘드를 준비해 주면,git recent-branch 와 실행했을 때에 하이픈으로 단락지어지고 있는 커멘드를 실행해 주는 것 같습니다.
이제 부속 명령과 같은 동작을 수행할 수 있습니다.

Golang에서 Twitter와 같은 시간보기



Golang에서 Twitter와 같은 표시 (7 hours ago와 같은)를 만들 때 다음 패키지가 편리했습니다.
상대적인 시간표시 이외에도 파일 사이즈 등, 스스로 구현하는 것도 귀찮게 편리한 변환을 해 줍니다.
fmt.Printf("This was touched %s.", humanize.Time(someTimeInstance)) // This was touched 7 hours ago.

dustin/go-humanize: Go Humans! (formatters for units to human friendly sizes)

요약


  • git recent-branch라는 명령을 작성했습니다.
  • git 부속 명령 쉽게 만들 수 있습니다.
  • go-humanize 편리.

  • 만든 후 몇 주가 지났지만, 이것으로 브랜치 전환의 스트레스가 해소되었습니다.
    지금은 이것이 없는 생활은 생각할 수 없습니다.
    꼭 사용해보십시오.

    좋은 웹페이지 즐겨찾기