42서울에서 하면서 쓰고 있는 git 기능 몇가지만 소개 할게요.
마지막엔 제가 commit log를 확인하는 법도 알려드릴게요.
1. 과제 관리
1) git subtree - 1 repository N subject
이 방법은 제가 했던 과제들을 따로따로 두기보다 한 곳에 모아두고 싶어서 찾아봤던 방법인데요.
git subtree는 서브 레포지토리를 메인 레포지토리에 복사한다고 생각하시면 돼요.
그 전에는 자신이 했던 과제들을 복사 붙여넣기 했다면 이제부터는 이 방법을 써보세요!!
제가 추천하는 방법은 과제를 다 하고나서 메인(개인) 레포지토리에 넣는 거예요.
명령어
git subtree add prefix=[새로 만들 디렉토리] [가져올 레포지토리 주소] [브랜치명] (--squash)
•
서브 레포지토리를 계속 수정하고 관리한다면 git subtree pull / git subtree push도 알아둬야겠지만 저희는 필요없습니다!!
◦
과제를 다 하고나면 어차피 더 이상 원격 레포지토리 수정이 안 되니까 여기까지만 합시다!
◦
더 알아봐도 현재 저희가 쓸 만한 기능은 여기까지더라고요…(경험담)
•
prefix=”새로 만들 디렉토리” : 저희가 가져올 과제를 담을 디렉토리 이름을 적어주세요.
•
[가져올 레포지토리 주소] : 과제에서 주는 레포지토리 주소.
◦
굳이 remote repository 추가해서 관리하지 말고… 딱 여기까지만…
•
[브랜치명] : 서브 레포지토리에서 가져올 브랜치(대부분 master)
•
--squash : commit log 통합시키고 가져오기
1.
우선 과제에서 주는 레포지토리와 연결해서 과제를 합니다.
2.
평가까지 다 마쳤으면 이제 개인 레포지토리에 넣읍시다!(제가 했던 FDF로 예시를 들게요ㅎㅎ)
기존 개인 레포지토리 - commit log
•
제 개인 레포지토리의 기록인데요..이것저것 테스트 해보느라 먼가 혼잡하긴 한데 못 본 척 하시면 돼요.
새로 추가할 FDF - commit log
•
이제 이 fdf_folder라는 폴더의 원격 레포지토리(origin/master)를 위의 제 레포지토리에 넣을 겁니다!
git subtree add --prefix="fdf" git@vogsphere.42seoul.kr:vogsphere/intra-uuid-06e614fb-7b2b-4d68-9935-8e3a7814352e-4596145-mingkang master
(개인 레포지토리에서 실행)
결과
보시는 것처럼 기존 레포지토리에 과제 폴더를 가져오고 + 해당 과제의 커밋 내역도 같이 가져오는 것을 확인 할 수 있어요.
만약 커밋로그를 가져와서 오히려 더 보기 불편하고 내역을 가져오고 싶지 않다면 --squash 옵션을 주면 내역을 생략하고 가져올 수 있어요.
git subtree add --prefix="fdf" git@vogsphere.42seoul.kr:vogsphere/intra-uuid-06e614fb-7b2b-4d68-9935-8e3a7814352e-4596145-mingkang master --squash
•
그럼 아래처럼 하나의 커밋으로 깔끔하게 남습니다!
2) git remote add - 1 repository 1 subject
그냥 과제 하나를 할 때마다 그 과제를 개인 레포지토리에 넣을 때
원격 레포지토리를 두 개를 두고 과제 제출 할 때에는 과제 레포지토리에 올리고 그 전에는 개인 레포지토리에 올리는 식으로 하면 될 거예요.
명령어
원격 레포지토리를 새로 만들어서 현재 작업중인 폴더랑 연결해주면 됩니다.
git remote add [새로운 이름] [원격 레포지토리 주소]
우선 git hub에 새로운 레포지토리를 만듭니다.
이제 제가 하고 있는 과제랑 이 레포지토리를 연결해주도록 할게요.
그러면 제 개인 레포지토리에 잘 담긴 것을 확인할 수 있어요.
이 방법을 사용하시면 push 하실 때 과제용, 개인 레포용 나눠서 push 하는 것 조심하세요!
2. 과제 retry 할 때
혹시나 이전까지 번거롭게 파일들을 옮겨 왔던 분들을 위해 올려요.(새로 생긴 레포지토리 git clone 하지 마세요!!!)
과제를 retry 하게 되면 레포지토리를 새로 주는데 이 레포지토리 주소만 바꿔주면 돼요.
방법은 정말 간단합니다!
1) git remote set-url
기존에 origin으로 연결되어있는 원격 레포지토리가 있을 텐데 origin이 가리키고 있는 주소를 git remote set-url을 통해 새로 만들어진 레포지토리의 주소로 변경해주면 됩니다!
명령어
git remote set-url [기존 원격 레포지토리] [새 원격 레포지토리 주소]
(+ 현재 내가 갖고있는 원격 레포지토리는 git remote -v 를 통해 확인할 수 있어요.)
해당 명령어를 통해 원격 레포지토리를 바꾸고 git push 하면 끝!
3. aliasing
깃에서 자주 쓰는 명령어는 따로 aliasing해서 편하게 이용하는 것을 추천드려요.
1) 길이가 긴 커맨드 별명 붙이기
“git config alias.[새로운 별명] [길이가 긴 커맨드]”의 형식으로 쓰면 길이가 긴 커맨드를 짧은 별명만 타이핑해도 실행할 수 있습니다. alias는 별명이라는 뜻이고 이렇게 별명을 붙이는 행위를 aliasing(앨리어싱)이라고 합니다.
alias한 내용들을 “~/.gitconfig” 에서 확인하실 수 있는데요. 해당 파일에 들어가서 직접 설정하셔도 되고 위에 방법대로 하셔도 돼요.
저는 커밋 로그를 확인할 때 쓰는 명령을 git l 로 따로 설정해놓았는데요. 예전에 어떤 사이트에서 보고 따라 설정한 건데 유용해서 두고두고 쓰고 있어요. 아래 명령어를 쳐서 설정하시면 됩니다!
git config --global alias.l "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit"
이외에도 자신이 쓰고 싶은 커맨드들을 취향껏 설정해서 편하게 사용하시면 됩니다!