파게로그

branch 만들기 본문

콤퓨타 왕기초/Git

branch 만들기

파게 2020. 10. 24. 12:35

branch 생성

 

vim f1.txt // a
git add f1.txt
git commit -m "commitMsg1"
vim f1.txt // b(append)
git commit -am "commitMsg2"

// 자동으로 add하지만, 아직 버전 관리가 시작되지 않은, 즉 한 번도 add하지 않은 파일은 자동으로 add되지 않음
git log

git branch // * master // git 사용 순간부터 기본 branch, 즉 master를 사용 중임
git branch exp // 새로운 branch 만듦
git branch

// exp
* master
git checkout exp // master에서 checkout하여 exp로 들어가는 느낌으로 생각하면 편함
git branch

// * exp
master

ls -al
git log

// master과 exp는 같은 상태. branch를 생성하면, 그 branch는 현재 속해 있는 branch의 상태를 그대로 복사함

vim f1.txt // c(append)

git commit -am "commitMsg3"

git log

git checkout master
git log // 1 2
cat f1.txt // ab

git checkout exp
git log // 1 2 3
cat f1.txt // abc. 어느 branch에 속해 있느냐에 따라서 파일의 내용도 다르게 보임

vim f2.txt
git commit -am "commitMsg4"

git checkout master // f2.txt가 사라짐
git checkout exp // f2.txt가 다시 나타남

git branch
git log // 무엇이 master이고 무엇이 branch인지 구분할 수 없음
git log --branches --decorate // repository의 모든 branch를 보여줌
// master: master의 최신 커밋이 2, exp: exp의 최신 커밋이 4, HEAD: 현재 branch
git log --branches --decorate --graph // 그래프로 시각화
git log --branches --decorate --graph --oneline


branch 차이점 보기

 

git log master..exp // master에는 없고 exp에는 있는 것을 보여줌
git log exp..master // exp에는 없고 master에는 있는 것을 보여줌
git log -p exp..master // 내용까지 필요할 때

git diff master..exp // 각 branch의 현재 상태를 비교할 수 있음(앞은 master, 뒤는 exp)


branch 병합

 

* 7081152 (HEAD -> master) 5
| * b774b3e (exp) 4
| * 4b3ef66 3
|/
* ec1d988 2
* 9c9ebe0 1

 

exp를 master로 옮기기 = commit 3, commit 4의 내용을 master branch도 갖게 하기

 

git checkout master // 목적지에서 해야 함!
git merge exp
// 해당 내용의 commit이 만들어지고, 이 commit은 master의 최신 commit이 됨. 부모가 2개가 됨.

 

* 1f91a45 (HEAD -> master) Merge branch 'exp'
|\
| * b774b3e (exp) 4
| * 4b3ef66 3
* | 7081152 5 // exp는 3,4를 갖지만 5를 가지지못함
|/
* ec1d988 2
* 9c9ebe0 1

 

exp가 master가 작업한 commit 5의 내용도 포함하도록 하려면?

 

git checkout exp
git merge master

 

* 1f91a45 (HEAD -> exp, master) Merge branch 'exp'
// exp는 master와 똑같은 commit을 최신 commit으로 가짐
// exp는 master와 똑같이 3,4, 그리고 5를 공통으로 가짐
|
| * b774b3e
| * 4b3ef66 3
* | 7081152 5 // exp는 3,4를 갖지만 5를 가지지못함
|/
* ec1d988 2
* 9c9ebe0 1

 

이제 exp는 필요 없으니까 지워도 된다.


git checkout master
git branch -d exp

'콤퓨타 왕기초 > Git' 카테고리의 다른 글

Git을 연습할 수 있는 사이트  (0) 2020.11.04
commit에 대한 기본적인 명령어들  (0) 2020.10.22
Comments