실습할 때 Git Bash이용
인프런 강의 참고 : https://www.inflearn.com/course/%EA%B9%83-%EC%9E%85%EB%AC%B8/dashboard
- Git 기초
- Merge
- Rebase
1.Git 기초
git init : 이 폴더를 git 폴더로 쓰겠다
git add . : 변경이 일어난 파일만 올린다.(뒤에 "."을 입력하면 변경이 일어난 모든 파일을 올리는 것 ex) git add text1.txt와 같이도 가능) → 완전히 git에 올라가는거 아님
git commit -m "[text]" : git에 올려 영구적으로 기록
reset 명령어에는 soft, mixed, hard가 존재
- soft : 커밋로그 변경하고 싶을 때 사용
- mixed : 작업영역의 내용 변경시 사용
- hard : 직전 commit전 상태로 돌아가고 싶을 때 사용(**완전히 날리는거 쓸 때 조심해야한다.**) → reflog를 사용하면 복구를 할 수 있긴하다.(git reflog 을 사용해 돌아가고 싶은 지점의 log를 확인한 뒤 reset에 있는 hard를 이용해 돌아가면 된다.)
ex) git reset --soft [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력 → git commit --amend -m "[text]" 이렇게 입력하면 바로 log를 바꿀 수 있다.
ex) git reset --mixed [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력
ex) git reset --hard [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력
2.MERGE
fast-forward방식(주로 혼자 작업할 때)

A = C2, B = C3
- A와 B 브랜치가 있다.
- A->B를 머지하려고 한다.
- B가 A 이후의 커밋을 가리키고 있다. (B의 조상커밋이 A이다.)
- A는 단순히 B와 동일한 커밋을 가리키도록 이동한다.
즉, 단순히 포인터를 최신 커밋으로 옮기는 것을 fast-forward 방식이라고 한다.
3-way merge방식(주로 협업할 때)
https://www.zehye.kr/git/2019/11/22/11git_merge_conflict/
참고
3-way merge에서 충돌이 발생하는 경우 : 같은 파일을 수정할 때 발생 할 수 있는데 이와 같은경우에 merge conflict라는 에러를 발생시켜준다 → 이 경우 개발자가 주의해서 코드를 작성해야 한다.(웬만하면 같은 파일은 안 건드리는게 좋다...)


위 사진과 같은 경우 git이 "merge conflict"에러를 발생 시켜 1. 로그인 체크 박스, 2. 로그인 라디오 버튼 중 하나를 선택하라고 에러를 발생 시켜준다. → 에러 수정하고 다시 add, commit 해주면 된다.
3. Rebase
rebase는 말 그대로 (re-base)로 베이스를 재배치한다는 뜻입니다.
merge를 사용하면 히스토리를 볼 때 뿌리가 여러개로 나눠져 있어서 히스토리를 찾아갈 때 보기가 어렵습니다.
rebase는 베이스를 다시 정의함으로써 새롭게 커밋 라인을 정리하여 히스토리를 깔끔하게 볼 수 있게 해줍니다.
인프런 강의 참고 : https://www.inflearn.com/course/%EA%B9%83-%EC%9E%85%EB%AC%B8/dashboard
- Git 기초
- Merge
- Rebase
1.Git 기초
git init : 이 폴더를 git 폴더로 쓰겠다
git add . : 변경이 일어난 파일만 올린다.(뒤에 "."을 입력하면 변경이 일어난 모든 파일을 올리는 것 ex) git add text1.txt와 같이도 가능) → 완전히 git에 올라가는거 아님
git commit -m "[text]" : git에 올려 영구적으로 기록
reset 명령어에는 soft, mixed, hard가 존재
- soft : 커밋로그 변경하고 싶을 때 사용
- mixed : 작업영역의 내용 변경시 사용
- hard : 직전 commit전 상태로 돌아가고 싶을 때 사용(**완전히 날리는거 쓸 때 조심해야한다.**) → reflog를 사용하면 복구를 할 수 있긴하다.(git reflog 을 사용해 돌아가고 싶은 지점의 log를 확인한 뒤 reset에 있는 hard를 이용해 돌아가면 된다.)
ex) git reset --soft [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력 → git commit --amend -m "[text]" 이렇게 입력하면 바로 log를 바꿀 수 있다.
ex) git reset --mixed [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력
ex) git reset --hard [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력
2.MERGE
fast-forward방식(주로 혼자 작업할 때)
A = C2, B = C3
- A와 B 브랜치가 있다.
- A->B를 머지하려고 한다.
- B가 A 이후의 커밋을 가리키고 있다. (B의 조상커밋이 A이다.)
- A는 단순히 B와 동일한 커밋을 가리키도록 이동한다.
즉, 단순히 포인터를 최신 커밋으로 옮기는 것을 fast-forward 방식이라고 한다.
3-way merge방식(주로 협업할 때)
https://www.zehye.kr/git/2019/11/22/11git_merge_conflict/
참고
3-way merge에서 충돌이 발생하는 경우 : 같은 파일을 수정할 때 발생 할 수 있는데 이와 같은경우에 merge conflict라는 에러를 발생시켜준다 → 이 경우 개발자가 주의해서 코드를 작성해야 한다.(웬만하면 같은 파일은 안 건드리는게 좋다...)
위 사진과 같은 경우 git이 "merge conflict"에러를 발생 시켜 1. 로그인 체크 박스, 2. 로그인 라디오 버튼 중 하나를 선택하라고 에러를 발생 시켜준다. → 에러 수정하고 다시 add, commit 해주면 된다.
3. Rebase
rebase는 말 그대로 (re-base)로 베이스를 재배치한다는 뜻입니다.
merge를 사용하면 히스토리를 볼 때 뿌리가 여러개로 나눠져 있어서 히스토리를 찾아갈 때 보기가 어렵습니다.
rebase는 베이스를 다시 정의함으로써 새롭게 커밋 라인을 정리하여 히스토리를 깔끔하게 볼 수 있게 해줍니다.
인프런 강의 참고 : https://www.inflearn.com/course/%EA%B9%83-%EC%9E%85%EB%AC%B8/dashboard
- Git 기초
- Merge
- Rebase
1.Git 기초
git init : 이 폴더를 git 폴더로 쓰겠다
git add . : 변경이 일어난 파일만 올린다.(뒤에 "."을 입력하면 변경이 일어난 모든 파일을 올리는 것 ex) git add text1.txt와 같이도 가능) → 완전히 git에 올라가는거 아님
git commit -m "[text]" : git에 올려 영구적으로 기록
reset 명령어에는 soft, mixed, hard가 존재
- soft : 커밋로그 변경하고 싶을 때 사용
- mixed : 작업영역의 내용 변경시 사용
- hard : 직전 commit전 상태로 돌아가고 싶을 때 사용(**완전히 날리는거 쓸 때 조심해야한다.**) → reflog를 사용하면 복구를 할 수 있긴하다.(git reflog 을 사용해 돌아가고 싶은 지점의 log를 확인한 뒤 reset에 있는 hard를 이용해 돌아가면 된다.)
ex) git reset --soft [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력 → git commit --amend -m "[text]" 이렇게 입력하면 바로 log를 바꿀 수 있다.
ex) git reset --mixed [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력
ex) git reset --hard [log] → log에는 "git log"를 이용해 나온 가고 싶은 시점의 log 입력
2.MERGE
fast-forward방식(주로 혼자 작업할 때)
A = C2, B = C3
- A와 B 브랜치가 있다.
- A->B를 머지하려고 한다.
- B가 A 이후의 커밋을 가리키고 있다. (B의 조상커밋이 A이다.)
- A는 단순히 B와 동일한 커밋을 가리키도록 이동한다.
즉, 단순히 포인터를 최신 커밋으로 옮기는 것을 fast-forward 방식이라고 한다.
3-way merge방식(주로 협업할 때)
https://www.zehye.kr/git/2019/11/22/11git_merge_conflict/
참고
3-way merge에서 충돌이 발생하는 경우 : 같은 파일을 수정할 때 발생 할 수 있는데 이와 같은경우에 merge conflict라는 에러를 발생시켜준다 → 이 경우 개발자가 주의해서 코드를 작성해야 한다.(웬만하면 같은 파일은 안 건드리는게 좋다...)
위 사진과 같은 경우 git이 "merge conflict"에러를 발생 시켜 1. 로그인 체크 박스, 2. 로그인 라디오 버튼 중 하나를 선택하라고 에러를 발생 시켜준다. → 에러 수정하고 다시 add, commit 해주면 된다.
3. Rebase
rebase는 말 그대로 (re-base)로 베이스를 재배치한다는 뜻입니다.
merge를 사용하면 히스토리를 볼 때 뿌리가 여러개로 나눠져 있어서 히스토리를 찾아갈 때 보기가 어렵습니다.
rebase는 베이스를 다시 정의함으로써 새롭게 커밋 라인을 정리하여 히스토리를 깔끔하게 볼 수 있게 해줍니다.