본문 바로가기
Git

[Git] diff, fetch

by qoth_0 2023. 12. 13.
728x90
반응형

git diff와 fetch

  • git diff
    • git diff <commit> <commit2>
      • 두 커밋간 차이점 비교
      • commit1을 기준으로 commit2와의 비교시 차이점 출력
  • git feth origin main
    • origin의 데이터를 로컬로 가져오되 병합은 하지 않는것

      → staging과 working directory의 변경은 없음

    • FETCH_HEAD는 git fetch 명령어를 마지막으로 실행했을 때 원격 저장소에서 가져온 브랜치의 최신 커밋을 가리키는 참조
    • ex)git fetch origin main
    • 현재 checkout 돼 있는 main과 origin main과의 차이가 있을 경우 차이점을 담은 참조 데이터 fetch_head라는 곳에 생성
    • git diff origin origin/main으로 차이점을 참고하여 git merge origin main후에 파일수정하고 다시 push

실습

로컬 파일 수정
git commit
파일 내용 추가 후 다시 commit (비교할 commitID만들기)

8a097과 b42985 비교

git diff

두 커밋의 차이점을 알려줌

이상태로 새로운 파일(text5)을 origin에서 만들고 git push

git push실패

pull 하면 로컬에 text5.txt 생성됨

git log를 보면

merge한 commit이 생성됨(88b11)

git push하면 적용 완료

git pull 작업의 단계

  • git fetch와 git merge를 동시 실행하는 것과 같음
  • 만약 merge가 실패되면 fetch만 완료
  • commit한 상황에서 git push origin main을 했는데 충돌 에러가 난다면

    방법 1.

    git pull → 바로 병합 직전 상황

    방법 2.

    git fetch origin main으로 fetch_head생성

    → git diff main fetch_head로 main과 fetch_head를 비교

    차이 확인 가능

    → git merge fetch_head (현재 checkout 되어있는 branch와 병합)

    충돌되는 라인 확인

    → 충돌 제거 후 add, commit, push하면 됨

    충돌제거
    add, commit, push
    충돌 제거한 상태로 올라감

728x90
반응형

'Git' 카테고리의 다른 글

[Git] stash  (0) 2023.12.18
[Git] case별 git pull  (1) 2023.12.15
[Git] 취소 상황  (0) 2023.12.12
[Git] pull과 충돌  (0) 2023.12.11
[Git] 기본 명령어  (0) 2023.12.11