Git GitHub 설명서 (cheat sheet)

Young·2022년 4월 22일
0

Git GitHub

목록 보기
2/2
post-thumbnail

1. 환경 설정(Configuration)

모든 로컬 저장소에 적용할 사용자 정보를 설정

  • 환경 설정 확인
    git config -l
    git config --global -l

  • 환경 설정 수정
    git config --global --edit

  • 사용자명 / 이메일 설정하기
    git config --global user.name "USER NAME"
    git config --global user.email "USER EMAIL"

2. 저장소(Repository)

저장소(repository) 생성

  • 개발 folder 에서 init 하면 .git 폴더가 생기면서 git 이 설정됨
    git init
    git init [PROJECT_NAME] : 저장소를 생성하고 이름을 정함

특정 파일을 저장소(repository)에서 제외

  • .gitignore 파일에 제외할 파일이나 경로를 지정
*.log
build/
temp-*

github 의 remote repository 연결

  • 원격(remote) 저장소(repository) 조회
    git remote

  • 원격(remote) 저장소(repository) 주소(url)조회
    git remote -v

  • 원격 저장소에 origin 이라는 명칭으로 github 의 repository 가 정의됨
    git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY

  • 원격 저장소 origin 의 구체적인 정보를 확인
    git remote show origin

  • remote repository 를 복사해오기
    $ git clone [복사해올 저장소의 url]
    ex) git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY

# HTTPS 형식
https://github.com/[GitHub 사용자 이름]/[저장소 이름].git

# SSH 형식
git@github.com:[GitHub 사용자 이름]/[저장소 이름].git

참고문서

스테이징(staging area)에 파일 추가

  • 변경된 전체 파일 추가
    git add .

  • 변경된 1개 파일 추가
    git add [파일명]

  • 경로 내의 변경된 파일 추가
    git add [파일명/디렉토리 경로]

브랜치 상태확인

  • 커밋할 수 있는 새로운 파일과 수정된 파일의 목록을 보여줌
    git status

  • 수정하였으나 아직 stage 하지 않은 파일의 변경점을 보여줌
    git diff

  • 두 브랜치의 차이점을 비교
    git diff [first-branch]...[second-branch]

commit 하기

  • editor 로 commit message 작성
    git commit

  • command line 으로 commit message 작성
    git commit -m "COMMIT-MESSAGE"

  • add 하고 commit 을 동시에 한다
    git commit -a -m "COMMIT-MESSAGE"

commit 수정

  • 가장 최근 commit 수정
    git commit --amend

vi 입력 모드로 진입 시

i : 입력시작 (명령어 입력 모드에서 텍스트 입력 모드로 전환)
ESC : 입력종료 (텍스트 입력 모드에서 명령어 입력 모드로 전환)
:q : 저장 안하고 종료
:q! : 저장 안하고 강제 종료
:wq : 저장하고 종료
k : 위로 스크롤 (git log 등에서 내역이 길 때 사용)
j : 아래로 스크롤 (git log 등에서 내역이 길 때 사용)


3. 변경 기록 검토(Log)

commit Log 확인

  • commit history 를 본다
    git log

  • 간단히 커멧 해시와 제목만 보고 싶을 때
    git log --oneline

  • commit의 변경 내용까지 확인
    git log -p

  • 특정 파일의 변경 기록을 보여줍니다(파일명 변경 포함)
    git log --follow [file]

  • 브랜치가 어떤 커밋을 가리키고 있는지 확인 가능함
    git log --oneline --decorate --graph --all
    --all : 모든 브랜치, all을 쓰지 않으면 현재 브랜치만 보여줌
    --decorate : 각 브랜치가 어떻게 위치해 있는지(어떤 커밋을 가르키고 있는지)

commit 전에 변경내역을 확인

  • commit된 파일상태와 현재 수정중인 상태 비교
    git diff

  • commit된 파일상태와 add된 파일 상태 비교
    git diff --staged

  • commit간의 상태 비교하기 - commit hash 이용
    git diff [비교할commit해쉬1] [비교할commit해쉬2]
    ex ) git diff 048171 0c747d

  • commit간의 상태 비교하기 - HEAD 이용
    ex) git diff HEAD HEAD^
    가장 최근의 커밋과 그 전의 커밋을 비교한다

  • branch간의 상태 비교하기 - HEAD 이용
    git diff [비교할branch1] [비교할branch2]
    ex ) git diff feature/test origin/main
    local의 feature/test브런치와 remote의 main branch 비교

4. 파일 변경 / 삭제

버전 관리 중인 파일을 변경 / 삭제

  • 워킹 디렉토리에 있는 파일을 제거하고 삭제한 내역을 stage함
    git rm [파일명]

  • 로컬 파일은 그대로 원격저장소에만 해당 파일 삭제
    git rm --cached [파일명]

  • 파일명을 변경하고 해당 내역을 stage함
    git mv [기존파일 명] [새로운 파일 명]

5. 커밋(commit) 되돌리기

실수한 내용을 지우고 기록을 바꿈

reset : 협업 X

revert : 협업 O

  • reset : 원하는 commit 으로 원복 뒤 이후 내역을 지움
    git reset --hard [돌아갈 커밋 해시]

  • reset 가장 최근 commit 으로 원복
    git reset --hard

commit 삭제 복구!!!

  1. git reflog 명령어로 삭제된 commit id 확인 후
  2. git reset --hard [커밋해시id]
  • revert : 원하는 commit 으로 원복 지금까지 commit 을 그대로 남김
    git revert [돌아갈 커밋 해시]

  • commit 안하고 revert 하기
    git revert --no-commit

  • revert 진행과정시 충돌발생시 직접 conflict를 수정 후
    git revert --continue # 진행하거나
    git revert --abort # 취소할 수 있다.

6. 브랜치(Branch)

브랜치(Branch) 생성 / 이동 / 삭제 / 복구 / 조회

  • 브랜치 생성
    git branch [브랜치명]

  • 브랜치 목록 확인
    git branch

  • 브랜치로 이동
    git swich [브랜치명]

  • 브랜치 생성과 동시에 이동
    git switch -c [브랜치명]

  • 브랜치 삭제
    git branch -d [삭제할 브랜치명]

  • 브랜치 강제삭제
    (다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때는 -d 대신 -D(대분자)로 강제 삭제해야 함)
    git branch -D [강제삭제할 브랜치명]

branch 삭제 복구!!!

  1. git reflog 또는 git reflog | grep [브랜치명] 으로 log확인
  2. git checkout -b [삭제한 브랜치명] [커밋해시id]
  • 브랜치 이름 변경
    git branch -m [기존 브랜치명] [새 브랜치명]

  • 모든 브랜치 그래프로 조회
    git --all --decorate --oneline --graph

브랜치(branch) 합치기

  • 현재(main) 브랜치에 특정 브랜치의 history 병합
    git merge [BRANCH-NAME] : 병합 전 history 남음

  • 현재(특정) 브랜치를 main 브랜치에 history 병합
    git rebase main : 병합 전 history 안남음

  • 병합된 브랜치 리스트 조회
    git branch -a --merged

  • 브랜치 병합을 원복(합치기중 충돌시 중단)
    merge : git merge --abort
    rebase : git rebase --abort

7. 저장소(repository) 변경점 동기화 하기

원격 저장소(의 URL)을 등록하고 저장소 기록을 주고받음

  • 원격 저장소로부터 모든 기록을 받아옴
    git fetch [remote]

  • 원격 브랜치를 현재 사용 중인 로컬 브랜치와 병합
    git merge [remote]/[branch]

  • 모든 로컬 브랜치의 변경점을 GitHub에 업로드
    git push -u [REMOTE-NAME] [BRANCH-NAME]

  • 북마크된 원격 브랜치의 기록을 다운로드하여 변경점을 병합
    git pull

참고

0개의 댓글