learn-git-1에 병합을 하기 전에 branch들을 알아보고자 한다. 이 부분부터는 단지 원격 저장소에 내 코드를 보관할 수 있는 용도가 아닌 버전 별로 기록
하기 좋은 내용으로 내가 꼭 배워야 했던 내용들이다.
먼저 배우기 전에 github에 새로운 learn-branch
로 새로운 repo를 만들었다.
위와 같이 새로운 repo를 만들었으면 아래 명령어로 local에서 원격 저장소를 끌어온다.
$ git clone https://github.com/rlwjd31/learn-branch.git
$ git branch [만들 브랜치명]
: git branch feature와 같이 만들면 feature명을 가지는 branch
가 local
에 생성된다.
아래 command로 branch를 만들어보자!!
$ git branch feature
???🤔 그런데 `fatal: not a valid object name: 'master'
Error가 발생한다. 이는 한 번도 commit을 한 적이 없으면 생성이 되지 않는다. 따라서 한 번이상의 commit을 해주면 해결할 수 있다.
text content
내용으로 test.txt
파일을 생성하고 commit까지 해보자
$ echo 'text content' > test.txt
$ git add .
$ git commit -m 'first commit from master'
자 이제 한 번의 commit을 했으니 다시 feature branch
를 만들어보자
$ git branch feature
위에 보이는 것처럼 feature 브랜치를 만들었다.
$ git branch -m [바꿀 브랜치명]
: 만약에 feature branch에서 version1이란 branch명으로 바꾸고 싶다면 git branch -m version1
을 하면 된다.
$ git checkout [이동할 브랜치명]
: 이동할 브랜치가 존재한다면
브랜치를 전환한다. 하지만, 이동할 브랜치가 존재하지 않는다면
branch를 찾을 수 없다는 에러가 발생한다.
$ git checkout -b [이동할 브랜치명]
: -b
옵션은 branch가 존재하지 않는다면 branch를 만들어서 만든 branch로 전환
한다.
$ git push origin [원격 브랜치명]
: 그냥 git branch branchName
은 local에서 branch를 생성하는 것이다. 하지만, 이 명령어는 원격(remote) branch를 생성한다.
위에서 remote repository를 local과 연결하고 새로운 feature
란 branch를 생성하였다. 이 파트에서는 branch들을 확인
하기 위해서 여러 브랜치를 만들어 명령어를 익혀볼 생각이다.
난 아래와 같이 feature1, feature2의 브랜치도 추가로 만들었다.
$ git branch feature1
$ git branch feature2
branch를 만들고 위와 같이 어떻게 확인했을까?
-> git branch [option]
을 이용하여 생성된 branch
들을 확인할 수 있다.
$ git branch [-l]
: local branch들을 보여주며 default option은 -l
이다. -l
옵션은 쓰지 않아도 되며 위의 그림처럼 나온게 된다.
--all과 같으며 local과 remote에 관계없이 모든 branch들
을 보여준다.
👇 option a를 썼을 때
💡 remote branch에
feature
가 뜨는 이유는git push origin feature
로 remote branch를 만들어주었기 때문이다.
local branch를 제외한 remote branch들
을 보여준다.
👇 option r을 썼을 때
따로 feature란 remote branch
를 만들었기 때문에 master
와 feature
remote branch 총 2개의 remote branch가 뜨는 것을 볼 수 있다.
local, remote branch들을 commitId
와 commit message
를 같이 확인할 수 있다.
이는 위의 옵션들과 같이 쓰면 유용하게 쓸 수 있다.
$ git branch -va -> local, remote branch들을 commitId와 commit message와 함께 표시
👇 option va를 썼을 때
branch를 이동하는 명령어는 간단하다. checkout
을 이용하면 된다.
$ git checkout [이동할 브랜치명]
: 브랜치를 바꾼다.
$ git checkout -b [이동할 브랜치명]
: 이는 위에서 미리 소개했던 것인데, 이동할 브랜치명이 존재하지 않는다면
브랜치를 만들고 이동까지 한번에 해주는 명령어이다.
오류를 잡거나 새로운 기능을 추가하기 위해 branch를 만들고 작업이 끝났다면 branch를 삭제하는 것이 필요할 것이다(개인적인 생각..). branch가 너무 많으면 복잡할 듯 하다
$ git branch -d(--delete) [삭제할 브랜치명]
: local branch를 삭제한다. 이 때 주의할 점은 현재 branch에서 현재 branch를 삭제할 수 없으며, 병합을 했다면 삭제가 가능하다 즉, 다른 branch로 옮긴 후 지우고자 하는 branch를 삭제해야 한다.
local branch 제거 예시
$ git branch -d feature2
$ git branch -D branchName: -D옵션은 병합을 하지 않았더라도 브랜치를 삭제한다.
위 명령을 치면 아래와 같이 브랜치가 성공적으로 제거됐다고 한다.
그리고 branch가 잘 삭제되었는지 확인해보기 위해 git branch -l
을 이용하여 다시 한 번 확인할 수 있다.
$ git push origin -d [삭제할 원격 브랜치명]
remote branch 제거 예시
$ git push origin -d feature
위 명령어를 실행하면 아래와 같이 remote branch가 삭제되었다고 한다.
다시 확인해보고 싶으면 git branch -r
을 이용하여 확인할 수 있다.
git branch commands
remove remote branch
show branch list
fatal: not a valid object name: 'master' Error