반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

타닥타닥 민타쿠

깃허브(GitHub) 입문자를 위한 간단 사용법(간단히 협업) 본문

개발/Git

깃허브(GitHub) 입문자를 위한 간단 사용법(간단히 협업)

민타쿠 2021. 7. 20. 02:34
반응형

본 글에서는 깃, 그리고 깃허브 입문자가 버전 관리, 단순 협업을 할 수 있도록 하기 위해
최대한 당장 필요한 것만 설명할 예정이다.

1. Git & GitHub

깃과 깃허브가 있다.
분산형 버전 관리 시스템이고,
깃허브는 이를 사용하는 프로젝트를 지원하는 웹호스팅 서비스이다.
쉽게 말해 백업과 협업을 위한 클라우드라고 보면 된다.

2. 작업환경 세팅

  • 깃허브 회원가입(깃허브 홈페이지)

  • 깃 다운로드 및 설치(깃 다운로드 페이지)

  • cmd(terminal) 창에서 커맨드 입력
    git config --global user.email "내 이메일"
    git config --global user.name "내 이름"

  • 깃허브 로그인 요구시 로그인하기
    (윈도우는 최초 1번, 맥과 리눅스는 설정 필요)
    (윈도우 기준 [제어판]-[사용자 계정]-[자격 증명 관리자]-[Windows 자격 증명]-[일반 자격 증명] 에 로그인 정보가 저장된다.)

3. Git 사용법

깃을 쓰는 방법에는
CLI(Command Line Interface) 환경과
GUI(Graphical User Interface)에서 쓰는 방법 두 가지가 있는데,
여기서는 CLI 환경에서 커맨드 입력을 통한 방법을 설명할 것이다.
이유는 아래에 작성한 괄호 안의 내용과 같다.


깃은 CLI 환경이 기본이지만 사용자 편의를 위해 다양한 GUI 가 존재한다.
CLI 에서는 모든 기능이 가능하지만, GUI 에서는 일부 불가능일 수 있다.
게다가 CLI 로 입문하여 쓰던 사람은 GUI 를 원활하게 사용할 수 있지만,
GUI 로 입문하여 쓰다가 CLI 환경에서 쓰려면 거의 불가능에 가깝기 때문에
CLI 기준으로 기본 사용법을 이해한 후 GUI 사용을 권장한다.
)

  • git init
    깃으로 관리하겠다는 선언.
    깃으로 관리할 프로젝트 폴더 경로에서 커맨드라인으로 입력.
    해당 폴더 내에 숨김 폴더로 .git 이라는 폴더가 생성된다.

  • .gitignore 파일 생성
    깃에서 제외시킬 파일 및 폴더 정보를 담는 설정 파일.
    .gitignore 라는 이름의 텍스트 파일.
    .gitignore 문법 예시
    
    # : 주석
    
    # .a 확장자 파일 무시
    *.a
    
    # lib.a 파일은 .a 확장자 파일이더라도 무시 X
    !lib.a
    
    # 현재 폴더의 TODO 파일만 무시 subdir/TODO는 무시 X
    /TODO
    
    # build 폴더의 모든 파일 무시
    build/
    
    # doc/notes.txt 는 무시, doc/server/arch.txt 는 무시 X
    doc/*.txt
    
    # doc 폴더의 모든 .pdf 확장자 파일 무시
    doc/**/*.pdf​


  • git add 파일명
    스테이지 단계로 스테이징 시키는 명령어.
    파일명 대신 점(.)을 쓰면 변경사항이 있는 모든 파일을 스테이징한다.

  • git commit -m "메시지"
    커밋 명령어.
    스테이징된 파일들의 변경사항을 적용하여 새로운 버전으로 저장.
    메시지와 함께 저장되기에 이력 관리에 용이.

이 중 .gitignore 파일 생성은 필수가 아니니, 결국 세 단계만 알면 깃으로 버전 관리를 할 수 있게 된다.
게다가 git init 명령어를 통한 초기화는 한번이기에, 결국
addcommit 두 명령어의 반복만 해도 기본적인 버전 관리를 하게 된다.

git init
코드 수정
git add . 
git commit -m ‘bla bla’
코드 수정
git add . 
git commit -m ‘bla bla’
...

위와 같이 하면 기본 버전 관리가 된다. 생각보다 간단하다.
물론 여기서 log 명령어로 커밋한 기록을 살펴보고 checkout 명령어로 버전을 전환하고 되돌아오고 하는 것 등의 작업을 할 수 있어야 진짜 버전 관리를 한다 할 수 있겠지만, 그것은 나중에 필요할 때 하면 된다. 쉽고, 구글링 하면 다 나오니까 말이다. 그러한 깃의 기능들에 대해서는 추가 포스팅을 할 예정이다.

4. GitHub 사용법

  • 깃허브 로그인(깃허브 홈페이지)

  • Repository(저장소) 생성
    로그인 후 좌측에 보인다
    저장소 이름 정하고, 공개or비공개, readme파일 추가 여부, .gitignore 추가 여부, 라이센스 선택 여부를 정한다
  • 보유 프로젝트 Repository 에 연결 후 업로드
    빈 저장소 페이지는 가이드가 보인다. cmd로 프로젝트 경로에서 빨간 박스 부분을 따라해보자.
  • Collaborator(협업자) 초대
    저장소 - 설정탭 - Manage access - Invite a collaborator - ID 혹은 이메일로 검색 후 초대 메일 전송
  • (초대 받은 경우) 초대 메일 확인 및 수락

  • (초대 받은 경우) Repository 주소 복사
    [Code]버튼 - 주소 복사 버튼
  • (초대 받은 경우) cmd로 프로젝트를 위치시킬 경로에서 [git clone 주소] 입력 -> 프로젝트 다운로드(폴더 자동생성)

  • 각자 작업 시작
    깃 사용법과 동일하게 진행하지만 앞, 뒤로 명령어 하나씩만 추가하면 된다.
    작업 전에 git pull, 작업 후에 git push 명령을 입력하면 되겠다.

    git pull

    코드 수정
    git add . 
    git commit -m ‘bla bla’

    git push

위와 같은 방식으로, 기존 깃으로 버전 관리만 하는 것에서 협업으로 나아갈 수 있다.
git pull 은 현재 깃허브에 있는 최신 소스의 변경 내용을 다운로드 받아 자신의 로컬 프로젝트와 병합하는 기능이고,
git push 는 현재 자신의 로컬 프로젝트를 깃허브에 업로드하는 기능이다.
따라서 다운로드(병합) - 작업 - 버전 저장 - 업로드 의 과정이 수행되는 것이다.

5. Conflict(충돌) 발생시

세상사 100프로는 존재하지 않는다는 말처럼 안타깝게도 깃과 깃허브가 100프로 모든 것을 알아서 해줄 수는 없다.
바로 충돌이 발생하는 경우인데, 간단히 말하면 동시에 같은 파일의 같은 행을 수정하면 발생한다.

철수와 영희가 작업을 한다고 가정하겠다.
철수가 A라는 버전을 수정해서 push 하여 깃허브에 B버전이 있다.
영희는 B버전을 pull 하여 B-1버전을 만들어 push 했지만,
그 사이 철수가 추가 작업을 통해 B-2버전을 만들었다.
그래서 철수도 push를 하려 했지만 pull 을 받지 않아 push를 할 수 없다는 에러를 보게 되었다.

이 때, 영희가 수정한 부분과 철수가 수정한 부분이 겹치지 않는다면 철수는 pull 명령 후 push 를 하여 자연스럽게 넘어갈 수 있다.
하지만 둘의 수정 내용에서 같은 파일의 같은 행의 수정이 있을 경우, 철수는 pull 명령에서 Conflict 메시지를 받게 된다.

해결 방법은 깃이 알려주는 충돌이 발생한 파일을 살펴보고 수정하여 commit 후 push 하는 것이다.

  • 충돌 발생 파일 열기
    메시지에서 충돌이 발생한 파일을 알려준다.
    사용하는 IDE(개발툴)에서 표시될 수도 있다.
    Conflict(충돌) 메시지 예시
  • 충돌 부분 수정 후 저장
    충돌 수정 전
    충돌 수정 후
  •  커밋 후 푸시

6. 그 외 명령어

깃에는 굉장히 유용하고 사용자를 편하게 해주는 많은 기능과 그 명령어가 있다.
그러나 당장은 필요가 없을 것이고 그때 그때 검색을 통해 차차 알아가는 편이 좋을 것이다.
일단은 이 정도만 알아도 충분하지 않을까.

git init : 현재 경로를 Git프로젝트로 관리하기
git clone 레포지토리 주소 : 프로젝트 복제(다운로드)
git status : 상태 보기
git pull : (fetch+merge) 깃허브에서 최신버전 다운로드(병합)
git add . : 변경사항 다 스테이징
git commit -m "메시지" : 커밋(현재 버전 저장)
git push : 깃허브에 현재 커밋 업로드
git log : 로그(버전 이력) 보기
git checkout 커밋코드4자리 : 원하는 버전으로 코드 돌려보기
git branch 브랜치이름 : 브랜치 만들기(가지치기)
git checkout 브랜치이름 : 해당 브랜치의 최신버전으로 코드 돌려보기
git merge 브랜치이름 : 해당 브랜치 변경내용을 현재 브랜치에 병합하기

 

7. 마치며.

회사내 교육 진행을 위해 만들었던 24개의 ppt 슬라이드에서도 내용을 간추렸지만,
글로써 설명하다보니 글이 길어져서 아쉽다.
그래도 막상 사용법은 간단하다는 말을 강조하고 싶어, 교육 마지막에 넣었던 문구로 마치도록 하겠다.

“당기고(pull), 더하고(add, commit), 미세요(push).”

백업, 
버전 관리, 
협업을 
빠르고 간편하게.
Github.

 

반응형
Comments