AI 공부하는 도비

대학원생이 AI, NLP등을 공부합니다

코딩

[Git 명령어] branch, commit, stash

공부하는 도비 2020. 7. 18. 20:23

브랜치란? 같은 폴더 속 다른세상

*브랜치 생성

: 작업내용을 대표하는 키워드로 branch명을 생성한다.

$ git checkout -b [branch-name]

 

*master로 다시 이동

$ git checkout master

 

*브랜치 삭제

$ git checkout master //master 브랜치로 변경

$ git branch -d [branch-name]

 

 

현재활동확인하기

*현재 소스파일 상태(status) 확인

$ git status

 

*소스파일 수정한 내용 확인하기

$ git diff

만약 변경된 내용이 없거나 add를 한 뒤라면 아무것도 나오지 않는다

 

 

add란? 수정내역(commit)을 만들기 전 준비작업

*add하기

$ git add [파일명]

또는 $ git add . 

 

*add명령 취소하기

$ git reset

다음 게시글에서 자세한 내용 확인

 

 

commit이란? 소스파일 수정내역

*commit하기

$ git commit -m "commit message"

또는 $ git commit -sm "commit message"

-s 옵션 포함시 라이센스 서명을 의미하는 Signed-off-by 내용을 commit message 안에 포함한다.

 

*commit 삭제하기

$ git reset --hard HEAD~1

HEAD~1: 가장 위에서 첫번째 내용을 삭제

 

*commit 수정하기

$ git commit --amend

가장 최신 commit을 수정한다.

reset --soft옵션으로 삭제된 commit의 내용이 최신 commit에 흡수된다.

수정하고 나면 commit ID가 바뀌게 된다.

 

*내가 작성한 commit 확인하기

$ git show

 

*commit 제출 준비하기

$ git push origin [branch-name]

push는 내가 작성한 commit을 나의 Fork 저장소 GitHub에 업로드해서 내가 만든 수정내역(commit)을 제출(pull-request) 준비하는 과정이다.

push 이후에 GitHub 홈페이지에서 pull request를 진행한다.

+ 오픈소스 프로젝트에서 merge는 충분한 issue&conversation을 하고 한다.

 

 

stash & checkout

*수정내용 잠시 저장(stash)해두기

$ git status //수정한 파일 확인

$ git stash //수정한 내용 잠시 저장

$ git status //현재 소스폴더 상태 확인(수정분없음을 확인)

$ git stash pop //잠시 저장해둔 내용 복구

$ git status //복구된 수정한 파일 확인

 

+ stash는 리스트로 관리할 수도 있다.

 

*수정한 파일 복구하기(checkout을 사용)

$ git checkout -- [파일명]

파일수정한 내용을 최신역사를 기준으로 복구한다. checkout은 local git 저장소에서 "가져오다/대출받다"의 의미이다.

local git저장소를 도서관이라고 생각하면 checkout [파일명]으로 파일명에 해당하는 책을 대출해온다고 생각하면 된다. 

 

파일 복구하기(checkout) vs 수정내용저장(stash)의 차이점

checkout은 수정한 내용을 원래의 것으로 덮어쓰는 것이고 stash는 수정한 내용을 잠시 스택에 저장하는 것이라고 생각하면 된다. 그래서 chekout은 이전의 수정한 내용을 다시 복구할 수 없지만 stash는 자유롭게 저장했다가 불러오기가 가능하다.

 

 

나의 Fork 저장소와 오픈소스 GitHub저장소 설정

*오픈소스 공식 GitHub 프로젝트 URL을 upstream으로 등록하기

$ git remote add upstream [URL]

 

*확인하기

$ git remote -v

origin: 나의 Fork 저장소 GitHub URL

upstream: 오픈소스 공식 GitHub URL

 

'코딩' 카테고리의 다른 글

[Git 명령어] rebase, rewind, reset  (0) 2020.07.18
nano 편집기 사용  (0) 2020.07.18
[Git 명령어] Git 설정하기  (0) 2020.07.18
[Git 명령어] 프로젝트 읽기  (0) 2020.07.18
[프로그래머스 lv1] 문자열 가운데 글자 찾기  (0) 2020.07.11