본문 바로가기

Dev/TOOLS 도구

[Git&GitHub] Git & GitHub 관련 개념 총정리 2탄 - 응용편

728x90
반응형

본 내용은 부스트캠프의 이고잉님의 Github 특강 내용을 토대로 작성되었습니다

 

Git 기본 명령어 정리

  • git config --global alias.l "log --oneline --all --graph”
    • git의 log를 보여주는 명령어를 단축어로 설정하자!
    • 이렇게 설정하면 git l 만 입력해도 상세한 내용을 확인할 수 있음

 

  • git status: 커밋하지 않은 수정된 파일이 있는지 확인
    • 빨간색으로 출력 → 아직 stage에 올라가지 않은 파일
    • 초록색으로 출력 → stage에 올라간 파일 (하지만 아직 커밋되지 않음)

 

  • M: Modified — 파일이 수정되었음
  • U: Untracked — 한번도 add된 적이 없음 (git이 관리한 적 없음)

 

  • git add 파일명 : 파일을 stage에 올리기
  • git commit -m “커밋 메세지” : stage에 올라온 파일들을 commit
  • git commit -am “커밋 메세지" : modified 파일을 모두 stage에 자동으로 올린 뒤 commit (untracked 파일들은 auto adding이 불가능함)
    • add: untracked → tracked
    • -a: tracked만 adding해주는 옵션

 

  • 중요한 정보가 담긴 파일(예: config file)은 함부로 commit하면 안된다! → git이 자동으로 무시하도록 처리해주는게 좋다!
    • .gitignore : 무시하고자 하는 파일들의 이름들을 적어주는 파일
    • ignore 파일에 적어줌으로써 파일이 status에 더 이상 나타나지 않도록 할 수 있음
    • ignore 파일은 프로젝트 내 일종의 정책이기 때문에 commit해야함!

 

  • 그렇다면 보안이 필요하지만 팀원끼리 꼭 공유해야하는 파일은 어떻게 할까? → template 파일을 생성하여 commit한다!
    • config.txt
    user@mail.com: dongyeon
    userpwd: 1234
    
    • config.txt.template
    user@mail.com: USER_ID
    userpwd: USER_PWD
    

 

  • git revert : 선택한 버전을 취소한 새 버전을 만들어줌
    • 하지만 conflice를 유발할 수도 있기 때문에, 조심해서 사용해야 함
    • 가능한 마지막 버전만 취소할 때 사용하는 것 권장
  • git reset --hard 커밋아이디: 커밋을 취소하고 특정 커밋 시점으로 head가 가리키는 main을 옮김
    • reset의 옵션별 차이점: https://opentutorials.org/module/4032/24533
    • checkout : HEAD를 바꾼다 — 과거로 시간여행
    • reset: HEAD가 가리키는 Main Branch를 바꾼다 — 현재로 돌아오는 시간을 바꿈
    • 이 떄, reset을 함으로써 특정 파일에 가리키는 branch가 하나도 없어지면 삭제된 것 처럼 보임 (실제로 삭제 X 깃은 모두 백업해두었음! 단, 아무도 바라보지 않는 파일은 로컬에만 있음)
    git reset:
    if attached HEAD:
    	HEAD의 branch가 이동
    else:
    	checkout 시간여행
    

 

  • git reflog : 커밋, 체크아웃 등 모든 작업활동을 기록한 내용을 확인할 수 있음
  • git commit --amend -m 새로운커밋명: 마지막 커밋의 이름을 바꾸는 명령어
    • 이때, 원본을 수정하면 안되기 때문에 새로운 커밋 ID가 할당됨
    • 이전 작업의 커밋 ID를 확인하고 싶으면 git reflog를 사용하여 아이디 확인

 

  • git push : 로컬 저장소의 변경 내역을 원격 저장소에 반영하도록 업로드
  • git pull: 원격 저장소의 업데이트 내역을 로컬 저장소로 다운로드 및 반영
    • pull == fetch + merge
    • fetch는 원격 저장소의 변경사항 및 업데이트 내역을 다운로드
    • merge는 다운로드 받은 변경사항을 현재 branch에 병합
    • pull은 fetch와 merge를 한 번에 수행하는 명령어임!
    • pull의 기본 merged 전략이 not merge인 경우에는 git config pull.rebase false 설정을 해주면 됨

 

  • git push --set-upstream origin branch명: 로컬 저장소의 branch를 원격 저장소에 업로드하기 위함
  • pull request
    • 작업이 완료된 sub branch를 main branch에 병합하기 위해 관리자에게 요청하기
    • 관리자는 코드를 리뷰하고, request를 승인할 수 있음
    • request가 승인되면 sub branch가 main branch에 합쳐짐
    • 로컬 저장소에서는 main으로 checkout하고 pull로 원격 저장소 가져와서 병합하여 상태를 동기화
    • 기능 개발을 요청한 issue에서 # 태그를 사용하여 pr 작업본을 연결할 수도 있음!

 

TIP of Git

  • 작업은 가능한 pull을 받고 빠르게 작업 후에 바로 push 하기 ! ! !
  • Conflict를 최소화하는 노하우를 만들자!
  • 동료와 작업 파트 및 파일 나누기

 

복습 튜토리얼 순서

  1. 원격 저장소 만들기
  2. 저장소 복제 (로컬 저장소)
  3. README.md 파일 생성 및 커밋
  4. push
  5. README 파일에 ‘시간여행 작성
  6. HEAD를 옮겨서 ‘시간여행’ 작성 이전 시점으로 이동
  7. 다시 원래대로 돌아옴
  8. reset을 사용하여 커밋 취소
  9. git reflog를 사용하여 취소한 커밋 되돌리기
  10. 변경 내용을 commit 후 원격 저장소에 push
  11. 새로운 로컬 저장소 생성 (원격 저장소 복제)
  12. 두 개의 로컬 저장소에서 같은 파일 수정
  13. 한 개의 로컬 저장소에서 먼저 commit 및 push
  14. 다른 로컬 저장소에서 pull — conflict 발생! conflict 해결 후 push
  15. 먼저 commit한 로컬 저장소에서 pull로 다시 원격 저장소의 업데이트 내용 받아와 병합하기
728x90
반응형