Git 명령어


서론

이 장은 GitHub 사용하는 방법과 명령어에 대해서 설명한다

목차

  1. Repositoray 연결
  2. 사용하는 Branch 확인
  3. Branch 생성/전환
  4. Branch 삭제
  5. Branch 정보확인
  6. Branch의 차이 보여주기
  7. Branch Merging
  8. Merge의 고찰
  9. 원격 저장소 파일 삭제
  10. 원격 저장소 파일 수정
  11. 서버와 동기화
  12. Reset 하기
  13. Reset 복구하기
  14. Stash
  15. git diff
  16. kdiff3
  17. Push
  18. 커밋 메시지 변경

Repositoray 연결

$ git init
# 원격저장소 주소에 대한 별명 -> origin 
$ git remote add origin https://github.com/0000/0000
$ git remote -v

사용하는 Branch 확인

// 로컬 저장소의 브랜치 목록
$ git branch  
// 원격 저장소의 브랜치 목록
$ git branch -r 
// 로컬+원격 모든 브랜치 목록
$ git branch -a 

Branch 생성/전환

# branch 생성
$ git branch {name}

# branch 전환
$ git checkout {name} 

# branch 생성 및 전환 
$ git checkout -b {name}
Switched to a new branch {name}

Branch 삭제

// 로컬에서 브랜치 삭제하기 명령어 
git branch -d localBranchName(로컬의 브랜치 이름)

// 원격에서 브랜치 삭제하기 명령어
git push origin --delete remoteBranchName(원격 브랜치 이름)

Branch 정보확인

# 모든 branch에 대한 정보를 보여준
$ git log --branches --decorate

현재 우리는 exp에 있다(HEADexp)

master branch는 f1..2 메시지가 있는 곳이 최신상태의 commit이다 (master)

이 후 checkout master 를 하고 f3.txt를 만들고 그 안에 a라고 입력 후 add&commit을 했다.

그리고 아래 명령어를 입력하면 다음과 같이 나온다.

# graph로 표현된다
$ git log --branches --decorate --graph

# 한줄 graph로 표현된다
$ git log --branches --decorate --graph --oneline

Branch의 차이 보여주기

# master에는 없고 exp에 있는 것
$ git log master..exp
# 소스코드까지 보여줌
$ git log -p master..exp
# exp에는 없고 master에 있는 것
$ git log exp..master 
# 소스코드까지 보여줌
$ git log -p exp..master 
# 전체차이
$ git diff master..exp

Branch Merging

Master에서 exp와 병합하려 한다면(exp의 내용을 master에 옮긴다) Branch가 Master인 상태에서 병합해야 한다.

$ git merge exp

Master는 이제 exp의 내용들을 다 가지고 있지만 exp는 마스터가 작업했던 f3..a라는 파일을 가지고 있지 않다. exp에도 master와 똑같이 만들어주기 위해서는 branch가 exp인 상태에서 master를 병합해야 한다.

$ git checkout exp
$ git merge master

이제 exp를 삭제하면 끝난다. 삭제하게 되면 아래와 같이 나타난다.

Merge의 고찰

fast forward방식의 Merge는 commit을 생성하지 않는다.

그 외의 recursive방식은 Merge commit을 생성한다.

원격 저장소 파일 삭제

main.py 는 파일 이름

$ git rm --cached -r main.py
$ git commit -m "rm main.py"
$ git push origin main

원격 저장소 파일 수정

pull을 통해 repository를 다운받고 로컬에서 수정한 후

$ git add .
$ git commit -m "name"
$ git push origin main

서버와 동기화

$ git fetch -p origin

Reset 하기

$ git reset --hard {commit id}

Reset 복구하기

$ git reset --hard ORIG_HEAD

Stash

stash는 추적되고 있는 파일에 대해서만 숨겨지기가 가능하다.

$ git stash # 작업한 내용을 숨긴다
$ git stash apply # 작업한 내용을 다시 보여준다

git diff

$ git diff # working copy와 index의 내용을 비교

kdiff3

$ git config --global merge.tool kdiff3
$ git mergetool

Push

origin(원격저장소)의 master라는 branch에 push 하라

$ git push origin master

커밋 메시지 변경

$ git commit --amend

특정 폴더만 로컬 및 원격 레포지토리 삭제

$ git rm -rf <folder_name>
$ git commit -m "delete folder"
$ git push origin master

로컬 레포지토리 및 원격 레포지토리 초기화

$ rm -rf .git
$ git init
$ git add --all
$ git commit -m "Initial commit"

원격 레포지토리 초기화

$ git remote add origin <your-remote-repo-url>
$ git push -u origin master --force

$ git init .
# 작업을 한 파일이 있음
$ git remote add origin https://~~~~
$ git push -u origin main