alpyrithm_알파이리즘

GIT 공부 및 GIT 명령어 본문

GIT

GIT 공부 및 GIT 명령어

알파이 2020. 7. 18. 11:08

 

GIT 명령어

  • git commit
  • git checkout [브랜치명] : 브랜치 이동 방법
  • git branch [브랜치명] : 새 브랜치를 만드는 방법
  • git merge [브랜치명/A] : 커밋하지 않고 합치기, 현재 가리키는 브랜치에서 브랜치(A)를 합치는 방법
  • git checkout -b [브랜치명] : 브랜치를 만들고 바로 이동
  • git rebase [브랜치명/A] : 현재 가리키는 브랜치를 브랜치(A)의 커밋으로 복사하여 합치기 / git rebase [브랜치명/A] [브랜치명/B] : A(브랜치)에 B(브랜치)를 합치기
    • rebase : 커밋들을 모아 복사한 뒤, 다른 곳에 놓는 것 ==> 커밋의 흐름을 보기 좋게 한 줄로 정리 & 저장소의 커밋 로그와 이력이 깔끔해짐
  • git log : 모든 이력 보기
  • git checkout [브랜치명]^ : 브랜치의 부모를 찾는다. / git checkout [브랜치명]~<num> : 돌아가고 싶은 커밋의 갯수를 ~ 뒤의 숫자로 명시
    • ^ : 한 번에 한 커밋 위로 움직인다.
    • ~<num> : 한 번에 여러 커밋 위로 올라간다.
  • git branch -f <기존 브랜치> [<브랜치를 생성할 위치>] : 기존의 브랜치를 새로운 브랜치로 덮어쓰기
    • git branch -f master HEAD~3 : (강제로) master 브랜치를 HEAD에서 세 번 뒤로 옮김
  • git reset : 커밋하지 않은 것처럼 예전 커밋으로 브랜치를 옮긴다.
    • git reset HEAD~1
  • git reset --hard [브랜치명] : commit한 이전 코드 취소하기
  • git revert : 리버트를 하면 다른 사람들에게도 변경내역을 push 할 수 있다.
    • git revert HEAD
  • git cherry-pick <Commit1> <Commit2> <...> : 복사하고 싶은 Commit들을 복사하는 것
  • git rebase -i [브랜치명]
    • Interactive Rebase : rebase 명령어를 -i와 함께 사용 => vim과 같은 편집기 사용
      • 적용할 커밋들의 순서를 UI를 통해 바꿀 수 있다.
      • 원하지 않는 커밋들을 뺄 수 있다. 이것은 pick을 이용해 지정할 수 있다.
      • 커밋을 스쿼시(Squash) 할 수있다. 즉, 커밋을 합칠 수 있다.
    • 커밋 트리가 깔끔해지는 장점
    • 커밋 트리의 (보이는) 히스토리 수정하는 단점 == 이력 보존이 되지 않음
  • git commit --amend : 커밋 내용을 정정한다.
  • git tag [태그이름] [커밋위치] : 커밋위치에 태그 이름을 붙인다.
    • 커밋위치를 지정해주지 않으면 HEAD가 있는 지점에 태그를 붙인다.
  • git describe <ref> : <tag>_<numCommits>_g<hash>
    • tag : 가장 가까운 부모 태그
    • numCommits : 그 태그가 몇 커밋 멀리 있는지 나타냄
    • hash : 묘사하고 있는 커밋의 해시 나타냄 
    • <ref>에는 commit을 의미하는 그 어떤 것이던 쓸 수 있다. 만약 ref를 지정하지 않으면 지금 체크아웃된 곳을 사용한다. 
  • git clone [git_path/url] : 코드 가져오기, 저장소 복제
  • git fetch : git 서버에서 최신 코드 받아오기
    • 원격 저장소에는 있지만 로컬에는 없는 커밋 다운
    • 원격 브랜치가 가리키는 곳을 업데이트
    • 다운로드하는 단계로 로컬 상태를 바꾸지 않는다.
  • git pull : fetch + merge, 원격 저장소에서 다운로드하고 브랜치를 병합함
  • git push [retmote_name] [branch_name] : 원격 저장소에 업로드하고 원격 저장소에 새로운 커밋들을 합치고 갱신함
  • git pull --rebase : fetch + rebase
  • git checkout -b [브랜치명] [원격브랜치명] : 브랜치명으로 새 브랜치를 생성하고 원격브랜치명을 추적하게 설정
  • git branch -u [원격브랜치명] [브랜치명] : 브랜치명이 원격브랜치명을 추적하도록 설정
    • 브랜치명이 현재 작업하고 있는 브랜치라면 생략 가능
    • git branch -u [원격브랜치명]
  • git push <remote> <place> : 로컬 저장소의 <place>라는 이름의 브랜치로 가서 모든 커밋을 수집한 후 <remote>의 <place> 브랜치로 가서 부족한 커밋을 채워 넣기
  • git push <remote> <source>:<destination> : colon refspec(콜론 참조스펙)을 이용해 커밋의 근원이 되는 source와 목적지가 되는 destination을 다른 인자로 넣음
  • git push <remote> :<destination> : null을 push하는 것으로 삭제함
  • git fetch <remote> <place> : 원격 저장소 <place> 브랜치로 가서 현재 로컬에 없는 커밋들을 가져와 추가
  • git fetch <remote> <source>:<destination>
  • git fetch <remote> :<destination> : <destination>의 브랜치를 로컬에 새로 만든다.
  • git pull <remote> <place> : git fetch <remote> <place> + git merge
  • git pull <remote> <source>:<destination> : git fetch <remote> <source>:<destination> + git merge <destination>

 

 

 

 

 

 

 

 

 

 

 

 

반응형
Comments