git rm -rf [파일명] # 파일 삭제
rm -rf .git #.git 폴더 삭제, 워킹 디렉토리 초기화
Branch 원리
- Head -> refs/heads/master -> 가장 최신 commit의 object ID
- 이를 통해서 가장 최신 commit을 알 수 있다.
- 이전 commit은 parent를 따라 가면서 탐색할 수 있다.
새로운 branch 생성
- refs/heads/[새로운 branch]
- branch = 일반 txt 파일
- checkout 시 HEAD가 해당 branch를 가르킴
Branch 충돌 해결: Merge
- 각 branch에서 다른 파일을 수정한 후, merge하면 자동으로 합쳐준다.
- 동일한 파일을 수정해도 다른 위치를 수정하면 자동으로 합쳐준다.
- 하지만 동일한 파일&같은 부분을 수정하면 충돌이 발생한다.
- 충돌이 발생한 파일을 열어서 파일을 수정해줘야 함.
======= : 구분자
<<<<<< HEAD : 현재 branch 내용
>>>>>>[다른 branch] : 다른 branch 내용
git reset&checkout
git reset --hard [commit 주소]
- reset == head를 바꾸는 작업
- refs/heads/master 가 가르키는 파일이 돌아가고 싶은 commit 파일로 바뀜
- logs/refs/heads/master: master branch에서 일어나는 사건들을 기록하는 폴더
- ORIG_HEAD: 현재 branch의 최신 commit을 저장
reset 취소하기
git reset --hard ORIG_HEAD
git reflog #log 확인 가능
- reset을 취소하려면 ORIG_HEAD로 reset 해주면 된다.
git checkout
git checkout [commit 주소]
- checkout에 commit 주소를 적으면 HEAD가 해당 commit을 바로 가르키게 된다.
- (마지막 사진을 보면 master branch에서는 refs/heads/master를 가르키는 것을 볼수 있음.)
git reset 옵션
working directory = working tree = working copy |
index = staging area = cache |
repository = history = tree |
로컬에서 파일 수정 | add | commit |
git reset --soft | ||
git reset --mixed | ||
git reset --hard |
git reset --[soft|mixed|hard] [commit 주소]
- 옵션에 따라 삭제되는 정도가 다르다.
- mixed(default) : 옵션을 지정하지 않으면 mixed로 동작
git diff # working copy 내용과 index의 내용을 비교하는 명령
git merge & conflict
kdiff3 설치 시 The merge tool kdiff3 is not available as 'kdiff3' 발생 시
kdiff3를 사용해서 conflict 파일을 수정할 수 있다.
3 way merge
Current | Base | Other | 2 way merge | 3 way merge |
A | A | ? | ||
B | B | B | B | B |
1 | C | 2 | ? | ? |
D | D | ? |
- ?=conflict
- 2 way merge: base를 보지 않고, cur과 other branch를 merge하는 방식
- 3 way merge: base를 참고해서 cur과 other branch를 merge하는 방식 //good
'CS' 카테고리의 다른 글
[생활코딩] 지옥에서 온 Git - Github (0) | 2021.10.06 |
---|---|
[생활코딩] 지옥에서 온 Git - 원격저장소 (0) | 2021.10.02 |
[생활코딩] 지옥에서 온 Git - Branch&Merge 원리 (0) | 2021.09.25 |
[생활코딩] 지옥에서 온 Git - Git 원리 (0) | 2021.09.17 |
[Computer vision] 의료영상 분석 강의 필기 (0) | 2021.08.17 |