관리 메뉴

개발자의 스터디 노트

git cli 명령어 정리 본문

자바/인스턴트코드

git cli 명령어 정리

박개발씨 2022. 7. 7. 23:23

git init : 현재 위치에 깃 폴더를 초기화
git config --global user.email "ws0601@naver.com" : git hub 계정 메일 주소를 설정 정보에 담기
git config --global user.name "pws0601" : git hub 계정 이름 설정 정보에 담기
git add README.txt : 커밋에 추가할 파일을 선택
git commit -m "사이트 설명 추가" : 커밋에 상세 설명 추가(큰따옴표 이용)

git add README.txt
git commit -m "사이트 설명 업데이트"

git log : 지금까지 커밋 된 로그 확인
git checkout 커밋ID : 해당 커밋ID로 체크아웃
git checkout - : 최근 커밋으로 체크아웃

git remote add origin https://원격저장소 주소
git push origin master : repository master로 push

Push 토큰
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


git clone https://원격저장소 주소 . : 원하는 위치에 깃 클론하기
git pull origin master : 원격지에서 소스 받아오기


* git 저장소 상태를 알려주는 명령어
git status
git status -s (요약 정보 출력)

*. git 초기화
git init



******************* git 옵션 설정하기 *******************

git config --global <옵션명>
지정한 전역 옵션의 내용을 살펴봅니다.

git config --global <옵션명> <새로운 값>
지정한 전역 옵션의 값을 새로 설정합니다.

git config --global --unset <옵션명>
지정한 전역 옵션을 삭제합니다.

git config --local <옵션명>
지정한 지역 옵션의 내용을 살펴봅니다.

git config --local <옵션명> <새로운 값>
지정한 지역 옵션의 값을 새로 설정합니다.

git config --local --unset <옵션명>
지정한 지역 옵션의 값을 삭제 합니다.

git config --system <옵션명>
지정한 시스템 옵션의 내용을 살펴봅니다.

git config --system <옵션명> <값>
지정한 시스템 옵션의 값을 새로 설정합니다.

git config --system --unset <옵션명> <값>
지정한 시스템 옵션의 값을 삭제합니다.

git config --list
현재 프로젝트의 모든 옵션을 살펴 봅니다.



vs code 로 core.editor 설정하기(맥북)
git config --global core.editor "/Volumes/SourceFiles/어플리케이션/Code.app/Contents/Resources/app/bin/code --wait"



******************* 기본적인 git 명령어 *******************
git add 파일1 파일2 .....
새로 생성한 파일을 스테이지에 추가하고 싶다면 반드시 add 명령을 사용합니다.

git reset [파일명]
스테이지에 있는 파일들을 스테이지에서 내립니다.
워킹트리의 내용은 변경되지 않습니다. 옵션을 생략할 경우 스테이지의 모든 변경사항을 초기화합니다.

git commit
스테이지에 있는 파일들을 커밋합니다.

git commit -a
add 명령을 생략하고 바로 커밋하고 싶을 때 사용합니다. 변경된 파일과 삭제된 파일은 자동으로 스테이징되고 커밋됩니다.
주의할 점은 untracked 파일은 커밋되지 않는다는 것입니다.

git push [-u] [원격저장소별명] [브랜치이름]
현재 브랜치에서 새로 생성한 커밋들을 원격저장소에 업로드합니다. -u 옵션으로 브랜치의 없스트림을 등록할 수 있습니다.
한 번 등록한 후에는 git push만 입력해도 됩니다.

git pull
원격저장소의 변경사항을 워킹트리에 반영합니다. 사실은 git fetch + git merge 명령입니다.

git fetch [원격저장소별명] [브랜치이름]
원격저장소의 브랜치와 커밋들을 로컬저장소와 동기화합니다. 옵션을 생략하면 모든 원격저장소에서 모든 브랜치를 가져옵니다.

git merge 브랜치이름
지정한 브랜치의 커밋들을 현재 브랜치 및 워킹트리에 반영합니다.

커밋 확인해보기(로그 확인)
git log
현재 브랜치의 커밋 이력을 보는 명령어입니다.

git log -n<숫자>
전체 커밋 중에서 최신 n개의 커밋만 살펴봅니다.

git log --oneline --graph --all --decorate
--oneline : 커밋 메세지를 한줄로 요약해서 보여줍니다. 생략하면 커밋 정보를 자세히 표시합니다.
--graph : 커밋 옆에 브랜치의 흐름을 그래프로 보여줍니다. GUI와 유사한 모습으로 나옵ㄴ디ㅏ.
--decorate: 원래는 --decorate=short 옵션ㅇ들 의미한다. 브랜치와 태그 등의 참조를 간결히 표시합니다.
--all : all 옵션이 없을 경우 HEAD와 관계없는 옵션은 보여주지 않습니다.



******************* git 도움말 사용해보기 *******************
git help status
git help commit
git help add




******************* git 원격저장소 *******************
git remote add <원격 저장소 이름> <원격저장소 주소>
- git 원격 저장소 등록
- 원격 저장소는 여러개 등록할 수 있으나 같은 이름을 가진 원격 저장소는 하나만 가질 수 있습니다.
- 통상 첫 번째 원격저장소를 orign으로 지정합니다.

git remote -v
- 원격저장소 목록을 살펴봅니다.

git push
remote 에 소스코드 push

git push -u origin master # push와 동시에 업스트림 지정
- 초기 저장소 연결시 업스트림을 지정해줘야 push가 가능하다

업스트림지정 후 push
git push



******************* git 원격저장소 클론 하기 *******************
git clone <git url>
git clone <git url> <새로운 폴더명>
- 새로운 폴더명 옵션을 사용할 경우 지정한 폴더가 새롭게 생기고 클론 됩니다.

git commit -a : 스테이징 없이 바로 커밋

git pull
- 리모트에서 소스 땡겨오기



******************* git 브랜치 *******************

git branch [-v] 
- 로컬 저장소의 브랜치 목록을 보는 명령으로 -v 옵션을 사용하면 마지막 커밋도 함께 표시됩니다.
- 표시된 브랜치 중에서 이름 왼쪽에 *가 붙어있으면 HEAD 브랜치 입니다.

git branch [-f] <브랜치 이름> [커밋체크섬]
- 새로운 브랜치를 생성합니다. 커밋체크섬 값을 주지 않으면 HEAD로부터 브랜치를 생성합니다.
- 이미 있는 브랜치를 다른 커밋으로 옮기고 싶을 때는 -f옵션을 줘야 합니다.

git branch -r[v]
- 원격 저장소에 있는 브랜치를 보고 싶을 때 사용합니다.
- 마찬가지로 -v 옵션을 추가하여 커밋 요약도 볼 수 있습니다.

git checkout <브랜치 이름>
- 특정 브랜치로 체크아웃할 때 사용합니다. 브랜치 이름 대신 커밋 체크섬을 쓸 수 있습니다.
- 하지만 브랜치 이름을 쓰는 방법을 강력히 권장합니다.

git checkout -b <브랜치이름> <커밋 체크섬>
- 특정 커밋에서 브랜치를 새로 생성하고 동시에 체크아웃까지 합니다. 
- 두 명령을 하나로 합친 명령이기 때문에 간결해서 자주 사용합니다.

git merge <대상 브랜치>
- 현재 브랜치와 대상 브랜치를 병합할 때 사용합니다.
- 병합 커밋(merge commit)이 새로 생기는 경우가 많습니다.

git rebase <대상 브런치>
- 내 브랜치의 커밋들을 대상 브랜치에 재배치 시킵니다.
- 히스토리가 깔끔해져서 자주 사용하지만 조심해야 합니다.

git branch -d <브랜치이름>
- 특정 브랜치를 삭제할 때 사용합니다.
- HEAD 브랜치나 병합이 되지 않은 브랜치는 삭제할 수 없습니다.

git branch -D <브랜치이름>
- 브랜치를 강제로 삭제하는 명령입니다.
- -d 로 삭제할 수 없는 브랜치를 지우고 싶을 때 사용합니다.

git reset --hard <이동할 커밋 체크섬>
- 현재 브랜치를 지정한 커밋으로 옮긴다. 작업 폴더의 내용도 같이 변경된다.

git reset --hard HEAD~<숫자>
- HEAD~은 헤드의 부모 커밋, HEAD~2는 헤드의 할아버지 커밋을 말한다. HEAD~n은 n번째 위쪽 조상이라는 뜻

git reset --hard HEAD^<숫자>
- HEAD^은 똑같이 부모 커밋이다. 반면 HEAD^2는 두번째 부모를 가리킨다. 
- 병합 커밋처럼 부모가 둘 이상인 커밋에서만 의미가 있다.

git rebase <브랜치 이름>
- 현재 브랜치 위에 있는 브랜치위로 재배치
- 빨리 감기 병합이 가능한 위치에서는 빨리 감기 병합을 수행.



******************* git 태깅 *******************

git tag -a -m <간단한 메시지>
- -a 로 주석 있는(annotated) 태그를 생성합니다.
- 메시지와 태그 이름은 필수이며 브랜치 이름을 생략하면 HEAD에 태그를 생성 합니다.
* git tag -a -m "간단한 메시지" v0.1


git push <원격저장소 별명> <태그이름>
- 원격 저장소에 태그를 업로드 합니다.
* git push origin v0.1



******************* git checkout 옵션 *******************

git checkout -b <branche이름>
- branche를 새로 만들면서 해당 브랜치로 checkout
git checkout -b hotfix master
- master 브랜치로부터 hotfix브랜치를 생성하고 hotfix브랜치로 checkout