ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Github에 내 코드 반영하기 (clone, add, commit, push)
    개발 환경/Github 2020. 5. 30. 21:45
    반응형

    Github를 사용하고자 마음을 먹었다면 github에 내 코드를 올리든가 이미 존재하는 코드를 수정해서 반영해야한다. 한번 방법을 알아보자.

     

    0. git 다운로드

     

    Git - Downloading Package

    Downloading Git Now What? Now that you have downloaded Git, it's time to start using it.

    git-scm.com

     

    • Linux
    sudo apt-get install git

     

    • macOS
    brew install git

     

    1. git clone

    레포지토리(저장소)를 내 로컬에 다운 받아보자. 다운 받고자하는 폴더에서 윈도우는 git bash를 키고(파일탐색기에서 우클릭하면 Git bash here이라고 있던데....), linux나 macOS는 폴더로 이동해보자. (cd xxx)

    git clone <내가 받아오고자하는 레포지토리(저장소) 주소>
    
    ex)
    git clone https://github.com/CoteMaster/study_history.git

    스크린샷에 빨간 네모박스를 클릭하면 클립보드에 주소가 복사된다. git clone 까지 친 후 ctrl + v를 누르자.

    output:

    Cloning into 'study_history'...
    remote: Enumerating objects: 5, done.
    remote: Counting objects: 100% (5/5), done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 5 (delta 0), reused 2 (delta 0), pack-reused 0
    Unpacking objects: 100% (5/5), done.

    위와 같은 로그가 출력되며 폴더에 레포지토리(저장소) 내용이 복사됐을 것이다.

     

    2. branch 변경

    git에는 branch라는 개념이 있다. 한국말로 가지인 것 처럼 이는 새로운 버전(?)을 뜻한다. git에 기본 branch는 master이다. 아래 그림을 보자.

    많은 IT기업들은 git flow를 통해 개발한다. 현재 개발되어 배포된 branch는 master이고 개발하고 있는 branch는 develop, feature branches 등등 여러개의 branch를 이용한다. 이처럼 branch를 만들어 개발해야하는 경우라면 branch를 만들거나 현재 branch를 변경해야한다.

    git checkout <branch 이름>
    
    ex)
    git checkout -b seokhyeon
    git checkout seokhyeon

    branch를 변경할 때 새로 branch를 만든다면 -b 옵션을 붙여준다. 이미 존재하는 branch이고 현재 branch를 변경하고자한다면 그냥 checkout만 하면 된다.

    output:

    Branch 'seokhyeon' set up to track remote branch 'seokhyeon' from 'origin'.
    Switched to a new branch 'seokhyeon'

     

    3. 레포지토리(저장소) 내용 수정

    머 코드를 수정하든 새로운 코드를 추가하든 다양한 방법이 있겠지만 가장 쉽게 파일을 추가해보자.

    레포지토리(저장소)가 복사된 폴더에 아무런 파일을 붙여넣기해보자. linux나 macOS 이용자면 touch 명령어를 통해 아무런 파일을 생성해보자.

    txt 파일이든 사진이든 무엇이든 가능하다.

     

    4. add

    파일을 생성했지만 현재는 git에서 파일을 tracking 하고있지 않은 상태이다. 이 상태로 commit(변경사항 반영?)을 한다면 이러한 로그를 출력한다.

    output:

    On branch seokhyeon
    Your branch is up to date with 'origin/seokhyeon'.
    
    Untracked files:
    	asdf.txt
    
    nothing added to commit but untracked files present

    새로운 파일을 생성했지만 git 레포지토리(저장소)에 반영할 수 없는 상태인 것이다. git이 추가한 파일을 tracking 할 수 있도록 해보자.

    git add .

    위 명령어는 현재 폴더에 있는 모든 파일과 폴더를 git에 인식시키는 명령어이다. 아무런 로그를 출력하지 않는다.

     

    5. commit

    네이버 사전에 검색해본 결과 다양한 뜻이 있지만 '~을 적어두다'라는 뜻이 가장 적절하지 않을까 싶다. commit은 수정사항을 반영하는 명령어이다. 내가 코드를 수정하거나 파일을 생성하고 add를 했다면 commit을 통해 수정사항을 반영할 수 있다.

    git commit -m "add asdf.txt"

    -m  옵션은 메세지를 남길 수 있는 옵션이다. 대부분의 git 유저들은 commit할 때 메세지를 남기니 생활화하자.

    output:

    [seokhyeon 2a7b852] asdf.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 asdf.txt

    commit을 하면 내 로컬에만 변경사항이 반영된다. git과 github를 구분할 줄 알아야하는데 git은 내 로컬에서 변화를 기록하고 그것을 웹에(github에) 저장하려면 push라는 명령어를 사용해야 한다. 현재는 git을 통해 내 로컬에서만 바뀐 상태다.

    정확한 표현은 로컬 저장소(local repository)와 원격 저장소(remote repository)다. git commit은 로컬 저장소에만 반영된다.

     

    6. push

    git push 명령어를 통해 원격 저장소(github)에 변경 사항을 반영할 수 있다.

    git push <원격 저장소 이름> <branch 이름>

    push 하기 위해서는 두가지 정보가 필요하다. 원격 저장소 이름과 branch 이름이다. branch 이름은 현재 있는 branch로 하면 되고 원격 저장소는 대부분 origin일 것이다. 한번 확인해보자.

    git remote -v

    output:

    origin	https://github.com/CoteMaster/study_history.git (fetch)
    origin	https://github.com/CoteMaster/study_history.git (push)

    위와 같이 origin이 원격 저장소의 주소로 등록되어 있다. 이는 clone을 했기때문에 자동으로 등록되어 있는 것이다. 새로 레포지토리를 만들 때는 따로 설정해줘야한다. 여튼 원격 저장소에 push해보자.

    git push origin seokhyeon

    output:

    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Writing objects: 100% (3/3), 237 bytes | 237.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/CoteMaster/study_history.git
       d75c473..e88e6f5  seokhyeon -> seokhyeon

    라는 로그와 함께 push가 되었다. 확인해보자.

    빨간 네모박스를 보면 seokhyeon이라는 branch가 push 되었다고 알린다. 파란 네모박스를 눌러 seokhyeon으로 branch를 바꿔보면

    asdf.txt가 추가되어 있는 것을 확인할 수 있다. (README.md는 아까 딴짓하다가 지워서 없다....)

     

    7. 결론

    많은 회사들은 신입보다 경력을 좋아하는 이유가 바로 일을 시킬 수 있는 숙련도를 가지고 있기 때문이다. 물론 신입이 경력을 따라가기는 힘들지만 적어도 git과 github를 가르치지 않아도 되는 신입이 되어보자.

    반응형
Designed by Tistory.