일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Django
- 알고리즘
- 백준
- django widget
- MAC
- django ORM
- Baekjoon
- CSS
- js
- web
- 알고리즘 문제
- java
- form
- javascript
- es6
- API
- 알고리즘 연습
- PYTHON
- c++
- 알고리즘 풀이
- DRF
- HTML
- 파이썬 알고리즘
- django rest framework
- Algorithm
- 장고
- 파이썬
- react
- Git
- AWS
- Today
- Total
수학과의 좌충우돌 프로그래밍
06. git branch 생성과 정보확인하기 본문
안녕하세요 강민성입니다.
이번 시간에는 git branch에 대해서 알아보도록 하겠습니다.
branch를 사전에 검색해보면 '식물의 가지' 를 의미합니다.
식물의 가지가 여러 갈래로 뻗어나가는 것 처럼 우리도 git 을 통해서 우리의 파일을
여러 갈래로 나눠서 문제를 해결할 수 있습니다.
다음 이미지는 두 개의 분기로 나눠져서 작업하는 모습으로
이럴 경우에는 branchr가 2개인 상황입니다.
그러면 별 다른 작업 없이도 우리는 하나의 branch를 쓰고 있다고 생각하면 되겠습니다.
그리고 이렇게 초기 브랜치의 이름을 master라고 합니다.
branch가 어떤 느낌인지 살짝 맛봤으니 제대로 알아보도록 하겠습니다.
git branch 를 알아보자
branch 만들기
이번에도 새로운 디렉토리에서 작업을 해보겠습니다.
다시 복습하는 차원에서
mkdir git_branch (새로운 디렉토리 생성)
git init (디렉토리 초기화)
vim test1.txt (test1.txt 생성 , 내용은 1)
git add test1.txt (stage area 에 등록)
git commit -m "1" (repository로 등록, 메세지는 1)
vim test1.txt (내용을 12 로 수정)
git add test1.txt (stage area 에 등록)
git commit -m "2" (repository로 등록, 메세지는 2)
확인해보기 위해 log 를 확인해보면 다음과 같이 두 개의 commit이 잘 올라가 있습니다.
본격적으로 branch와 관련된 명령어들을 알아보겠습니다.
git branch
다음 명령어는 branch 목록을 확인할 수 있는 명령어입니다.
현재는 branch가 초기 branch인 master만 있습니다.
또한 앞에 붙은 *은 현재 해당 branch안에 있다는 의미입니다.
git branch {이름}
branch를 생성할 수 있는 명령어 입니다.
뒤에 입력한 이름을 가진 branch를 생성합니다.
git branch exp
로 exp 라는 이름을 가진 branch를 생성한 후, 목록을 확인해본 결과 exp가 생겼습니다.
git checkout {이름}
다른 branch로 이동하는 명령어 입니다.
해당 이름을 가진 branch로 이동하며 이동 결과, 앞에 붙는 * 의 위치가 바뀌게됩니다.
다음과 같이 branch를 만들면 exp는 만들어지는 순간,
사용자가 존재하던 branch와 같은 상황이 됩니다.
즉 존재하는 파일도, log의 상황도 동일합니다.
이제 exp 에 있는 상태에서 test1.txt의 내용을 123으로 수정하고,
메세지 3으로 commit 해보겠습니다.
exp에서 log 를 확인해보면 예상대로 3개의 commit을 확인 할 수 있고,
master로 checkout 후 파일의 내용 및 log를 확인해보면
commit 3 에 대한 내용을 찾아볼 수 가 없습니다.
이는 branch가 나뉘고 부터는 아예 독립적으로 서로에게 영향을 미치지 않는 걸
확인 할 수 있습니다.
실습은 진행하지 않았지만 유용한 명령어를 몇 가지 더 알려드리겠습니다.
git branch -d {이름}
작업을 끝내서 branch 가 필요가 없거나 잘못 만들 수 있습니다.
이럴 경우에는 다음과 같이 delete 의 약자 d 를 써서 branch 를 삭제해줍니다.
git checkout -b {이름}
git brach {이름} 과 git checkout {이름} 을 합친 것입니다.
branch를 만든 후 그 branch로 바로 checkout 하게 됩니다.
branch 정보 확인하기
branch가 두 개 정도에서 그친다면,
기억하기도 쉽고 헷갈릴 일도 많이 없을 겁니다.
하지만 branch는 점점 일어나고 commit 수도 쌓인다면,
구분하기가 쉽지 않겠죠.
이번에는 각 branch 간의 정보를 비교해보는 방법을 알아보겠습니다.
정보를 비교하기 위해서는 두 branch의 정보가 달라야 할 것입니다.
exp branch에서 3으로 새로운 commit을 하나 해주겠습니다.
과정은 생략합니다.
위에서 봤듯이 git log 를 통해서는 현재 몸을 담고 있는 branch의 정보만을 확인할 수 있습니다.
그래서 뒤에 추가적인 명령어를 붙여줘야 합니다.
git log --branches --decorate
어렵지않은 명령어 이므로 한 번에 두 개를 알아보도록 하겠습니다.
먼저 뒤에 --branches 를 붙여주면 모든 branch의 commit을 확인할 수 있습니다.
또한 --decorate를 통해 어느 branch에서의 commit인지 확인이 가능합니다.
commit의 고유 번호 옆에 (master) , (HEAD -> exp) 가 바로 --decorate 덕분입니다.
아래 log를 해석해보자면,
master branch는 commit이 2까지 진행되었고
exp branch는 commit이 3까지 진행되었으며 , HEAD가 exp 를 가르키므로
현재 exp 안에 있다는 의미입니다.
git log --branches --decoeate --graph
이번에는 뒤에 --graph가 붙었습니다.
의미 그대로 그래프를 그려서 보여주는 역할을 합니다.
좀 더 확실한 그래프를 위해서 새로운 commit을 추가해보겠습니다.
master branch 에서 test2.txt 파일을 만들고 4로 commit을 해줍니다.
master branch에서 git log를 확인하면 다음과 같이 1,2,4
왜냐면 3은 exp 의 commit 이었습니다.
이제 위의 명령어로 그래프를 살펴보면
좌측 편에 branch가 나눠지는 걸 확인할 수 있습니다.
다음으로는 commit 수가 많아지면 한 화면에 안들어올 정도로 많은 버젼들이 생길 것입니다.
이럴 때 불필요한 정보는 최소화해서 확인할 수 있습니다.
git log --branches --decorate --graph --oneline
이번에는 전체적인 정보가 아닌 특정 branch들을 비교하는 명령어를 알아보겠습니다.
git log {이름}..{이름}
log 뒤에 적는 순서에 따라서,
앞에 branch 에는 없고 뒤에 branch에만 있는 commit을 보여주게 됩니다.
따라서 git log master..exp 일 때는
git log exp..master 일 때는 다음과 같은 정보를 확인할 수 있습니다.
좀 더 자세하게 내부적으로 들어가서 두 branch 간의 코드도 비교할 수 있습니다.
git diff {이름}..{이름}
아래 주어진 코드를 읽는 법은 저번 포스팅에서 다뤘었기에 자세한 설명은 생략하도록 하겠습니다.
마무리
아직 git에 대하여 아는게 많이 없는 초보지만,
git으로 협업을 하는데 있어서 branch를 사용하니 편리한 점이 많았습니다.
하지만 그 만큼 잘 모르고 사용할 경우에 branch끼리 꼬이고
해결을 못해서 더 애먹는 경우도 있으니
잘 숙지하시고 도움이 되시길 바랍니다 :)
'git' 카테고리의 다른 글
08.git stash, 책갈피처럼 사용해보자 (0) | 2019.02.09 |
---|---|
07.git merge, 그 종류와 충돌 해결 (0) | 2019.02.09 |
05. git의 원리(2) commit, status의 원리 (0) | 2019.02.06 |
04. git의 원리(1) gistory와 add의 원리 (0) | 2019.02.05 |
03.git 변경사항 확인 및 과거로 돌아가기 (0) | 2019.02.04 |