깃 명령어 정리 2

Æsir·2023년 5월 1일
0

저번 명령어 정리 1편에 이어서 바로 명령어 정리에 들어가보겠다.

git diff
작업내역을 비교한다.
위의 명령어를 그대로 입력하면, 가장 최근 커밋과 비교하여 현재 디렉토리가 어떤차이가 있는지 비교할 수 있다.

cd.txt를 만들고 커밋한 이후에 디렉토리상으로 cd.txt에 aaaaaaaaa를 수정하여 입력한상황에서 diff를 했을시

diff에 대한 상활별 사용방법은 다음과 같다.

git diff --staged
최근 커밋과 스테이지를 비교한다.
해당 변경점을 git add 명령어로 스테이지로 올린뒤 git diff를 사용하면 위의방법대로 비교가 안되는데 이러한 상황에서 사용한다고 보면된다.


git diff <커밋> <커밋>
커밋끼리의 비교.
순서가중요하다.즉 커밋순서에 따라 출력되는 결과가 다르다는것인데, 순서대로
<이 커밋에 비해><이 커밋은 뭐가다른가> 로 보면 이해가 쉬울것이다.

이와같이 커밋순서차이로 결과값이 다르게나온다.

그리고 윈도우 git bash기준이면 모르겠으나, 맥의 경우 git log사용시 기본출력이 vi로 설정되어있어 esc를 눌러 빠져나오고해야되는 등의 불편한 부분이 있다.

특강들은지 꽤시간이 지났어도 제대로기억한다. 같이 듣고계셨던 수강생분들의 도움으로 해결이가능했다. 해당 해결방법으로는 기본출력을 vi에서 cat으로 변경해주면되는데 해당 명령어를 사용하면된다.

git config --global core.pager cat

작업내용을 되돌리기(revert & reset)

git revert <커밋해시>
취소할 커밋해시가 취소된 새로운 커밋을 생성한다.
뒤에 언급될 reset과 차이점이며, 기존커밋들은 유지한상태에서 해당커밋을 취소한상태의 새로운 커밋을 생성한다.

git reset
버전을 완전히 되돌린다. 3가지 옵션이있다.
soft reset은 저장소로 커밋하기전(커밋만)전까지 되돌린다.
mixed reset은 스테이지로 올리기전까지(add전까지) 되돌린다.
mixed는 git reset의 기본값이다.(아무옵션없이 reset 정의시 옵션이 mixde)
hard reset은 작업 디렉토리까지 포함하여 완전히 되돌려버린다.

hard옵션 예시




작업내용 임시 저장하기

git stash
변경사항을 임시 저장한다.

git stash -m
변경사항을 메세지와 함께 임시 저장한다.

git stash list
임시 저장된 작업 내역을 조회한다.

git stash apply
임시 저장된 작업을 적용한다.

git stash drop
임시 저장된 작업을 삭제한다.(list상에서)

stash는 대개 워킹디렉토리상의 변경사항만 잡아준다고 보면 편하다.

브랜치

버전을 여러개의 흐름으로 관리하는 방법

브랜치가 없다면?

  • 서로의 작업과 전혀 관련없는 부분, 같은 코드를 다르게 수정한 부분이 혼재
  • 일일히 수작업으로 합쳐야된다.
  • 때로는 서로의 코드를 합치다 실수가 생길 수도있다
  • 분기마다 복사본을 준비해야되는 어려움이 생길 수 있다.

브랜치로 버전의 분기를 관리하는 방법

  • 브랜치를 나눈다
  • 각자의 브랜치에 작업한다.
  • (필요시) 나눈 브랜치를 합친다.

브랜치 관련 명령어

git branch
브랜치 목록을 조회한다.

해당명령어이후 브랜치명을 적으면 브랜치명에 맞게 브랜치가 생성된다.

git checkout 브랜치이름
해당 브랜치로 체크아웃한다.

git checkout -b 브랜치이름
해당 브랜치이름으로 브랜치를 생성하고 체크아웃한다.

git branch -d 브랜치이름
브랜치를 삭제한다.
주의할것은 삭제하고자 하는 브랜치에 체크아웃하지 않은상태여야 삭제가능.(빠져나와야됨)

병합 및 충돌해결

git merge 브랜치이름
현재 체크아웃되어있는 브랜치와 해당 브랜치이름의 브랜치를 병합한다.

merge시 two브랜치에만 있던 twofile이 합쳐져, 같이 검색되는것을 볼 수 있다.

충돌발생예시 및 해결방법

  1. main 브랜치상에서 twofile.txt 첫번째라인을 aaa적고 커밋
  2. two 브랜치상에서 twofile.txt 첫번째라인을 bbb적고 커밋

해결방법

  1. vi twofile.txt
    편집기상 충돌부분을 아래와 같이 명시하게된다.
  • HEAD밑의 내용은 현재브랜치인 main브랜치의 내용.
  • bbb는 two브랜치의 내용인것을 알 수 있다.
  • 두 내용중 어떤 브랜치의 내용을 반영할지 직접선별후 다시 커밋하면 해결.

빡센 스케줄관리와 실천의 부재...등등이 화근이되어 이제야올리게되는거같다;

그래도 git 및 github의 경우 향후 프로젝트할때도 매우 중요할테니 꼭 정리하고 싶은 부분이였고 늦게라도 이렇게 올리게 되었다.

profile
백엔드지망생

0개의 댓글

관련 채용 정보