간단한 Git 명령어들을 노션에 정리한 내용이다.
git init # 깃 저장소를 초기화 한다. .git 파일이 들어감
# 작업 트리: 현재 활동 하고 있는 환경(작업 디렉토리)
# 스테이지: add 하면 스테이지에 올라감
# 저장소: commit 하면 저장소에 올라간다.
git status # 수정된 파일, 커밋해야 되는 파일 등등을 보여줌.
git log # 커밋 내역을 보여줌 여기서 나오는 해시값을 이용해 reset, stash가 가능함(커밋 해시, 최신 버전, 작성자, 로그 등)
git commit -am # 한 번 커밋한 파일은 add를 한 번에 수행 가능함
git diff # 방금 수정한 파일이 저장소에 있는 최신 버전의 파일과 어떻게 다른 지 확인이 가능
git log —stat # 커밋에 관련된 파일까지 볼 수 있음(어떤 파일이 수정되었는지)
git commit —ammend # 방금 커밋한 메시지를 수정할 수 있다.
git checkout — <파일명> # 작업 트리에서 수정한 내용을 되돌려준다.
git reset HEAD <파일명> # 스테이지에서 파일을 내린다.
git reset HEAD^ # 마지막에 한 커밋을 취소하는 방법이다.(커밋도 취소되고 스테이지에서도 내려옴)
—soft HEAD^ # 최근 커밋 전 상태
—mixed HEAD^ # 최근 커밋, 스테이지 전 상태(기본값)
—hard HEAD^ # 최근 커밋, 스테이지, 파일 수정 전 상태
git reset —hard <커밋 해시> # 해당 해시로 head를 옮긴다. 해시 후 커밋은 삭제된다.
git revert <커밋 해시> # 커밋을 삭제하지 않고 보류한 다음 그 전 커밋으로 돌아감.
git branch # 브랜치 확인하기
git branch <브랜치명> # 브랜치 만들기, 현재 브랜치의 작업 내용을 복사하여 새로운 브랜치를 만든다.
git checkout <브랜치명> # 브랜치 사이 이동하기
git log —oneline # 깃 로그 한 줄로 간략하게 표현하기
git log —oneline —branches # 각 브랜치별로의 커밋을 볼 수 있다.
git log —oneline —branches —graph # 각 브랜치의 커밋 연결관계를 점선으로 도식화 하여 볼 수 있다.
git log master..<브랜치명> # 두 브랜치의 커밋의 차이를 알 수 있다. (뒤에 있는 거 기준)
git merge <브랜치 명> # 현재 브랜치에서 다른 브랜치를 병합한다.(현재 브랜치에서 수정한 것이 없다면 빨리 감기 병합이 된다.)
git merge <브랜치 명> → 계속 # 두 브랜치 다 수정되었다면 자동으로 merge commit 메시지가 생기고 커밋된다.
git merge <브랜치 명> → 계속 #
# 충돌이 났을 경우 터미널이 충돌이 난 파일을 알려주고 충돌 난 파일에는 <<<HEAD 현재 브랜치의 내용 >>>>><브랜치명> 병합할 브랜치의 내용이 표시된다. 따라서 그것을 수정하고 merge라는 이름으로 커밋을 다시 하면 된다.
git branch -d <브랜치명> # 브랜치 삭제
git reset <커밋 해시> # 기존 커밋 연결이 삭제되고 커밋 해시의 값이 변경된다.
git stash # 커밋하지 않은 수정 내용을 저장한다.
git stash list # stash 목록을 보여준다.
git stash pop # stash 목록에서 가장 최근 항목을 되돌린다.
git stash apply # stash 목록에서 pop처럼 삭제하지 않고 적용만 시킨다.
# 원격 저장소: 버전 관리 파일들을 쉽게 백업할 수 있으며 다른 사람들과 공동 작업이 가능해진다.
git remote add origin <깃 주소> # 현재 지역 저장소와 원격 저장소를 연결한다.
git remote -v # 원격 저장소와 제대로 연결되어 있는지 확인.
git push # 원격 저장소에 파일 올리기
git push -u origin <원격 브랜치명> # -u를 사용하면 다음에 push할 때는 git push만 사용하면 된다.
git pull origin <원격 브랜치명> # 원격 저장소에서 파일 내려받기(일종의 merge)
git fetch # 원격 브랜치 정보를 가져오는 명령어로 바로 pull로 merge되는 것이 아니라(커밋도 안바뀜) FETCH_HEAD라는 브랜치에 해당 내용을 저장한다. 따라서 git checkout FETCH_HEAD에 가서 바뀐 내용을 확인하고 pull하고 싶은 브랜치에 돌아가 FETCH_HEAD를 머지한다.(확인 후 pull도 가능)
git merge origin/master # 페치한 뒤 병합할 때 원격 master 브랜치에 있는 커밋이라면 다음과 같이 병합
git clone <원격 저장소 주소> # 원격 저장소를 복제하고 지역 저장소도 자동으로 만들어준다.
# 첫 번째 커밋이 아니라면 pull먼저 하는 것이 좋다.
git rebase # 장점 → git flow를 일자로 유지할 수 있다. 이유: 이곳저곳에서 merge하고 pull하는 것이 아니라 일자로 유지되기 때문이다.
git checkout -b f # 브랜치를 만들면서 이동
# pull request 풀 리퀘스트를 누르게 되면 master에 해당 원격 브랜치의 내용이 merge된다.
참조 블로그
https://blog.naver.com/codeitofficial/222011693376 (Git 체크아웃 커밋 이동)
https://kotlinworld.com/280 (깃 체크아웃 커밋 이동)