SCM/Git

[Git & GitHub 9] git push, origin, switch

ride-dev 2024. 5. 16. 20:34

git push

git remote 명령어를 통해 원격지로 설정된 git reposiotry에,

git push <remote> <branch>명령어를 사용하여 GitHub에 코드를 올릴 수 있습니다.

(git push 한 branch를 클라우드에서 호스팅합니다)

git push <remote> <branch>

매개 변수를 통해 어디로 push할지 지정합니다.

origin은 일반적으로 원격지를 칭합니다

(push하기 전에, git remote -v 명령어를 사용하여 원격지가 가리키는 장소를 확인합니다)

git remote add origin
https://github.com/Min-SungJo/VCS

git remote -v

git push origin main
git push origin master

local-branch와 remote-branch는 동일하지 않습니다.

git push <remote> <local-branch>:<remote-branch>

일반적으로 local-branch와 동일한 이름을 가진 remote-branch에 push를 진행하지만,

local에 있는 branch와 GitHub에 있는 branch는 동일하지 않습니다.

 

따라서 원한다면 아래 예제처럼,

local-branch와 다른 이름을 가진 remote-branch에 push할 수도 있습니다.

git push origin empty:main

(흔한 경우는 아닙니다)

git push -u <remote> <branch>

git push --set-upstream <remote> <branch>

git push -u 또는 --set-upstream 옵션을 사용하여,

사용자 저장소의 branch를 origin의 branch로 push할 수 있습니다.

(local branch의 upstream을 설정합니다)

 

별다른 옵션 없이 생성된 브랜치는 업스트림 브랜치가 없습니다.

따라서 origin 브랜치와 동일한 이름의 branch를 생성하고 git push해도,

origin branch로 push 되지 않습니다.

 

-u 옵션을 사용하여 로컬 브랜치의 업스트림 브랜치를 설정하면,

git push -u origin <branch>

git push 명령어만으로도 push 할 수 있습니다.

git push

-u 옵션으로 업스트림 브랜치를 설정할 때에도,

local-branch와 다른 origin branch를 설정할 수 있습니다.

git push -u origin <local-branch>:<origin-branch>

 

git branch -r 명령어를 사용하여 원격 브랜치를 확인할 수 있습니다.

git branch -r

만약 원격 브랜치에 main, empty가 있다면,

origin/empty
origin/main

와 같이 출력됩니다.

 

origin main 브랜치를 local 로 받고, commit을 더 진행할 수 있습니다.

그러면 local의 HEAD와 origin의 HEAD가 달라집니다.

이 때, 원한다면 git checkout 명령어를 사용하여 원격 브랜치의 HEAD로 이동할 수 있습니다.

(detached HEAD 방식과 같습니다)

switch

git branch -r 명령어를 사용하여 확인된 remote 브랜치가 있어도,

git branch 에 존재하지 않을 수 있지만, git switch 할 수 있습니다.

 

기본적으로 git clone 명령어를 사용하면 clone 하려는 git repository의 default 브랜치로 이동합니다.

그리고 git switch를 사용하여  origin branch 중 하나로 이동하면,

local에 새로운 branch를 생성하고 remote branch를 추적하도록 설정됩니다.

728x90