2019.08.19 Git 튜토리얼 보며 따라하기 - Tag, Branch(1)
Git Tag
Lightweight 태그와 Annotated 태그로 두 종류가 있다.
1) lightweight tag : 일반적으로 사용하는 가벼운 느낌의 태그
명령어는 git tag NAME
2) annotated tag : 태그를 붙이면서 메타정보들도 같이 포함시킴
명령어는 git tag -a NAME
주의할 것은
태그를 만들었으면 서버에 별도로 Push 해야 하며 브랜치를 공유하는 것과 같은 방법으로 할 수 있다.
특정 태그만을 보내고 싶다면 `git push origin <태그 이름>`
전부 다 보내고 싶다면 `git push origin --tags`
2. Git Branching
1) Merge를 할 때 fast forward란?
Fast Forward는 커밋 그래프에서 뒤쳐진 커밋을 가리키는 포인터를 그저 앞으로 옮겨주는 역할만 한다.
master 브랜치의 A 커밋에서 hotfix 라는 브랜치를 새로 생성해서 B 커밋을 올렸다고 하자.
이 때 master 브랜치는 A 커밋을 가리키고 있는 상태인데 여기에 hotfix 브랜치를 merge한다면 같은 Commit의 줄기를 타고 있는 녀석들이기 때문에 master의 포인터만 새로 생성한 B 커밋으로 옮겨주게 된다.
즉 빠른곳으로(Fast) 보낸다(Forward)
2) git fetch origin
origin/master에 있는 커밋을 A와 B가 각각 clone한 상태에서 둘 다 작업을 시작했고 A는 origin에 Push까지 했다. 하지만 B는 이 사실을 모른다. 그래서 B의 master 브랜치는 clone했던 때의 커밋을 가리키고 있다.
이 때 git fetch origin을 하면,현재 로컬의 저장소가 갖고 있지 않은 새로운 정보가 있으면 모두 내려받고, 받은 데이터를 로컬 저장소에 업데이트하고 나서, origin/master 포인터의 위치를 최신 커밋으로 이동시킨다.
눈여겨 볼 것은, 현재 master 브랜치를 업데이트 시키는 것이 아니고 origin/master의 포인터에 변경을 가하는 것이다.
fetch 명령어는 리모트로부터 변경 가해진 내역들을 모두 불러오는 기능을 수행한다. 단, 현재 작업저장소에 merge까지 하지는 않는다.
git fetch & git merge -> git pull과 같다.
Lightweight 태그와 Annotated 태그로 두 종류가 있다.
1) lightweight tag : 일반적으로 사용하는 가벼운 느낌의 태그
명령어는 git tag NAME
2) annotated tag : 태그를 붙이면서 메타정보들도 같이 포함시킴
명령어는 git tag -a NAME
주의할 것은
git push
를 하더라도 Remote 서버에 자동으로 태그까지 전송하지는 않는다.태그를 만들었으면 서버에 별도로 Push 해야 하며 브랜치를 공유하는 것과 같은 방법으로 할 수 있다.
특정 태그만을 보내고 싶다면 `git push origin <태그 이름>`
전부 다 보내고 싶다면 `git push origin --tags`
2. Git Branching
1) Merge를 할 때 fast forward란?
Fast Forward는 커밋 그래프에서 뒤쳐진 커밋을 가리키는 포인터를 그저 앞으로 옮겨주는 역할만 한다.
master 브랜치의 A 커밋에서 hotfix 라는 브랜치를 새로 생성해서 B 커밋을 올렸다고 하자.
이 때 master 브랜치는 A 커밋을 가리키고 있는 상태인데 여기에 hotfix 브랜치를 merge한다면 같은 Commit의 줄기를 타고 있는 녀석들이기 때문에 master의 포인터만 새로 생성한 B 커밋으로 옮겨주게 된다.
즉 빠른곳으로(Fast) 보낸다(Forward)
2) git fetch origin
origin/master에 있는 커밋을 A와 B가 각각 clone한 상태에서 둘 다 작업을 시작했고 A는 origin에 Push까지 했다. 하지만 B는 이 사실을 모른다. 그래서 B의 master 브랜치는 clone했던 때의 커밋을 가리키고 있다.
이 때 git fetch origin을 하면,현재 로컬의 저장소가 갖고 있지 않은 새로운 정보가 있으면 모두 내려받고, 받은 데이터를 로컬 저장소에 업데이트하고 나서, origin/master 포인터의 위치를 최신 커밋으로 이동시킨다.
눈여겨 볼 것은, 현재 master 브랜치를 업데이트 시키는 것이 아니고 origin/master의 포인터에 변경을 가하는 것이다.
fetch 명령어는 리모트로부터 변경 가해진 내역들을 모두 불러오는 기능을 수행한다. 단, 현재 작업저장소에 merge까지 하지는 않는다.
git fetch & git merge -> git pull과 같다.
댓글
댓글 쓰기