Study Programming/Git

Git Remote 연동하기2 - Push, Pull, 리모트 브랜치 삭제

네모메모 2021. 8. 15. 16:46
반응형

 


 

Remote 저장소에 '로컬 수정사항/로컬 브랜치' 올리기

  : $ git push <RemoteName> <LocalBranchName>

 : 로컬의 브랜치(LocalBranchName)를 Remote 서버로 전송

 

 - 로컬의 브랜치를 서버로 전송하려면 쓰기 권한이 있는 리모트 저장소에 Push 해야 한다.

 - $ git commit 과 $git push 비교

   : Git은 local repository가 있기 때문에, Git 에서의 commit은 local repository에 저장되는것을 의미하고, 

     이 커밋사항을 Git remote repository에 저장하려면 push를 해주어야 한다.
 



1. 로컬 브랜치의 이름과 리모트 서버의 브랜치 이름이 다를 때 

   : $ git push origin <LocalBranchName>:<AddingRemoteBranchName>

- 리모트 저장소에 로컬의 브랜치(LocalBranchName) 이름 대신 다른 이름(AddingRemoteBranchName)으로 원격에서 브랜치 사용

 


2. 로컬 브랜치를 리모트 서버에도 브랜치 추가

   : $ git push origin <LocalBranchName>

- "로컬 브랜치는 자동으로 리모트 저장소로 전송되지 않는다. 명시적으로 브랜치를 Push 해야 정보가 전송된다. "

- 리모트 저장소에 전송하지 않고 로컬 브랜치에만 두는 '비공개 브랜치'를 만들 수 있다. 
- 다른 사람과 협업하기 위해 '토픽 브랜치'만 전송할 수도 있다.

 

- ex) serverfix 라는 브랜치를 다른 사람과 공유할 때도 브랜치를 처음 Push 하는 것과 같은 방법으로 Push 한다. 

$ git push origin serverfix
Counting objects: 24, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (24/24), 1.91 KiB | 0 bytes/s, done.
Total 24 (delta 2), reused 0 (delta 0)
To https://github.com/schacon/simplegit
 * [new branch]      serverfix -> serverfix

 

ㄴ> Git은 serverfix라는 브랜치 이름을 refs/heads/serverfix:refs/heads/serverfix 로 확장한다. 
     이것은 serverfix 라는 로컬 브랜치를 서버로 Push 하는데 리모트의 serverfix 브랜치로 업데이트한다는 것을 의미한다.


ㄴ> $ git push origin serverfix:serverfix 라고 Push 하는 것도 같은데 
      이것은 '로컬의 serverfix 브랜치를 리모트 저장소의 serverfix 브랜치로 Push 하라' 라는 뜻이다. 


 

 

 


 

Remote 저장소에서 데이터 가져오기

  : #1) $ git fetch

 : 서버에는 존재하지만, 로컬에는 아직 없는 데이터를 받아와서 저장한다. 

- 워킹 디렉토리의 파일 내용은 변경되지 않는다.

- 서버로부터 데이터를 가져와서 저장해두고 Merge하지는 않는다.

- ※주의★★)

   $git fetch 명령으로 "리모트 트래킹 브랜치를 내려받는다고 해서 로컬 저장소에 수정할 수 있는 브랜치가 새로 생기는 것이 아니다. "
   ㄴ> ex)

$ git fetch origin
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://github.com/schacon/simplegit
 * [new branch]      serverfix    -> origin/serverfix

 

ㄴ> serverfix 라는 브랜치가 생기는 것이 아니라 "그저 수정 못 하는 origin/serverfix 브랜치 포인터가 생기는 것"이다.
새로 받은 브랜치의 내용을 Merge 하려면 $ git merge origin/serverfix 명령을 사용한다.

 


  : #2) $ git pull

 : 서버에는 존재하지만, 로컬에는 아직 없는 데이터를 받아와서 저장 및 Merge한다. 

 

- 서버로부터 데이터를 가져와서 저장해두고 Merge한다.

- [동작과정]

  clone 이나 checkout 명령을 실행하여 '트래킹(Tracking) 브랜치'가 설정되었고,
  $ git pull 명령을 실행하면 서버로부터 데이터를 가져와서
  '현재 로컬 브랜치'와 '서버의 트래킹(Tracking) 브랜치'를 Merge 한다.

 

- $ git fetch 명령을 실행하고 나서 자동으로 $ git merge 명령을 수행하는 것뿐이다. 

  ($ git fetch + $ git merge) 명령 = $ git pull 명령


 

Remote 저장소 브랜치 삭제

  : $ git push <RemoteName> --delete <RemoteBranchName>

 - $ git push --delete 옵션 사용
 - ex) serverfix 라는 리모트 브랜치를 삭제하려면 아래와 같이 실행한다.

$ git push origin --delete serverfix
To https://github.com/schacon/simplegit
 - [deleted]         serverfix

 

- 명령어 실행 시 서버에서 브랜치(즉 커밋을 가리키는 포인터) 하나가 사라진다. 
  서버에서 가비지 컬렉터가 동작하지 않는 한 데이터는 사라지지 않기 때문에 종종 의도치 않게 삭제한 경우에도 커밋한 데이터를 살릴 수 있다.

 

 

 

 

 


 

END!

 

 


스터디 도움 참조 블로그 (References)

- Refs
http://ghcksdk.com/git-master%EC%97%90%EC%84%9C-branch%EB%A1%9C-pull-%ED%95%98%EA%B8%B0-git-refs/

- git ls-remote
https://runebook.dev/ko/docs/git/git-ls-remote
https://nochoco-lee.tistory.com/30

- git Remote 저장소 관련
https://thisblogbusy.tistory.com/entry/Git-Basics-Working-with-Remotes

- 3.5 Git 브랜치 
https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EB%B8%8C%EB%9E%9C%EC%B9%98

- What is a tracking branch?
https://stackoverflow.com/questions/4693588/what-is-a-tracking-branch
https://stackoverflow.com/a/4693780

- tracking branch
 https://jw910911.tistory.com/16


- What is a tracking branch?
https://stackoverflow.com/a/4693780


- Git Remote Tracking Branch and Upstream Branch are different ?
https://stackoverflow.com/questions/62137200/git-remote-tracking-branch-and-upstream-branch-are-different


- [Git] branch 관련 명령어 모음(생성, 관리, 삭제)
https://developerntraveler.tistory.com/62



- git--distributed-even-if-your-workflow-isnt (Pro Git Book)
https://git-scm.com/book/en/v2

 

 

 

반응형