본문 바로가기

카테고리 없음

git 특강 내용 요약

버전 비교/임시저장/되돌리기/브랜치

비교: git diff

작업디렉토리와 repo간의 차이를 보여준다. 변경사항을 stage에 올리면 변경사항을 비교할 수 없다. stage와 repo를 비교하려면 --staged 옵션을 쓰면된다.
커밋 끼리 비교하려면 git diff <커밋1(기준이되는 커밋)> <커밋2(변경이 궁금한커밋)>로 한다. 커밋1에 대해 커밋2가 달라진 것을 보여준다.
* git log --oneline 옵션을 쓰면 커밋의 해쉬아이디를 짧게 일부만 따와서 한줄로 보여준다. 짧은 해쉬값도 긴것과 동등하다.*

작업 되돌리기: 중요할 때 쓰려면 실습이 답

revert와 reset의 차이

revert는 버전을 되돌린 새로운 버전을 만든다.(기록이 남는다. 지금까지의 작업내역에 영향이 없다.)
안전하게, 작업내역을 남기면서 되돌아가고 싶을 때 쓴다.
git revert <취소할 커밋>
reset은 말 그대로 해당 커밋으로 돌아간다.(기록이 안남는다. 지금까지의 작엽내역에 영향을 미친다.)
가독성을 위해 불필요한 커밋 목록을 만들고 싶지 않을 때 쓴다.
git reset --mixed <되돌아갈 커밋>
둘의 대상이 되는 커밋이 다름을 명심하라

reset의 세가지 옵션

버전이 만들어지는 과정:

  1. 변경사항생성(wd)
  2. 스테이지에 추가
  3. 커밋
    soft: 1, 2번은 남는다. wd와 스테이지엔 내가 만들고 올린 변경사항이 남아있다.
    mixed: 1번 만 남는다.
    hard: 작업디렉토리까지 과거로 돌아간다.

변경사항 임시저장 : git stash

  1. 버리자니 아깝고 쓰자니 별로고...
  2. 작업 중에 요구사항이 변경됨

이럴 때 스테이지에 올라간 작업 내용을 따로 임시저장해둘 수 있다.
git stash push -m "내용"을 통해 어떤 작업내역을 임시저장한건지 표시할 수 있다.
git stash list를 통해 임시저장 목록을 볼 수 있다. 0 에 가까울 수록 최신에 저장된 것.

브랜치 관리


포트폴리오에서는 얼마나 커밋메시지를 잘 작성하고 브랜치 관리를 잘 하는지가 중요하다. 브랜치가 없다면 수많은 요구사항들을 위한 개발을 할 때 수정사항을 취합하고 조율하기 매우 힘들 것이다.

  1. 나눈다.
  2. 각자 작업한다.
  3. 합친다.(필요할 때)

브랜치의 이름

브랜치의 이름은 마구잡이로 짓지 않는다. 작업 방식인 flow에 맞추어 짓는데, git flow의 경우 master(main), feature/, release/, hotfix/, 등의 이름을 쓴다.

HEAD

내가 현재 작업중인 브랜치의 커밋을 가리킨다. 보통 해당 브랜치의 최신 커밋을 가리킨다. git checkout 명령은 이 HEAD가 가르킬 브랜치(혹은 커밋)을 바꾸는 것이다. 이렇게 체크아웃 하면 특정 브랜치에서 작업할 수 있도록 작업 환경이 바뀐다.

깃헙을 이용한 협업

깃헙에 올리는 것은 파일이 아니라 버전을 업로드/다운로드 하는 것이다.

clone, push, pull, fetch

clone은 원격 저장소를 복제해 내 로컬 저장소로 만드는 것이다.
push는 내 로컬 저장소 브랜치의 커밋을 원격 저장소에도 반영하는 것이다.
fetch는 원격 저장소의 내용을 가져오기만 하는 것이다.
pull은 패치로 가져온 원격저장소와 로컬저장소의 브랜치를 merg하는 것이다.

일반적인 협업방식: no colaborator, no direct merge // PR

  1. 기여할 저장소를 내 원격 저장소로 포크 하기
  2. 포크한 저장소를 로컬로 클론
  3. 브랜치 생성해서 작업, 커밋
  4. 푸시
  5. 원본 저장소에 PR 보내기

싱크 포크(sync fork)

원본 레포의 어느 브랜치가 내 레포의 해당 브랜치보다 앞서 있다면 업데이트 할 수 있다.
이 과정에서도 충돌이 일어날 수 있다.

충돌은 일상적인 것이다. 겁먹지 마라

PR은 리버트 버튼 누르면 취소된다.