git 명령어 정리

git 명령어 정리

Contents

1. 저장소 만들기

1.1 로컬 저장소 만들기

로컬에 저장소를 만들고자 하는 위치에 폴더를 만든 후, 해당 위치에서 bash 창을 열어 아래 명령어를 입력한다. ($표시가 있는 부분을 입력)

$ git init
Initialized empty Git repository in D:/00_git/gitTest/iTshirt-cat/

위 명령어를 실행하면 [.git] 폴더가 생성된다. [.git] 폴더에서는 버전정보와 원격 저장소 주소 등을 관리한다. git init 명령어는 새로운 git 저장소를 초기화한다. 따라서 이미 초기화되어 있는 저장소에서 git init을 입력해도 아무런 일이 일어나지 않는다. git init을 할 때, git init -b main이라고 입력하면 main이라는 브랜치를 초기화하며 로컬 저장소를 만든다. (git 설치과정에서 기본 브랜치 이름을 지정해 놓으면 git init만 해도 자동으로 브랜치가 초기화된다.)

1.2 사용자 정보 등록하기

버전관리를 위해 아래와 깉이 사용자 정보를 등록하여야 한다. (global 대신 local과 system 옵션도 가능하다. 궁금하면 찾아보기..)

$ git config --global user.email "user-email-address"
$ git config ==global user.name "user-name"

등록된 사용자 정보는 아래 명령어로 확인할 수 있다.

$ git config user.email
$ git config user.name

참고로 git config --list 명령을 통해 사용자 정보 뿐만 아니라 git의 설정 값들을 함께 확인할 수 있다.

1.3 커밋하기

앞에서 git 저장소를 만든 폴더 내에 README.md 파일을 만든다. (예시임. [.gitignore] 파일을 포함하여 아무 파일이나 여러 개 만들어도 됨.)
아래 명령어를 입력하여 새로 만들어진 파일을 스테이징한다.

$ git add README.md

하위 폴더를 포함하여 현재 폴더 내 모든 변경 사항을 스테이지 영역에 올리고 싶다면 아래 명령어를 사용하면 된다.

$ git add .

스테이지 영역에 있는 업데이트 내용에 대한 설명을 적고 커밋한다. (-m은 message의 약어)

$ git commit -m "Add README.md"
[master (root-commit) e8a613b] Add README.txt
1 file changed, 1 insertion(+)
create mode 100644 README.txt

1.4 원격 저장소에 push 하기

앞에서 커밋한 내용들을 원격 저장소에 올려야 한다. 이를 위해 github.com 등에서 원격저장소를 하나 만든다. 그리고 bash 창에 아래와 같이 앞에서 만든 로컬 저장소에 연결할 원격 저장소 정보를 입력한다.

$ git remote add origin "repo URL"

이때, repo URL에 저장소 주소를 입력하며, 쌍따옴표는 없어야 한다. Bash 창에 URL을 붙여넣고자 할 경우에는 마우스 오른쪽 버튼을 이용하자.

이제 원격 저장소의 브랜치 명을 정해준다. 여기서는 test라는 이름으로 브랜치를 만든다.

$ git branch -M test

마지막으로 git push 명령을 통해 원격저장소에 커밋들을 백업한다.

$ git push origin test

위 명령에서는 원격 저장소의 test 브랜치를 현재 로컬에서 추적하고 있지 않기 때문에 origin test라고 명시적으로 브랜치 명을 적어 주었으나 현재 해당 브랜치를 추적하고 있다면 git push만 입력해도 된다.

2. 원격 저장소 내려받기

  • git clone 저장소주소 .: 원격 저장소를 로컬에 복제 (마지막에 한 칸 띄고 마침표를 찍어주어야 현재 폴더에 바로 복제함. 마침표가 없으면 하위 폴더를 새로 만들어 복제. 저장소주소 다음에 저장할 폴더이름 지정 가능(없으면 새폴더를 만듦.))
  • git fetch: 원격 저장소의 변경사항을 로컬에 가져오지만 현재 작업 중인 로컬 브랜치에 자동으로 병합하지는 않음. (원격 저장소에 변경된 내용이 있는지 확인하는 목적)
  • git pull: 원격 저장소의 변경사항을 가져와 로컬 브랜치와 병합 (현재 추적 중인 브랜치를 가져옴)
  • git pull 브랜치명: 명시된 브랜치의 원격저장소 내용을 현재 로컬 브랜치로 병합 (이렇게 명시적으로 브랜치 명을 적을 경우에는 반드시 원하는 브랜치로 체크아웃 한 후에 실행하여야 함.)

3. 자주쓰는 git 명령어

  • git help 명령어: 해당 명령어의 도움말 표시
  • git init: 로컬 저장소 만들기
  • git remote add 원격저장소이름 원격저장소주소 원격저장소 등록
  • git remote -v: 원격저장소 목록 확인
  • git clone 저장소주소 새폴더명: 저장소 복제
  • git add 파일명: 파일을 스테이지 영역에 추가
  • git add .: 모든 변경사항을 스테이지 영역에 추가
  • git commit -m "message": 스테이지에 있는 파일들을 message라는 커밋메시지와 함께 커밋
  • git commit --amend -m "새로운 커밋 메시지": 방금 커밋한 메시지 수정하기
  • git push -u 원격저장소별명 브랜치 이름:원격저장소에 지정된 브랜치로 업로드. -u 옵션으로 업스트림(추적브랜치로) 등록. 그 이후에는 git push만 해도 됨. (git은 이전에 설명된 업스트림 브랜치로 사용)
  • git push --force: 강제 푸시
  • git pull: 원격 저장소의 변경사항을 로컬에 반영. 현재 지정된 업스트림 브랜치만 정보만 받아옴. (참고로 pull = fetch+merge)
  • git fetch: 원격 저장소의 브랜치와 커밋들을 로컬 저장소와 동기화 (로컬 파일 내용이 바뀌지는 않음.)
  • git merge 브랜치명: fetch로 확인된 원격 저장소의 업데이트 내용을 로컬 저장소에 반영
  • git log: 커밋 히스토리 확인 (원격 저장소가 아닌 로컬 저장소 기준, -n <숫자> 옵션을 통해 최근 n개만 확인 가능)
  • git log --oneline --graph --all decorate: 로그를 간결하게 보여주는 옵션들 (직접 쳐보길..)
  • git status: 상태 정보 확인 (업데이트 상태 등)
  • git status -s: git status보다 짧게 요약해서 상태를 보여줌. (변경사항이 많을 때 유용)
  • git checkout 커밋체크섬: 원하는 commit 되돌리기 (되돌아가고 하는 커밋의 아이디 앞 7자리를 입력)
  • git checkout -: 최신 커밋으로 돌아가기 (현재 브랜치)
  • git reset 파일명: 지정 파일을 스테이지에서 내리기 (파일의 수정사항은 유지되고 unstaging만 함.)
  • git reset: 스테이지에 있는 모든 파일 내리기
  • git reset --soft 커밋체크섬: HEAD를 지정한 커밋으로 이동. 작업디렉토리 파일들은 변경되지 않음. 이전에 스테이징된 변경사항들이 그대로 스테이징 상태로 유지.
  • git reset --hard 커밋체크섬: HEAD를 지정한 커밋으로 이동하면서 작업 내용도 함께 리셋. (커밋체크섬 대신 2번 이전 커밋으로 돌아가고 싶다면 HEAD~2라고 해도 됨.)
  • git config --global core.editor "code --wait": visual studio code를 기본 에디터로 설정
  • git branch: 로컬저장소 내 브랜치 목록 확인 (-v 옵션 추가하면 커밋도 함께 확인)
  • git branch -r -v: 원격저장소에 있는 브랜치 목록과 커밋 확인 (-v 없으면 목록만 확인)
  • git branch 브랜치이름: 브랜치 생성
  • git checkout 브랜치이름: 해당 브랜치로 전환
  • git checkout -b 브랜치이름: 브랜치를 생성함과 동시에 그 브랜치로 전환
  • git branch -f 브랜치이름 커밋체크섬: 해당 커밋에서 브랜치 생성
  • git branch -d 브랜치이름: 특정 브랜치 삭제
  • git branch -D 브랜치이름: 브랜치 강제 삭제
  • git switch 브랜치이름: 브랜치 전환
  • git switch -c 브랜치이름 커밋체크섬: 특정 커밋에서 브랜치를 생성하고 동시에 전환
  • git merge 대상브랜치: 현재 브랜치와 대상 브랜치를 병합 (master 브랜치에서 git merget feature/A와 같이 사용)
  • git rebase 브랜치이름: 현재 브랜치의 커밋들을 대상 브랜치에 재배치
  • git revert 커밋체크섬: 커밋 되돌리기 (reset 명령어에는 되돌아갈 커밋을 적는 반면 revert에는 취소할 커밋을 적는다.)
  • git tag -a -m 태그주석 태그명 브랜치or체크섬: 지정된 브랜치or체크섬에 지정된 태그명으로 주석이 있는 태그를 생성.
  • git tag --list: 태그 리스트 확인
  • git tag --delete 태그명: 태그 삭제 (--delete 대신 -d 사용 가능)
  • git push 저장소이름 태그명: 원격 저장소에 태그 업로드 (e.g., git push origin v1.0)
  • git diff: 최근 커밋과 작업 디렉토리 비교하기
  • git diff --staged: 최근 커밋과 스테이지 영역 비교하기
  • git diff commit1 commit2: commit1과 commit2 비교하기 (commit1 기준으로 commit2에서 달라진 점)
  • git stash -m "message": message라는 이름으로 stash (임시저장, tracked 상태의 파일만 stash가 가능함.)
  • git stash list: stash list 조회
  • git stash apply <스태시>: 임시저장된 작업을 작업디렉토리에 적용 (git stash list로 확인된 리스트의 가장 앞에 나오는 이름을 <스태시>에 대입)
  • git stash drop <스태시>: 임시저장된 작업 삭제
  • git stash clear: 임시저장된 모든 작업 삭제

4. 자주쓰는 shell 명령어

  • pwd: 현재 폴더 위치 확인
  • clear: 터미널 창 지우기
  • ls: 현재 디렉토리의 파일과 폴더 확인 (list)
    • -a: 숨김 파일/디렉토리 표시
    • -l: 파일/디렉토리 상세정보 표시
    • -r: 정렬 순서를 거꾸로 표시
    • -t: 파일 작성 시간 순으로 내림차순으로 표시
  • cd: 홈 디렉토리로 이동 (or cd ~)
  • cd 경로: 특정 디렉토리로 이동
  • cd ../: 상위 디렉토리로 이동
  • mkdir new_directory: 디렉토리 생성
  • rmdir empty_directory: 비어 있는 디렉토리 삭제
  • rm filename: 파일 삭제
  • rm -r directory_name: 하위 디렉토리와 파일 모두 삭제 (rm은 기본적으로 파일만 삭제하기 때문에 -r 옵션을 넣어줘야 함.)
  • cp source destimation: source를 destination에 복사 (디렉토리 복사는 cp 다음에 -r 옵션 추가)
  • mv filename target_directory/: 파일 복사
  • echo 텍스트: 입력 텍스트를 표시
  • cat 파일명: 파일 내용 출력
  • cat file1 file2: 두 파일 내용을 순서대로 출력
  • cat file1 >> file2: file1의 내용을 file2의 끝에 연결
  • cat file1 file2 > file3: file1과 file2를 file3으로 합친다.
  • cat -n 파일명: 출력 결과에 줄번호 추가
  • exit: 터미널 종료