[Git] Log, Diff, Merge, Conflict

박미영·2023년 5월 1일
0

📌Log



- Git Log

Branch 별 변경이력을 볼 수 있음

git log



- Log 실습

- 파일 추가 후 저장
Control + D 키로 입력한 내용 저장





- 파일 수정 후 저장




- Branch 생성 후 이동


dev branch에서 hello.py 내용 수정



- main branch 로그 확인




- dev branch 로 이동 후 로그 확인





📌Git Editor

- Git Editor 설정

--wait 옵션은 command line 으로 VSCode 를 실행시켰을 경우, VSCode 인스턴스를 닫을 때까지 command 를 대기

git config --global core.editor <editorname> --wait





📌Diff

- Git Diff Tool 설정

- Git Configuration 파일 열기

git config --global -e

- Git Diff 설정 추가

[diff]
tool = vscode
[difftool "vscode"]
cmd = "code --wait --diff $LOCAL $REMOTE"



- Git Diff

- Git Diff: Local Branch 간 비교

git diff <branch1> <branch2>
git difftool <branch1> <branch2>



- Git Diff: Commit 간 비교

git diff <commithash> <commithash>




- Git Diff: 마지막 Commit과 이전 Commit 비교

git diff HEAD HEAD^




- Git Diff: 마지막 Commit 과 현재 수정사항 확인

git diff HEAD




- Git Diff: Local and Remote 간 비교

git diff <branch> origin/<branch2>



- Git Graph 확인

현재 폴더를 VSCode 로 열기 위해 아래와 같은 명령어 입력

log_project % code .





📌Merge

- Merge Tool 설정

- Git Configuration 파일 열기

git config --global -e



- Git Merge 설정 추가

[merge]
tool = vscode
[mergetool "vscode"]
cmd = "code --wait $MERGED"



- Git Merge

현재 위치한 Branch 에 다른 Branch 를 병합

git merge <branchname>



📌Conflict

- Merge Conflict

Branch 를 Merge 하는 과정에서 충돌이 날 수 있음
혹은 Push, Pull 하는 과정에서도 충돌이 일어날 수 있음





📌Merge, Conflict 실습

- Merge(1-5)

1. Default Branch 이름 확인 : main or master



2. [master] 에서 conflict.txt 생성 후 commit : This is




3. [master] 에서 Branch 생성 후 이동 : dev



4. [dev] 에서 conflict.txt 수정 후 commit : This is merge test.




5. [master] 에서 [dev] Merge



error가 나지 않고 바로 merge가 된 모습을 확인 할 수 있다.



- Conflict(6-10)

6. [master] 에서 Branch 생성 (이동 X) : dev2



7. [master] 에서 conflict.txt 수정 후 commit : This is conflict test.




8. [dev2] 에서 conflict.txt 수정 후 commit : This is log test.


조금 전 수정한 내용이 아닌 복사해 온 시점의 conflict.txt로 남아있는 모습을 볼 수 있다.



9. [master] 에서 [dev2] Merge : Conflict 발생 확인


자동으로 merger를 실패했으니 수정해달라는 error 안내를 볼 수 있다.



10. Conflict 해결 : This is conflict test.

  • mergetool 실행

  • conflict 난 상황 확인

  • 저장할 내용만 남기고 모두 삭제


  • add, commit

바로 커밋되지 않고 설정한 vscode가 열리면서 conflict 난 상황에 대한 메시지를 띄워준다.
저장 후 종료


  • merge 확인



11. Log 로 확인

파란줄 - master에서 작업한 commit
분홍줄 - dev2에서 따로 작업한 commit
log graph를 보며 두 줄로 따로 작업이 되다가 merge가 되면서 하나로 다시 합쳐지는 모습을 볼 수 있다.




"이 글은 제로베이스 데이터 취업 스쿨 강의를 듣고 작성한 내용으로 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."

0개의 댓글