본문 바로가기

윈도우 개발환경

개발 소스코드 관리; 5. 예제로 본 Git 사용법 (기본 명령어) - 1

개발 소스코드 관리

1. 형상관리, CI/CD

2. Git을 설치하고 덤으로 얻는 리눅스 환경

3. GitHub 사용하기 - 1) 계정생성, Token 발행

4. GitHub 사용하기 - 2) VSCode 연결, 해제

5. 예제로 본 Git 사용법 (기본 명령어) - 1

 

윈도우에 git도 설치하고 GitHub에 내 프로젝트 (repository)도 만들었다. 이제 만들고 있는 아두이노 sketch프로그램의 소스코드를 git을 사용해 관리하는 과정을 보면서 git 어떻게 사용하는지 알아보려고 한다.

1. git 사용 시작하기

git으로 버전관리 (형상관리)를 시작하는 방법에는 크게 2가지가 있다. 첫 번째는 앞 GitHub의 글에서 보듯이 서버에서 먼저 프로젝트 (repository)를 만들고 복제 (clone)을 해서 시작하는 방법이다.

 

git clone https://github.com/hydroponix/germinate.git

 

 

두 번째는 내 컴퓨터에서 먼저 프로젝트, 또는 폴더를 만들고 시작하는 방법이다.

 

cd ./arduino
mkdir germinate
cd germinate
git init

 

IDE에서 프로젝트를 시작하는 경우나 React의 create-react-app이나 Next의 create-react-app과 같은 도우미 명령으로 프로젝트를 생성하는 경우 폴더가 자동으로 만들어지기 때문에 만들어진 폴더를 git이 관리할 수 있도록 초기화 (init)하는 이 방법이 더 자연스러운 절차가 된다. 물론 IDE에서는 project share 같은 메뉴를 사용하면 된다.

2. git 사용 끝내기

폴더를 더 이상 git으로 관리하지 않으려면 ./git 폴더 아래의 내용을 모두 지우면 된다. 추가로 .gitignore 같은 파일도 지워도 되는데 지우지 않더라도 더 이상 프로젝트 관리에 영향을 미치지 않는다.

 

(우분투 또는 Git-bash에서는) rm -rf ./git
(또는, 윈도우 CMD에서는) rmdir /S ./git

3. 내 폴더의 관리 상태 알아보기

내 프로젝트 폴더를 git으로 관리하도록 설정하고 나서 germinate.ino라는 프로그램을 하나 만들고 나서 git에게 내 폴더의 관리 상태가 어떤지 물어보자.

 

git status

 

 

git status는 git이 관리하고 있는 폴더의 상태를 자세하게 알려준다. 어떤 파일이 변경되었는지 아니면 삭제되었는지, 또는 어떤 파일이 새로 만들어졌는데 아직 관리되고 있지 않은지 (위에서 처럼 untracked files에 나옴) 알려준다.

 

git add 명령으로 파일을 등록하고 나면, "4. git 프로젝트에 소스코드 등록하기" 단계를 지나 git status 명령을 실행하면 다음과 같이 new file로 상태가 변경된 것을 볼 수 있다.

 

4. git 프로젝트에 소스코드 등록하기

이제 내가 만든 프로그램을 git add 명령을 사용해 추가한다. 개발하면서 만들 소스코드를 git으로 버전관리 (형상관리) 하기 위해서는 git add 명령으로 먼저 관리할 목록으로 등록해야 한다. git add 명령을 사용해도 git 저장소에 내 프로그램이 저장되지는 않는다.

 

git add 명령어는 윈도우나 리눅스의 파일시스템에서 파일과 폴더를 접근하는 것과 유사한 방법으로 관리하고자 하는 대상을 지정한다. 예를 들어 파일 하나만 등록하려면

 

git add germinate.ino

 

을 입력하지만 나처럼 많은 사람들은 한 번에 추가하는 것을 선호한다. 현재 폴더 아래의 모든 내용을 등록하려면

 

git add . 
(또는) git add *

 

 

만일 하나씩 검토하면서 등록하려면 -i (interactive) 옵션을 선택하면 된다. 

 

git add -i [대상 지정]

 

이 밖에도 많은 옵션이 있는데, 모든 옵션을 확인하고 싶으면

 

git add -?

 

이라고 치면 자세한 내용이 나온다.

5. git에 저장하기 (내 컴퓨터 저장소)

이제 소스코드를 git으로 관리하겠다고 등록했으니 내 컴퓨터의 git 저장소 (repository)에 저장하는 commit명령을 실행한다. 

 

git commit -m "germinate.ino is added."

 

 

-m 은 git에 저장할 때 이번제 저장한 소스코드는 어떤 내용인지 메시지를 기록하는 옵션이다. 원칙적으로는 위의 예처럼 쓰는 것보다 자세한 내용을 쓰는 것이 좋다. 기록을 할 때에는

 

  • 어떤 기능이 추가, 변경, 삭제되었는지
  • 어느 모듈이 추가, 변경, 삭제되었는지
  • 어느 파일이 추가, 변경, 삭제되었는지
  • 만일 이슈관리 프로그램과 연결되어 있으면, 몇 번 이슈에 대한 내용을 어떻게 변경했는지

등을 자세히 기록해야 한다. 작성할 때는 귀찮다고 생각이 드는데, 몇 개월 뒤에 다시 소스코드를 찾아보면 이 메시지가 얼마나 고마운지 알 수 있데 된다.

 

하지만 나는 처음으로 파일을 만들어 등록했다는 가정으로 메시지를 간단하게 써봤다. 자세하게 내용을 작성할 때는 -m을 빼고 실행하면 git이 에디터를 열어주기 때문에 메시지를 작성하는데 좀 더 편리하다.

 

만일 아래와 같은 메시지가 나오면 

 

 

git을 설치하고 나서, email과 name을 설정하지 않아서 생긴 사소한 문제이므로 global로 config를 설정하면 다음부터는 하지 않아도 된다.

 

git config --global user.email "myemail@daum.net"
git config --global user.name "hydroponix"

 

만일 프로젝트별로 다르게 설정하고 싶으면 (컴퓨터를 공유해서 사용하는 경우 주로 발생)  --global 옵션을 빼면 된다.

6. 버전관리 (형상관리) 현황 보기

commit을 하고 나면 처음으로 git 저장소에 내 프로그램이 하나의 버전 (형상)으로 등록이 되었다. 지금까지 관리되고 있는 현황 (history)을 보려면 

 

git log

 

 

작업 branch가 있는 경우 --graph 옵션을 사용하면 연결관계를 쉽게 파악할 수 있다.

 

 

지금은 단순한 구조여서 그렇지만 작업 branch들이 생기면 왼쪽에  branch 간의 관계를 표시하는 여러 선이 보이게 된다.

7. 서버로 저장

이제 내 컴퓨터에 있는 소스코드를 안전한 서버로 저장한다.

 

git push

 

 

GitHub에서 만들 프로젝트를 복제 (clone)해서 작업하지 않고 내 컴퓨터에서 먼저 작업해서 GitHub으로 올리는 경우, 아래와 같은 remote URL 정보가 없어 GitHub에 저장할 수 없다. 

 

git remote -v

 

 

이때에는 remote URL을 먼저 등록하면 된다.

 

git remote add origin https://github.com/hydroponix/germinate.git