본문 바로가기
기타/Git

[Git] Push

by 코딩하는 랄로 2024. 1. 17.
728x90

git push

로컬 브랜치에서 작업한 내용을 리모트 저장소(쓰기 권한이 있는)에 반영하기 위해서는 git push 명렁어를 사용한다. git push 명렁어를 사용하지 않으면 리모트 저장소에는 반영되지 않기 때문에 리모트에 전송하지 않고 로컬에만 두는 비공개 브랜치를 생성하여 운영하는 것도 가능하다.

 

또는 협업을 위해서 특정 브랜치만 전송하는 것도 가능하다. git push 명렁어를 사용하여 브랜치의 내용을 전송하기 위해서는 전송하고 싶은 리모트 저장소의 이름과 브랜치명을 추가로 입력해주면 된다.

git push < remote > < branch >

 

git push 명렁어는 입력받은 브랜치가 리모트에도 존재할 때는, 해당 브랜치로 내용을 전송하여 merge 하지만 입력한 브랜치가 존재하지 않으면 리모트에 브랜치를 새로 생성한 후 해당 브랜치로 내용을 전송한다.

 

 

 

 

다른 브랜치로 push하기

git push 를 통해 로컬에서 새로 생성한 브랜치에서 작업한 내용을 push하게 되면 리모트에도 해당 브랜치와 이름이 같이 브랜치가 생성이 된다고 하였다. 이 때 생성한 로컬 브랜치의 이름을 example이라고 한다 하였을 때, 해당 브랜치는 push 한 후, refs/heads/example:refs/heads/example 로 확장된다.

 

이것은 로컬의 example 브랜치는 리모트의 example 브랜치로 업데이트 된다는 것을 뜻한다. 그렇기 때문에 git push 명렁어에 branch 부분에 아래와 같이 사용하여도 된다. ( 두 개가 같은 의미!! )

git push origin example   ===  git push origin example:example

 

만약 리모트의 다른 브랜치로 push 하고 싶다면 : 뒤에 오는 리모트 브랜치의 이름을 변경해주면 된다.

git push < remote > < local_branch:remote_branch>

 

 

 

리모트 브랜치

원격 저장소를 fetch 하게 되면 서버의 브랜치를 추적하기 위한 리모트 트래킹 브랜치가 생성이 된다. 예를 들어 위에서 git push를 통해 example 브랜치가 리모트에도 생기게 되고 이를 다른 곳에서 fetch 하게 되면 해당 로컬에 origin/example 이라는 이름의 트래킹 브랜치가 생기게 되는 것이다. ( 여기서 origin은 리모트 저장소의 이름임!! )

 

여기서 주의할 점은 해당 브랜치가 생겼다해서 로컬에서 그 브랜치로 checkout하여 작업을 할 수 있다는 의미가 아니다. 리모트 트래킹 브랜치는 리모트의 브랜치를 추적하기 위한 브랜치이기 때문에, 만약 해당 브랜치가 추적하는 부분에서 작업을 하고 싶다면 새로 브랜치를 만들어서 작업을 해야 하는 것이다.

 

그를 위해서는 아래와 같이 브랜치를 만들면 된다.

git checkout -b example origin/example

 

이렇게 하면 origin/example에서 시작하여 수정할 수 있는 example 로컬 브랜치가 만들어진다.

 

 

 

 

 

reference : pro git

728x90

'기타 > Git' 카테고리의 다른 글

[Git] remote tracking branch  (1) 2024.01.11
[Git] branch workflow  (0) 2024.01.09
[Git] branch 관리  (1) 2024.01.09
[Git] Conflict 기초  (2) 2024.01.08
[Git] Merge 기초  (0) 2024.01.04