본문 바로가기

Develop/Git

Git 기본

실습할 때 Git Bash이용

 

인프런 강의 참고 : https://www.inflearn.com/course/%EA%B9%83-%EC%9E%85%EB%AC%B8/dashboard

 

  1. Git 기초 
  2. Merge
  3. 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

 

  1. Git 기초 
  2. Merge
  3. 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

 

  1. Git 기초 
  2. Merge
  3. 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는 베이스를 다시 정의함으로써 새롭게 커밋 라인을 정리하여 히스토리를 깔끔하게 볼 수 있게 해줍니다.