git에서는 branch를 사용하여 버전을 여러 갈래로 가지처럼 나눌 수 있다.
예를들어, 소프트웨어를 개발할때 여러 개발자가 각각 새로운 기능을 추가하고, 버그를 수정할 것이다.
즉, 여러 개발자가 동시에 코드를 수정한다. 분리된 영역에서..
이런식으로 master 브랜치를 중심으로 여러 가지를 치며 새로운 기능을 만든다든가,
버그를 수정하면서 각각의 버전을 만든다.
branch가 잘 완성되면, master branch로 병합해서 최종 배포한다.
git branch
일단, branch를 연습하기 위해서 git_branch 폴더를 만들고, 해당 폴더에서 버전관리를 시작하기 위해서 git init를 해주었다.
그리고 f1.txt를 생성하여 a를 입력 후 1번째 커밋, f1.txt를 수정하여 b를 추가입력한 후 2번째 커밋을 했다.
git branch를 입력하면, 현재 사용중인 브랜치와 나머지 브랜치들을 볼 수 있다.
master브랜치 옆에 *가 보이는데, 이것은 현재 사용중인 브랜치라는 뜻이다.
아직 다른 브랜치를 생성하지 않아서 master브랜치만 보이는 모습이다.
branch 생성
현재 2번째 커밋에 위치해 있고, 여기서 exp라는 브랜치를 생성해보자.
브랜치는 git branch <브랜치 이름>으로 생성한다.
그리고 git branch를 입력해서 exp브랜치가 잘 생성되었는지 확인해보자.
이제 기본 브랜치였던 master브랜치에서 exp브랜치로 들어가보자.
다른 브랜치로 들어가려면 git checkout <들어가고싶은 브랜치> 를 입력하면 된다.
그리고 git branch입력해서 exp브랜치로 들어가졌는지 확인해보자.
방금 전에는, master브랜치에 있었지만 이제는 exp 브랜치로 들어온 것을 알 수 있다.
그리고 master브랜치의 2번째 커밋에서 exp브랜치를 만들었으니, 내용또한 2번재 커밋과 같다!
이제 exp브랜치에서 f1.txt에 c를 추가하고 3번째 커밋을 해보자.
지금까지의 상황을 그림으로 표현하면 이렇다.
여기서 다시 master브랜치로 돌아가서 f1.txt파일을 수정한 후, 4번째 커밋을 해보자.
아까처럼, git checkout master로 master브랜치로 들어가고,
master브랜치에 있던 f1.txt를 1을 추가하며 수정한다. 그리고 add하여 4번째 커밋을 한다.
master브랜치에서 4번째 커밋을 한 지금까지의 상황을 그림으로보면 이렇다.
각 branch의 차이점을 보자
- git log <브랜치1>..<브랜치2> : 브랜치1에는 없고 브랜치2에는 있는 것
- git log -p <브랜치1>..<브랜치2> : 브랜츠1에는 없고 브랜치2에는 있는 것 (소스의 차이)
- git diff <브랜치1>..<브랜치2> : 브랜치1과 브랜치2의 차이
이 그림으으로 위 명령어들을 입력함으로써 어떻게 될지 더 쉽게 이해해보자.
master브랜치는 1, 2, 4이고 exp브랜치는 1, 2, 3이다.
git log master..exp는 master브랜치에는 없고 exp브랜치에는 있는 것을 알려준다.
위의 그림에서처럼 exp는 현재 master브랜치가 갖고있지 않은 3커밋을 가지고있다.
master에는 없고 exp에는 있는 3커밋을 보여준다.
그렇다면 git log exp..master을 입력한다면, exp에는 없고, master에는 있는 것이니 4커밋이 나올 것이다.
exp에는 없고 master에는 있는 4커밋을 보여준다.
git log -p <브랜치1>..<브랜치2> : 브랜치1에는 없고 브랜치2에는 있는 것 (소스의 차이)
git log -p exp..master을 해서 exp브랜치에는 없고 master브랜치에는 있는 것을 소스의 차이까지 보여준다.
이 그림에서 보면, 현재 exp는 3커밋째고, master은 4커밋째다. 그리고 exp의 내용은 abc, master의 내용은 ab1이다.
git log -p exp..master을 한다면 exp에는 없고 master에는 있는 4커밋과, 그리고 exp에는 없는 1이 나올 것이다.
git diff <브랜치1>..<브랜치2> : 브랜치1과 브랜치2의 차이
git diff exp..master을 입력해서 둘 사이의 어떤 차이가 있는지 알아보자.
입력 해본결과 -1 , +c가 적혀있는데, 이는 master에 있던 1이 exp에는 없고, master에는 없는 c가 exp에는 있다!
라는것을 보여준다.
이 그림을 보면 지금 master의 4커밋에는 ab1, exp의 3커밋에는 abc가 있음.
exp에는 master에 있는 1이 없고 master에는 없는 c가 있다. 확인 끝!
'Git 학습 > 학습중' 카테고리의 다른 글
Git - branch 병합하기 (merge) (0) | 2022.12.28 |
---|---|
Git - reset을 사용해서 이전 커밋으로 돌아가자 (0) | 2022.12.26 |
Git - git log <커밋아이디>, diff <커밋아이디>..<커밋아이디> (0) | 2022.12.13 |
Git - 파일을 수정하고 commit해서 차이점 보기 (1) | 2022.12.13 |
Git - add / commit (0) | 2022.12.13 |