git 정리

[10] 유데미 git 강의 - Github의 기초(2) _ git clone, push ,remote

개도필 2022. 6. 18. 13:36

다같이 뽀개봅시다. 이해가 잘 되시길 바라요!

이게 흐름만 잘 알면 이해가 다 된다는거지!!!!!!!!!!

 

 

첫 Github Repo 만들기

  • 깃허브에 코드를 올리는 방법,
  • 내 컴퓨터에 있는 로컬 깃 저장소를 가져오는 방법 , 그것을 호스팅된 깃 허브 저장소에 연결하는 방법을 알아보자~

 

두가지의 접근 방식

  1. 컴퓨터에 기존 저장소가 있는 경우
    • 깃허브에서 새 저장소를 만든 다음, 원격(remote)이라는 것을 추가로 하여 로컬 저장소에 연결
    • 원격을 로컬 컴퓨터에 추가한 다음, 변경 사항을 깃허브에 푸시

          →이미 작업하고 있는 것, 이미 깃 기록이 있는 것, 이미 코드가 있는 것 들을 의미

 

 

 

   2. 아직 작업을 하지 않은 경우, 어디에도 저장소가 없는 경우를 의미

  • 내 컴퓨터에서 git init을 실행하는 대신 ,비어있는 내 깃허브 저장소를 클론하고, 거기서 작업을 시작해서 깃허브에 푸쉬한다.
  • 로컬 저장소를 깃허브 저장소에 수동으로 연결할 필요가 없게됨.
  • → 깃허브에서 이 저장소를 클론하면, 해당 깃허브 URL에 자동으로 연결되기때문에

       → 이럴 경우에는 깃허브에서 새 저장소를 만든 다음, 그것을 내 컴퓨터에 빈 저장소로 클론한다.

 

< 1번 상황 > github에 local코드 올리기

  1. 먼저 github에서 빈 repo를 만든다.
    • 로컬 저장소는 이 상황을 아예모름, 연결 해줘야댐 github랑 로컬 저장소랑
    → 나는 datepicker만들라고함

 

 2. 클라우드에 있는 이 빈 깃허브 저장소를 로컬에 가져와야한다.~ 그 후에 push하는거임 

 

  그러기 전에~~~???   먼저 알아야할 것 git remote

 

 

Git Remote 집중학습

  • 이미 컴퓨터에 기존의 코드가 있는 경우 필요함! 
  • git remote란 ?
    • 깃에게 알려줄 목적지 URL에 이름을 멋지게 붙인 것
    • 내 컴퓨터의 작업 공간이랑 github의 repo랑 연결이 돼야하는데, 연결시키는 것은 git remote라고하는거임
  • 현재 저장소에 있는 원격들을 나열해서 보여준 것 (여러개의 github repo가 연결될 수 있기 때문에) 
git remote -v
  • 깃 클론을 한 저장소에 가서 git remote 를 쳐야함, 우리로 따지면 일단 위에서 datatime이 나올거임 

 

원격을 만드는 방법

  • url을 name으로 기억한다.
    • 표준이름은 origin
    • 아무이름이나 붙여도 된다
    • 걍 github url에 별명붙이는거임, 왜냐면 url맨날 언제다써 !!!! 걍 url에 이름짓는거라고 생각하세용! 
git remote add name url

→ 깃에게 “깃, 여기있는 URL은 name이라고 부를 거야”라는 말이다.

→ “내가 오리진을 말하면 이 URL얘기야! “라는 뜻이다.

 

  • 여기서 말하는 url은 위에서 만든 빈 github repo url

 

 

연결하기

  1. 만약에 코드를 올리려고 하는 폴더에 git 저장소가 없다면 아래와 같은 command를 따라치기

        => 즉 git init을 해본적이 없는 폴더인경우 

 

2. 만약에 코드를 올리려고 하는 경우에 폴더에 git repo가 이미 있다면

 

3. git remote add origin url을 하고 git remote -v를 했을 때 => 연결된거임 

 

 

동일한 URL에 새로운 원격을 추가할 수 도 있다.

  • 오픈 소스 프로젝트에 참여햐면 보통 원격은 여러개이다.
git remote add name url 

 

원격 삭제

git remote remove <name> 

 

원격 이름 변경

git remote rename <old> <new>

 

 

Git Push소개

  • 현재 우리가 진행중인 것 ( 1번상황 → 작성된 코드를 저장소에 올리고 싶은 경우)
    1. 깃허브에 새 저장소를 만들고,
    2. 깃허브 저장소에 local repo를 연결한다. (git remote) 
    3. change를 github에 보내기
  • 커밋을 저장소로 push해야지 깃허브에 보인다.
  • 보내려는 특정 브랜치를 호출한다.
git push <remote> <branch>

 

push한 코드들이 github에 생성됨

 

 

Git push 자세히 알아보기

  • 로컬에 있는 브랜치와 깃허브의 브랜치간의 관계
    • 로컬에 있는 브랜치와, 깃허브에 있는 브랜치는 확실히 다르다.
git push orgin 브랜치명 
  • 만약에 github에 있는 브랜치명이면 거기다가 push,
  • github에 없는 브랜치명이면 브랜치 새로 만든다.

 

  • 로컬에서 cats 브랜치에서 원격의 다른 브랜치에 push하고 싶다면?
git push origin cats:master

 

git push -u는 무슨의미일까?

git push -u origin master 
  • 새 저장소를 만들때 보게되는 옵션 -u
  • 상류(업스트림)라는 의미 , 로컬 브랜치의 상류는 원격 브랜치를 가리키는 일종의 연결
    • 로컬과 원격 브랜치를 연결시켜서, push 명령을 간결하게 이용 가능
  • 깃에게 로컬 컴퓨터 내 저장소의 마스터 브랜치를 마스터로 푸시하라는 의미
  • 원격(깃허브)에 있는 브랜치명과 로컬에 있는 브랜치명이 같을 경우 -u를 통해서 push코드를 간결하게 작성 가능
  • 예시

git push 
  • -u를 통해 업스트림이 생성됐으므로, git push만 이용하여 dogs→dogs를 가리킬 수 있다. (로컬 → 원격)
  • 로컬 브랜치에서 다른 원격 브랜치로 연결도 가능하긴함
git push -u origin 로컬:원격
  • 보통 이렇게는 안함, 추천 x, 병합 문제가 생길 수도 있다.

 

 

기타 Github 워크플로우: 복제 우선

  • 깃허브에 코드를 올리는 두번째 방법
    • 내 로컬에 아무런 저장소가 없고, 프로젝트가 없을때, (깃허브에서 프젝을 시작할 때)
  1. 깃허브에서 repo만들기
  2. 깃허브에서 만든 repo clone받기
    • 자동으로 원격 구성 됨
  3. 글고 변경사항있으면 push~
  • 예시

1. 빈 저장소를 만들고

 

 

2. 클론하기

 

3. ls를 통해서 확인

 

원격을 연결해준 적도 없지만, 연결이 돼있음

=> github repo에서 시작했기 때문에

 

4. push 완료

 

5. github에 반영됨