git과 github

jungnoeun·2022년 12월 18일
0

시작

목록 보기
3/3

클라우드 저장소: 다른사람의 컴퓨터에 나의 저장소를 들고 있는 장소
깃허브: 클라우드 파일 저장소, 저장 뿐만 아니라 형상관리(버전관리)를 해준다.

github에 리포지토리를 만들면, git init이 되어있는 상태와 마찬가지이다.

🎨 github에 올리기

⚾ github push

내 local저장소에 있는 것들을 원격저장소에 올리려면 어떻게 해야 할까?

  1. git init

  2. git add, git commit
    1~2의 명령어들을 실행한 후 해당 내용들을 github 클라우드 저장소에 올리고 싶은데, 이 클라우드 저장소를 origin이라고 한다.

  3. git remote add origin https주소(깃허브 리파지토리 주소)
    remote는 원격지를 관리하는 명령어이다. add해서 origin의 리파지토리에 연결하는 명령어이다.
    3-1. git remote -v 또는
    3-2. git ls -remote
    -> origin에 연결이 되었는지 확인하는 명령어이다.

  4. git push origin main
    연결이 되었으니 원격저장소에 업로드를 해야 한다.
    이때까지의 상황을 branch로 봤을때 local에 main이란 branch가 있고, 원격지에 origin/main이라는 branch가 있다고 볼 수 있다. main에서 origin/main으로 파일 업로드뿐만 아니라 병합(merge)를 해줘야 한다. 이때 파일업로드와 병합(merge)를 함께 해주는 명령어는 push이다.





🎹 git pull

원격지에 올라와있는 코드를 local저장소에 다운받으려면 어떻게 해야 할까?

  1. git init
    2 git remote add origin https주소(깃허브 리파지토리 주소)
    1~2의 명령어를 통해 local과 원격지를 연결한다.

  2. git pull origin main
    위 명령어를 통해 origin에 있는 main 브랜치를 다운받을 수 있다.



⚡ local과 원격지를 잘못연결했을 때

  1. git remote -v 또는git ls -remote
    위 명령어로 local이 원격의 어떤 주소와 연결되었는지 확인한다.
  2. git remote rm origin
    2번의 명령어로 원격지와의 연결을 끊어준다.





💎 git clone

git init
git remote add origin https주소(깃허브 리파지토리 주소)
git pull origin main

위 세가지 명령어를 한번에 수행해주는 명령어가 있다. 시작, 연결, 다운을 한번에 해주는 명령어이다.
<사용방법>
git clone https주소(깃허브 리파지토리 주소)

<참고>
pull = 다운로드 + 병합(merge)
push = 업로드 + 병합(merge)





🌊 git fetch

git fetch origin
fetch는 다운로드 명령어이다. origin에 있는 branch 내용들을 다운로드 받겠다는 의미이다.

<fetch 명령어 동작과정>
이때 origin에는 여러개의 branch들과 여러 commit 내용들이 있고, 내 로컬저장소에는 branch가 하나도 없을때, 어떤식으로 origin의 내용들을 받을 수 있을까?

  1. fetch를 통해서 remote branch라고 하는 영역이 만들어진다. 그리고 이 영역에 origin을 동기화 시켜서 origin과 똑같은 branch와 commit 내용들이 만들어진다.
    실제 로컬저장소와 동기화되지는 않는다.

  2. git branch 동기화할브랜치이름
    내 로컬저장소에도 branch들이 있어야 한다. 어떤 branch를 동기화할지 결정해야 한다. 동기화하기로 결정한 branch를 만드는 것은 위의 명령어로 한다.

  1. 로컬저장소에 branch가 생겼으니 remote branch에 있는 branch와 동기화해줘야 한다. 동기화는 merge 명령어를 통해 할 수 있다.



<동작과정을 그림으로>

  • 위 그림에서 한번에 로컬 저장소에 M branch 하나를 만들고 origin(remote branch)의 M branch의 내용을 동기화하는 과정을 하나의 명령어로 줄일 수 있다. 이 명령어는 바로 git clone 이다.

  • 앞서 말한 git clone을 실행하고, 내 로컬 저장소에 dev 브랜치를 만들어서 origin(remote branch)의 dev 브랜치의 내용을 동기화하는 내용을 하나의 명령어로 줄일 수 있다. 이 명령어는 다음과 같다.
    git checkout -b dev origin/dev
    -> 로컬저장소에 dev라는 브랜치를 만들고 origin/dev에 있는 내용들을 동기화시키는 명령어.



<하나하나 풀어쓴 명령어>
git init -> git remote add origin https주소(깃허브 리파지토리 주소) -> git fetch origin -> git branch main -> git checkout main -> git merge main -> git branch dev -> git checkout dev -> git merge dev

<하나하나 풀어쓴 명령어를 줄여쓴 명령어>
git clone -> git checkout -b dev origin/dev



🎄 fetch 정리

fetch: 안보이는 내 로컬 저장소의 remote branch를 origin과 동기화시켜주는 명령어. 내 로컬 저장소에는 fetch로 동기화가 안되고, merge를 해줘야 한다.
원격지인 origin에 타인이 push를 해서 변경사항이 생겼을때 내 로컬컴퓨터에 있는 remote branch와 동기화를 해줘야 한다. 즉, remote branch에 업데이트를 해줘야 한다. 이때 필요한 명령어가 git fetch origin이다.

fetch를 통해 전체 동기화를 해주고 하나씩 merge를 통해 동기화를 해주는 것이다.



⛄ fetch와 pull

협업을 할때 fetch와 merge를 이용해서 remote branch를 origin과 동기화해주고, 내 local저장소와 remote branch를 동기화(merge)해줘도 되지만, git pull origin main 명령어를 통해 동기화(업데이트) + merge 과정을 한번에 해줄 수 있다.

profile
개발자

0개의 댓글