ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git&Github 활용하기(1) - init/add/commit
    Etc/Git 2019. 11. 13. 14:30
    더보기
    Git이란 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

    위키백과에 나와있는 Git의 정의이다. 하지만 사전적인 정의는 와닿지 없는 법

    실제로 Git과 Github는 무엇이며 강조할 필요도 없는 개발자의 필수 요소로 자리잡은 것일까

     

    Git은 사전 정의 그대로, 프로젝트의 변경 사항을 관리할 수 있고, 협업을 도와주는 프로젝트 관리 툴이다.

    여기에서 핵심은 프로젝트의 버전을 관리할 수 있다는 데에 있다

     

    대부분의 프로젝트 개발 과정에서 1인 개발을 하는 경우는 거의 없을 것이다. 프로젝트의 규모가 커지고 필요한 자원이 늘어감에 따라서, 협업은 빠질 수 없는 필수 사항이다.

    그래서 요즘에는 협업을 얼마나 잘하는지에 대한 것도 강조되고 있는데, 그렇기 때문에 git을 잘 다루는 것은 개발자의 필수 요소라고 할 수 있다.

     

    우즈벡에서 현지 학생들과 프로젝트를 진행했었는데, 일주일간의 짧은 기간안에 웹페이지를 완성해야 하는 프로젝트였고 현지 학생들은 git을 통해 버전관리하는 법을 알지 못했었다. git을 사용하는 법을 가르쳐주고 프로젝트를 진행하고 싶었지만 내가 이 얘기를 꺼냈을 때 반응이 탐탁치 않았기에 USB로 프로젝트 중간물들을 주고받는다는 (끔찍한) 짓을 저질렀었다. 결국 프로젝트 발표 당일 아침, 다른 이가 변경사항들을 옮기던 중 이틀 전 버전으로 돌아가버리는 사태가 일어나고 말았다.

    어찌저찌 상황은 수습이 됐지만, 그 때 버전관리 툴의 중요성을 절실히 느꼈었다.

     

    그때의 나처럼, 프로젝트 협업을 진행하던 중 수정사항이 발생했다면? 기능을 추가하다가 메인 프로그램에 지장이 생겼다면? 중간중간 테스팅을 진행하지 않고 여러 코드를 추가하다가 오류가 났는데 어떤 맥락에서 오류가 발생했는지 찾지 못한다면?

    이럴 때 여러분들도 버전관리 툴이 절실할 것이다.

     

    따라서 Git은 버전관리를 통한 백업과 효율적인 협업을 제공한다.

    Github는 Git을 사용하는 프로젝트를 지원하는 호스팅 사이트이자 오픈 소스 코드 저장소이다.

     

    Github를 사용하는 이유는 크게 두 가지일 것이다.

    첫 번째. 나의 프로젝트 버전을 관리하고 백업하는 웹 포트폴리오로써

    두 번째. 오픈소스(or다른 사람의 리퍼지토리)를 사용하여 기여하기 위함으로써

    세 번째. 이력서 쓸 때 제출해야해서

     

    그렇기 때문에 서론은 여기까지 하고, 본격적으로 Git과 Github를 사용하는 가이드라인을 써보려고 한다.

     

    Git이란 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

    위키백과에 나와있는 Git의 정의이다. 하지만 사전적인 정의는 와닿지 없는 법

    실제로 Git과 Github는 무엇이며 강조할 필요도 없는 개발자의 필수 요소로 자리잡은 것일까

     

    Git은 사전 정의 그대로, 프로젝트의 변경 사항을 관리할 수 있고, 협업을 도와주는 프로젝트 관리 툴이다.

    여기에서 핵심은 프로젝트의 버전을 관리할 수 있다는 데에 있다

     

    대부분의 프로젝트 개발 과정에서 1인 개발을 하는 경우는 거의 없을 것이다. 프로젝트의 규모가 커지고 필요한 자원이 늘어감에 따라서, 협업은 빠질 수 없는 필수 사항이다.

    그래서 요즘에는 협업을 얼마나 잘하는지에 대한 것도 강조되고 있는데, 그렇기 때문에 git을 잘 다루는 것은 개발자의 필수 요소라고 할 수 있다.

     

    우즈벡에서 현지 학생들과 프로젝트를 진행했었는데, 일주일간의 짧은 기간안에 웹페이지를 완성해야 하는 프로젝트였고 현지 학생들은 git을 통해 버전관리하는 법을 알지 못했었다. git을 사용하는 법을 가르쳐주고 프로젝트를 진행하고 싶었지만 내가 이 얘기를 꺼냈을 때 반응이 탐탁치 않았기에 USB로 프로젝트 중간물들을 주고받는다는 (끔찍한) 짓을 저질렀었다. 결국 프로젝트 발표 당일 아침, 다른 이가 변경사항들을 옮기던 중 이틀 전 버전으로 돌아가버리는 사태가 일어나고 말았다.

    어찌저찌 상황은 수습이 됐지만, 그 때 버전관리 툴의 중요성을 절실히 느꼈었다.

     

    그때의 나처럼, 프로젝트 협업을 진행하던 중 수정사항이 발생했다면? 기능을 추가하다가 메인 프로그램에 지장이 생겼다면? 중간중간 테스팅을 진행하지 않고 여러 코드를 추가하다가 오류가 났는데 어떤 맥락에서 오류가 발생했는지 찾지 못한다면?

    이럴 때 여러분들도 버전관리 툴이 절실할 것이다.

     

    따라서 Git은 버전관리를 통한 백업과 효율적인 협업을 제공한다.

    Github는 Git을 사용하는 프로젝트를 지원하는 호스팅 사이트이자 오픈 소스 코드 저장소이다.

     

    Github를 사용하는 이유는 크게 두 가지일 것이다.

    첫 번째. 나의 프로젝트 버전을 관리하고 백업하는 웹 포트폴리오로써

    두 번째. 오픈소스(or다른 사람의 리퍼지토리)를 사용하여 기여하기 위함으로써

    세 번째. 이력서 쓸 때 제출해야해서

     

    그렇기 때문에 서론은 여기까지 하고, 본격적으로 Git과 Github를 사용하는 가이드라인을 써보려고 한다.

     

    여기에서는 다른 툴을 사용하지 않고 Git 터미널을 사용하고, 우선적으로 기존 프로젝트를 Git 저장소로 지정하는 방법부터 설명한다.

     

    1. Git init

    먼저, 작업 공간인 디렉터리를 우클릭하여 Git Bash를 열어준다.

    이러한 터미널이 뜨면, 아래와 같은 명령을 실행한다.

    git init //작업공간을 git을 사용할 수 있도록 초기화한다

    이 명령은  .git 이라는 저장소에 필수적인 파일이 들어있는 하위 디렉토리를 만든다.

    git init을 함으로써 작업 공간을 위한 환경 구성을 완료하여 버전관리를 할 준비가 됐다.

     

    작업 공간의 모든 파일들은 untracked / unmodified / modified / staged로 나뉜다.

    파일의 라이프사이클

    git status //현재 작업공간에서 변경사항/브랜치 상태를 알려준다

    이 명령은 현재 작업공간의 파일의 상태, 현재 작업중인 브랜치를 확인할 수 있다.

    README.md 파일을 생성하자 Untracked file이 추가되었고, add된 파일이 없으며 git add를 통해 추가하라는 메시지가 뜬다.

     

    2. Git add

    git add [File Name] //변경된(Modified) 특정 파일을 추가한다.(Staged상태로 만든다)
    git add . //변경된 모든 파일을 추가한다.

    git add를 수행할 타이밍 -> 수정된 파일을 커밋하고 싶을 때

    파일 명을 지정함으로써 특정 파일만 Staged 상태로 변경할 수 있다.

    하지만 일반적인 경우에서는 . 을 써서 변경된 모든 파일을 Staged 상태로 만든다.

    Staged 상태가 된 파일은 Commit할 준비가 되었다.

     

    3. Git commit

    이제 Commit에 대해 알아보자.

    커밋이란, 마지막 git add가 수행된 시점에서 Staged 상태인 파일들을 Fix하는 작업이고,

    작업 공간에 메시지로 특정 분기까지의 작업이 완료됨을 명시하는 것이다. 이것을 최소 단위의 버전으로 볼 수 있다.

    ex. Binary Search Tree에서 초기화 기능을 구현 완료한 뒤 commit

     

    git commit // 변경 내용을 확정한다.
    git commit -m "message" // "message" 내용을 통해 커밋 메시지를 작성할 수 있다.

    git commit 을 수행할 타이밍 -> 최소 기능 요구사항에 대한 추가/수정이 완료되었을 때

    하는 것이 좋다.

    예를 들면, Binary Search Tree의 초기화/추가/삭제/순회 기능이 있는 프로그램을 만든다고 하자. 그렇다면, 커밋 단위는 초기화 기능을 만들었을 때, 추가 기능을 만들었을 때, ... 의 단위로 커밋하면 된다.(+수정 사항이 발생했을 때)

    그렇게 했을 때, 버전관리를 통해 나중에 특정 지점으로 되돌아 가기 수월하기 때문이다

     

    +일반적으로 헷갈릴 수 있는 add와 commit의 차이점이 있는데,

    git add를 실행하면 파일은 Staged 상태가 되고, git commit을 하면 Unmodified 상태가 된다.

    git add는 commit하기 위한 대기 목록으로 파일들을 지정해주는 작업이라고 보면 된다.

    **git add와 git commit을 합쳐 git commit -a -m "message"로 사용하기도 한다.**

     

    git commit --amend (-m "message") //가장 최근의 커밋을 덮어씌운다.

    추가로 --amend란 옵션을 사용함으로써 최근의 커밋을 덮어씌울수도 있다. 커밋 메시지를 변경하거나, 깜빡한 추가사항등이 있을 때 사용한다.

     

     

    위의까지 명령어들은 로컬 저장소에서 버전관리를 하는 작업을 살펴봤다. 

    다음 포스팅에서는 branch를 통해 버전을 관리하는 법을 알아보자.

Designed by Tistory.