
아는 게 없지만, 교육부장이라서 동아리 깃 특강을 진행하기로 했다. 어쩔 수 없지만 기왕 맡은 거 제대로 공부부터 시작해보자^^
인프런에서 찾은 짧고 재밌어 보이는 강의를 듣고, 특강 준비의 틀을 잡아보자! 강의에서는 GUI인 깃크라켄을 사용했는데, CLI에서는 어떻게 동작하는지 혹은 더 알아야 할 내용들 위주로 찾아서 정리해보자
버전 관리

다른 사람들과의 협업

다른 사람의 레포에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 해당 레포를 내 레포로 그대로 복제하는 기능.
fork한 저장소는 원본과 연결되어 있다.
: 원본에 변화가 생기면(새로운 commit) 그대로 forked된 레포로 반영 가능
$ git clone
Clone 명령어를 통해(아래의 명령어를 포함한 작업이 수행된다.)
1. 디렉토리를만들고
2. 디렉토리로 들어가고 나서 git init 명령으로 빈 Git 저장소를 만든다.
3. 입력한 URL을 origin이라는(기본값) 이름의 리모트로 추가하고( git remote add)
4. git fetch 명령으로 리모트 저장소에서 데이터를 가져온다.

$ git commit -m [commit message]
$ git push
$ git pull
$ git add [filename or directory name]

$ git fetch [원격저장소 이름] // 원격저장소에 변동사항만을 가져온다

$ git branch // 현재 존재하는 branch들의 리스트들을 확인
$ git branch [branch name] // 새로운 branch를 생성
$ git checkout [branch name] // 다른 branch로 이동
$ git branch -D [branch name] // branch를 삭제
+git branch -v 옵션을 주면 등록된 branch의 상세정보까지 보여준다.
+git checkout -b [branch 이름] 은 새 branch를 생성하고 바로 그 branch로 이동

$ git merge [branch name] // ‘현재'브랜치에서 [브랜치 명]의 변경사항을 병합
$ git branch --merged // merge된 branch만 필터링
$ git branch --no-merged // merge되지 않은 branch만 필터링

master : 라이브 서버에 제품으로 출시되는 브랜치.
develop : 다음 출시 버전을 대비하여 개발하는 브랜치.
feature : 추가 기능 개발 브랜치. develop 브랜치에 들어간다.
release : 다음 버전 출시를 준비하는 브랜치. develop 브랜치를 release 브랜치로 옮긴 후 QA, 테스트를 진행하고 master 브랜치로 합친다.
hotfix : master 브랜치에서 발생한 버그를 수정하는 브랜치.

$ git stash // 변경 내용을 임시 저장
$ git stash list // stash 했던 내용 보기 (stash name 확인 가능)
$ git stash apply // 가장 최근 stash 가져오기
$ git stash apply [stash name] // 특정 stash 가져오기
$ git stash pop // 임시 저장공간에 저장된 파일들을 현재 브랜치에 가져온다.
$ git stash drop // 가장 최근 stash 지우기
$ git stash drop [stash name] // 특정 stash 지우기
$ git stash clear // 모든 stash 삭제

$ git cherry-pick [commit hash]
다른 브랜치에 있는 커밋을 선택하여 현재 브랜치에 적용시킬 때 사용하는 명령어
rebase와 비슷하지만, cherrypick의 경우에는 같은 내용을 갖고 있는 커밋이 여러개 생기기 때문에, 누가 누구를 cherry-picking했는지 모르는 상황이 생길 수도 있다는 문제가 있다.
여러 개의 커밋을 가져올 수도 있다.
$ git cherry-pick commit2a commit2b$ git cherry-pick commit2a..commit2c // 첫번째를 제외하고 끝까지 포함된다.
