Git & Github 내용정리 (1)

허찬·2022년 3월 2일
0

Web Development

목록 보기
1/2
post-thumbnail

※ 이 포스트는 생활코딩 운영자 이고잉 님의 'Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문' 책을 읽으면서 중요한 내용을 정리해 둔 것입니다.

GitGithub는 개인적으로 진행하는 프로젝트는 물론이고, 동료 개발자들과의 협업과 심지어는 오픈 소스 프로젝트까지 개발자로서 커리어를 이어 나가겠다고 결심한 사람들이면 기본 소양으로 알고 있어야 할 도구이다.

지금까지 컴퓨터학과 학생으로서 2년 동안 공부를 했지만, Git에 대해 알음알음 알기만 했지 제대로 공부해 본 적도 없고, 따라서 제대로 활용하지도 못 했다. 따라서 깃과 깃허브의 기능들을 완벽하게 숙지해 두기 위해, 'Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문'이라는 책을 구매했다.

깃이 제공하는 핵심 기능은 크게 버전 관리(Version Control) 백업(Backup) 협업(Collaboration)으로 나눌 수 있다 (책 설명). 이번 포스트에서는 책을 읽으면서 '버전 관리'와 '백업'에 대해 주요 내용(명령어 등)을 정리해 둔 내용을 다뤄 보고자 한다.



📁 깃으로 버전 관리하기

git init     - 깃 초기화하기 (이제부터 해당 디렉터리에서 깃을 사용할 수 있습니다)

git status     - 깃 상태를 확인

git add ??     - 수정한 상태를 스테이징하기 (?? : 파일명)

git commit -m ""     - 깃에서 파일을 커밋 (즉, 버전을 만든다) ("" : 커밋 메시지)

git commit -am ""     - 스테이징과 커밋 한꺼번에 처리하기

git log     - 저장소에 저장된 버전 확인 (커밋 기록 자세히 살펴보기)

git diff     - 방금 수정한 파일과 저장소에 있는 최신 버전의 내용 비교 (변경 사항 확인)

git log --stat     - 커밋에 관련된 파일까지 함께 살펴보고 싶을 때

git commit --amend     - 방금 커밋한 커밋 메시지 수정하기

git checkout -- ??     - 작업 트리에서 수정한 파일 되돌리기 (되돌린 내용은 다시 복구할 수 없다.)

git reset HEAD ??     - 파일을 스테이지에서 내리기 (최근 깃은 조금 다른 것 같다. 참고)

git reset HEAD^     - 가장 최근에 한 커밋 취소 (스테이지에서도 내려감, 작업 트리에만 남게 됨)

git reset 복사한 커밋 해시     - 최근 커밋을 복사한 커밋 해시로 리셋한다 (이후에 만들었던 커밋은 삭제)

git revert 복사한 R5 커밋 해시     - R5 버전을 지우는 대신, R5에서 변경했던 이력을 취소한 새 커밋을 만든다


  • git reset 명령의 옵션 살펴보기
    1. --soft HEAD^ : 최근 커밋을 하기 전 상태로 작업 트리를 되돌립니다.

    2. --mixed HEAD^ : 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌립니다. 옵션 없이 git reset 옵션을 사용할 경우 이 옵션을 기본으로 작동합니다.

    3. --hard HEAD^ : 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌립니다. 이 옵션으로 되돌린 내용은 복구할 수 없습니다.


📁 깃과 브랜치

git branch     - 브랜치를 만들거나 확인하는 명령

git branch apple     - apple이라는 새로운 브랜치를 만든다

git log --oneline     - 한 줄에 한 커밋씩 나타내 준다. (커밋을 간략히 확인할 때 편리하다)

git checkout apple     - apple 브랜치로 이동 (이동하는 것을 '체크아웃한다' 라고 말함)

git add .     - 현재 저장소에서 수정된 파일을 한꺼번에 스테이지에 올릴 수 있다.

git log --branches     - 각 브랜치의 커밋을 함께 볼 수 있다.

git log --graph     - 브랜치와 커밋의 관계를 좀 더 보기 쉽게 그래프 형태로 표시한다.

git log master..apple     - master 브랜치에는 없고 apple 브랜치에는 있는 커밋

git log apple..master     - apple 브랜치에는 없고 master 브랜치에는 있는 커밋

git init     - 새로운 디렉터리를 만들고 저장소를 초기화하는 과정을 한꺼번에!

git merge o2     - master 브랜치에서 o2 브랜치를 가져와 병합한다. (:wq 눌러서 저장)

git merge o2 --no-edit     - 브랜치를 병합할 때 편집기 창을 열지 않고 깃에서 지정하는 커밋 메시지를 그대로 사용하겠다면

git branch -d o2     - -d 옵션 : o2 브랜치를 삭제한다.

  • HEAD : 여러 브랜치 중에서 현재 작업 중인 브랜치를 가리킨다.

  • 같은 문서의 다른 위치를 수정했을 때 병합하기 : 이상 없이 잘 된다.

  • 같은 문서의 같은 위치를 수정했을 때 병합하기 : 에러가 뜬다. 고치고 싶은 대로 내용을 고치고 다시 스테이징 → 커밋 해 주면 된다.

  • 삭제한 브랜치는 같은 이름으로 다시 브랜치를 만들면 예전에 작업했던 내용이 그대로 나타난다. 즉, 완전히 저장소에서 없애는 것이 아니라 깃의 흐름 속에서 감추는 것이라 생각하면 된다.

브랜치에서 checkout과 reset의 작동 원리

  • git checkout 명령을 사용하면 HEAD를 제어해서 브랜치를 이동할 수 있다.

  • git reset 명령을 사용하면 HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정할 수 있다.
    이때, 어떤 브랜치에 있는 커밋이든 지정할 수 있으며, 명령을 수행한 뒤 브랜치와 연결이 끊긴 커밋은 삭제된다.

수정 중인 파일 감추기 및 되돌리기 - git stash

git stash     - 커밋하지 않은 수정 내용을 어딘가에 보관하려면

git stash list     - 감춘 파일들의 목록을 확인한다. (자료구조 : 스택)

git stash pop     - stash 목록에서 가장 최근 항목을 되돌린다.

git stash apply     - stash 목록에서 가장 최근 항목을 되돌리지만 저장했던 내용은 그대로 남겨둔다.

git stash drop     - stash 목록에서 가장 최근 항목을 삭제한다.

  • 브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야 할 경우!

  • 계속 커밋하라는 메시지가 나타나기 때문에 번거롭기도 하고, 실수로 다른 파일들과 함께 커밋이 될 수도 있다. 이때 사용하면 Good.



📁 깃허브로 백업하기

  • 지역 저장소와 원격 저장소를 연결하려면 깃허브의 저장소 주소를 알고 있어야 한다.

git remote add origin 복사한 주소 붙여넣기

  • 원격 저장소(remote)에 origin을 추가(add)하겠다
  • 여기에서 origin은 깃허브 저장소 주소를 가리킨다.
  • 이렇게 지역 저장소를 특정 원격 저장소에 연결하는 것은 한 번만 하면 된다.

git push -u origin master

  • 지역 저장소의 브랜치를 origin, 즉 원격 저장소의 master 브랜치로 push하라는 명령
  • -u 옵션은 지역 저장소의 브랜치를 원격 저장소의 master 브랜치에 연결하기 위한 것, 처음에 한 번만 사용하면 된다.

git push

  • 다시 파일을 푸시할 때
  • 앞서 지역 저장소의 브랜치와 origin의 master 브랜치를 연결했으므로, 다음 번에는 더 간단히 푸시할 수 있다.

git pull origin master

  • origin(원격 저장소)의 내용을 master 브랜치로 가져온다


깃을 통한 협업 관련 내용도 호다닥 공부해서 프로젝트 진행 시에 원활한 협업이 가능하도록 하자.

profile
나 허찬

0개의 댓글