try 오픈소스 컨트리뷰트 2기를 수강하면서 정리한 내용입니다
📝 여러가지 명령어들
git diff
: 기존에 있던 파일의 변화내용. 이전에 없던 파일이면 변화가 아니니 결과가 안나타남!git status
: 파일의 add, commit 상태변화 내용. 내가 어디까지 작업했는지 아리까리할때 사용git show
: 가장 최근 커밋의 상세내용을 보여줌!git commit -sm "커밋 메시지"
서명을 포함한 커밋으로git show
로 찍을 경우, 그냥 commit과는 달리 signed-off-by라는 서명이 들어간다!
로그 확인하기
git shortlog
: 로그가 오래된 순서로 찍힌다!git log
: 로그가 최신순으로 찍힌다!git log --oneline
: 최신 순서대로 커밋 메시지만 찍힌다
깨알 용어 설명
add
: 히스토리
commit
: 역사의 한 단위 '블럭'
tree
: 블럭들의 모임이 tree
기타
;
로 연속적인 명령어 수행가능touch
는 새로운 파일 만드는 명령어
로컬에 원격 저장소 등록하기
git remote add origin <원격 저장소 URL>
원격에 푸시하기
git push origin <브랜치명>
commit 수정하기 과정
- 코드 수정
git add
- 그 뒤에
amend
amend란?
git commit —amend
가장 최근 커밋을 수정하는 작업. add한 히스토리를 최근 commit에 덮어씌운다. 커밋 메시지도 수정 가능. amend하고 나면 커밋 아이디도 바뀐다!!
→ amend
를 하고나면 origin에 push할 때 커밋아이디가 달라 충돌이 일어나므로, 이때는 —force
명령어로 강제 밀어넣는다.
❤️ git add, commit 취소하기
git reset <HEAD 위치: 비워놓으면 그냥 add 취소>
add나 커밋한 거 취소하는 명령어
원격에 올라간 커밋을 수정하는 길은 로컬에서 수정 후 -f로 push해주는 것밖에 없다.
⚜️고급과정
프로젝트 fork 떠오기
github에서 원하는 프로젝트에서 fork를 뜬 후
로컬 디렉토리에 repository를 clone
git clone <repo URL>
이 과정에서 굳이 새로운 폴더를 만들 필요 없이, 상위 폴더에서 그대로 clone하면 된다!
pull-request 날리기
- 프로젝트 fork 뜨기 → 포크뜬 프로젝트 로컬에 clone 하기
- 원하는 브랜치에서 코드 작업하기
git add
→git commit
→git push origin <브랜치>
pull-request는 포크뜬 깃헙 홈의 branch 창에서 날린다.
merge하기
git merge <merge해줄 브랜치>
: 먼저 작업내용을 흡수해줄 브랜치로 옮겨간 후, 작업한 브랜치를 합쳐준다
rebase 하기
간단하게 말해, 기존의 base를 업데이트하기 위함. merge와는 다르다!
원격 upstream 추가하기
git remote add upstream <upstream repo URL>
확인은 git remote -v
upstream의 branch 가져오기
git fetch upstream <upstream branch 이름>
해당 브랜치의 내용을 가져와서(fetch
) 그냥 .git/
히스토리에 저장해두는 과정
→ 따라서 어떤 브랜치인지 상관없이, base로 만들길 원하는 내용의 브랜치를 가져온다!
→ 그러면 브랜치의 작업단위나 히스토리가 아주 중요하다
rebase하기
git rebase <rebase할 upstream 브랜치 이름>
중간에 낀 commit 수정하기
- 커밋 감은 후 (
-i
) 상태확인 (status
)rebase —interactive
기능으로 약어는-i
git rebase -i —root : root는 최초 커밋부터 수정할 수 있게 하기 위한 추가 명령어.
2. 수정분 흡수시키기 (—amend
)
3. 감아진 log 풀어주기 (—continue
)
git rebase —continue
누가 코드를 수정했는지 추적하기
git blame <파일명>
커밋 아이디를 통한 코드 기록 추적
git show <commitID>