서론
이 장은 GitHub 사용하는 방법과 명령어에 대해서 설명한다
목차
- Repositoray 연결
- 사용하는 Branch 확인
- Branch 생성/전환
- Branch 삭제
- Branch 정보확인
- Branch의 차이 보여주기
- Branch Merging
- Merge의 고찰
- 원격 저장소 파일 삭제
- 원격 저장소 파일 수정
- 서버와 동기화
- Reset 하기
- Reset 복구하기
- Stash
- git diff
- kdiff3
- Push
- 커밋 메시지 변경
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에 있다(HEAD→exp)
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
Comment