git alias로 명령어 줄이기

1
git config --global alias.rc 'rm -r --cached .'
  • windows의 경우 git bash를 열어서 위 명령을 실핸한다
  • 이미 원격 저장소에 올린 파일을 gitignore 할 때 쓰는 명령어인데
  • 항상 외우지 않고 복붙 했었는데,
  • 그것도 귀찮아서 이참에 git rc로 줄여버렸다

git 명령어 줄이기

1
2
3
git config --global alias.r '! r() { git reset --soft HEAD~"$1" ; } ; r'

git config --global alias.r1 '! r1() { git reset --soft HEAD~1 ; } ; r1'
  • git reset --soft HEAD~1 마지막 커밋 하나를 취소하는 명령어이다
  • 나는 보통 여러 컴퓨터에서 작업할 때, 일단 작업 중을 내용을 임시적으로 커밋 푸쉬해서 깃허브에 업로드한다
  • 다른 컴퓨터에서 풀로 받아오고, 이 임시적인 커밋을 취소할 때 명령어를 길게 쓰는 게 귀찮아서 alias로 짧게 줄여보았다
  • git r 2 ; 숫자만큼 커밋 취소하기
  • git r1 ; 마지막 커밋 취소하기

참고

git commit push 명령 합치기

  • git commit 이랑 git push 명령을 합치고 싶은 욕구가 생겼다
1
git config --global alias.acp '! acp() { git commit -a -m "$1" && git push ; } ; acp'
  • git bash를 열고 위 명령을 수행한다
  • acp란 이름으로 git alias를 추가한다
  • --global옵션을 줘서 어디서든 실행될 수 있도록 한다
  • --global옵션을 주지 않으면 현재 깃 디렉터리에만 적용이 된다
1
git acp "커밋 메시지"
  • 이런 식으로 사용한다

참고

github api로 유명한 레포 첫 커밋 메시지 확인하기

  • 엄청큰 오픈소스 저장소를 보면 커밋 개수가 어마어마하다
  • 첫 커밋을 확인하려고, 브라우저에서 커밋 목록으로 들어가서 한페이지 한페이지씩 넘겨가면서 찾을 수 없을 것이다

  • vscode의 첫번째 커밋은 어떤 커밋일까?

Hello Code

github api로 첫 커밋 확인하기

  • 약간 수동적인 방법이다

https://api.github.com/repos/microsoft/vscode/commits?page=73698&per_page=1

  • 브라우저로 vscode 레포에 접속해서 총 커밋 개수를 확인한다
  • github api 중에 커밋 목록을 보여주는 api가 있다
  • 파라미터로 page에 커밋 개수를, per_page는 1로 설정해주면 첫번째 커밋을 가져올 수 있다
  • 그리고 시간이 지남에 따라 새로운 커밋이 생기고, 커밋 개수가 증가하게 되면서, 나중에 다시 보려면 page 파라미터의 값을 새롭게 설정해줘야 하는 문제가 있다

참고

  • 찾아보니까 스크립트로 여러사람들이 만들어 놓은것을 확인할 수 있었다

shell script

python, js

git clone 커밋 히스토리없이 가볍게 클론하기

terminal
1
git clone --depth 1 https://github.com/chinsun9/refactor-2019T1.git
  • git clone을 통해 클론하게되면 .git 폴더도 같이 딸려온다
  • .git 폴더없이 최신 상태만 가져오고싶을 때 어떻게 할까 찾아보다가
  • --depth 옵션을 알게되었다
  • --depth 1 하게되면 가장 마지막 상태만 클론하게된다

참고

github 저장소 복제

1
2
3
4
5
6
7
git clone --bare -b docker --single-branch  https://github.com/chinsun9/2020-web-test.git

cd 2020-web-test.git
git push --mirror https://github.com/chinsun9/2020-web-test-mirror.git

cd ..
rmdir /s 2020-web-test.git
  • 우선 터미널에서 작업하기 전에 새로운 깃허브 저장소를 하나 생성한다.(복제될 저장소)
  • 2020-web-test의 docker 브랜치를 bare clone 한다

  • bare clone하게되면 소스코드가 보이지않고 이런 요상한 파일들이 보인다
  • 평범히 클론했다면 .git 디렉터리에 있는 내용들이다
  • cd 2020-web-test.git로 들어가주고
  • git push --mirror https://github.com/chinsun9/2020-web-test-mirror.git
  • 새로운 저장소로 mirror옵션을 주고 푸쉬하게되면 커밋내역까지 똑같이 저장소가 복제된다

  • 오른쪽이 복제한 저장소이고, 복제한 저장소에서 하나의 커밋을 하였다
  • rmdir /s 2020-web-test.git 이제 이 쓸모없는 디렉터리는 삭제하고
  • 복제한 저장소를 git clone https://github.com/chinsun9/2020-web-test-mirror.git 클론해서 사용하면된다

용도?

  • 퍼블릭 저장소에 올렸던 프로젝트를 계속 이어하는데
  • dbconfig파일이나, 보여주고싶지않은 정보가 있을 수 있다
  • 처음에는 비공개 브랜치? 이런 키워드로 찾아봤었는데, 그런 기능은 없었다
  • 프로젝트를 통째로 복사해서 새롭게 git init 하는 방법도 있는데,
  • 이 방법을 통해서 커밋내역을 유지하면서 복제할 수 있었다

참고

github api로 특정 저장소의 커밋내역 불러오기

  • 깃허브 api로 특정 저장소 커밋내역 json으로 받아보기
  • 나는 내 special repository인 chinsun9 저장소의 커밋내역을 받아와보았다

github api

https://api.github.com/repos/chinsun9/chinsun9/commits
https://api.github.com/repos/{유저명}/{저장소명}/commits

  • js에서는 fetch api로 데이터를 가져와 원하는 로직을 수행하면 될 것 같다
  • github api가 있다는 것을 알아보았고, 맛보기를 해보았다
  • 비공개 저장소 접근이나 다른 유용한 api가 있는지 알아보고 활용하면 좋을 것 같다

깃허브 자기 닉네임 저장소 special repository

  • https://github.com/chinsun9 자기 깃허브 메인화면에 가장 처음 표시되는 readme파일의 저장소다!
  • 내가 어떤 개발자인지 보여주는 용도이다
  • GitHub Readme Stats를 통해 자기 깃허브 활동을 시각적으로 보여주면 더 좋다!

special repository

  • github에서 저장소명을 자신의 닉네임이랑 똑같이 하면 special repository 라는 것이 만들어진다
  • 이 special repository는 내 깃허브 메인 화면에서 가장 처음으로 보여지는데,
  • 여기서 내 프로필을 적어서 나를 자랑?할 수 있다

GitHub Readme Stats

chinsung/chinsung

특정 브랜치 클론하기

1
2
3
git clone -b {브랜치명} --single-branch {저장소}

git clone -b docker --single-branch https://github.com/chinsun9/2020-web-test.git
  • 저장소에 여러 브랜치가 있는데, 특정 하나의 브랜치만 클론하고 싶을때!

git clone -b docker –single-branch https://github.com/chinsun9/2020-web-test.git