0. git이란?
프로젝트를 할 때, 여러 사람이 같은 파일을 수정할 일이 있을 것이다. 만약, 저장소에 Hi 라고 쓰인 문서가 있고 a와 b가 해당 파일을 수정하기 위해 원본을 다운받았다고 가정하자. a는 Hi everyone이라고 수정하여 저장소에 올리고, b는 Bye 라고 수정해서 저장소에 올렸다. 그렇게 되면 a가 수정한 부분은 날라가게 되고 b가 수정한 부분만 저장소에 남게 된다. git을 이용하면 이러한 문제를 방지할 수 있다.
git이란, 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. git의 특징을 정리하면 다음과 같다.
- 소스코드를 주고받을 필요가 없고, 같은 파일을 여러 명이 동시에 작업하는 등 병렬 개발이 가능해지며, 버전 관리가 용이하다.
- 네트워크가 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 폭파되어도 다시 원상복구할 수 있다. (branch)
- 팀 프로젝트 뿐 아니라 개인 프로젝트에서도 버전관리를 통한 체계적인 개발이 가능하고, 배포가 간단하다.
이번 포스팅에서는 git을 이용하여 파일 처리 예제를 다루어 볼 것이다.
1. git 저장소 만들기
우선 첫번째로, 관리할 파일들을 모아둘 저장소를 만들었다.
~/Desktop $ mkdir my-project ~/Desktop $ cd my-project |
그 다음, my-project 폴더를 git 저장소로 만들고 초기화 했다.
~/Desktop/my-project $ git init Initialized empty Git repository in C:/Users/S******/Desktop/my-project/. |
커밋을 하기 위해서는, 사용자 이름과 이메일을 등록해야한다.
~/Desktop/my-project $ git config --global user.name "사용자이름" |
2. git commit
commit이란, 파일 및 폴더의 추가/변경 사항들에 대해 기록을 하는 것을 말한다. 사용자는 파일을 수정한 후, 커밋 과정을 거쳐야 레파지토리에 저장할 수 있다. 직전 버전 기준으로 변경 사항만 기록하게 된다.
사용자가 커밋을 하는 과정에서 변경 기록이 가능한데, 이를 커밋 로그(Commit log: 변경 사항, 일시, 작성자를 담고있는 정보)라고 한다.
커밋을 하기 전에, git status로 커밋할 작업이 있는지 확인하는 작업을 해 보았다. (당연히 없겠지만)
~/Desktop/my-project (master) $ git status |
nothing to commit 이라는 메시지로 커밋할 내용이 없다고 나온 것을 볼 수 있다.
다음, 파일을 작성하여 커밋을 하기 위해 변경사항을 주었다.
~/Desktop/my-project (master) $ vi index.html |
<html></html>을 작성하고 esc+wq!로 저장하였다.
이 후, git status로 확인해보니
~/Desktop/my-project (master) $ git status On branch master
Untracked files: (use "git add <file>..." to include in what will be committed) index.html |
nothing added to commit but untracked files present (use "git add" to track)
라는 메시지가 나왔다. 추적하지 않는 파일에 새로 추가한 파일인 index.html이 빨간색으로 표시되어 있는 것을 확인할 수 있다. 이제 이 파일을 staged 상태로 변환해야 한다.
~Desktop/my-project (master) $ git add index.html ~Desktop/my-project (master) $ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: index.html |
untracked 대신 committ될 변경사항에 index.html이 올라갔다. staged되었다는 소리이다.
~Desktop/my-project (master) $ git commit -m "Add index.html" [master (root-commit) bc59452] Add index.html 1 file changed, 5 insertions(+) create mode 100644 index.html |
index.html 파일이 commit 되었다. -m은 커밋 로그를 지정하는 메시지이다. 이제 로그를 확인해보겠다.
~/Desktop/my-project (master) $ git log commit bc84730c0a8c2cfc3252259f76c658c47faf88c4c5 (HEAD -> master) Author: s**** <p*********8@a***.ac.kr> Date: Sun May 17 17:33:48 2020 +0900 Add index.html |
첫번째로 커밋한 결과를 볼 수 있다. "Add index.html" 는 로그를 적어, 후에 다른 사람이 수정된 내용을 간단하게 확인할 수 있게 한다.
이 후에도, 파일을 수정하면 git add-> git commit 순서로 수정 내용을 반영시켜주면 된다.
다음 포스팅에서는 브랜치에 대해 다루어 보도록 하겠다.
출처 : https://brunch.co.kr/@anonymdevoo/4, https://www.tuwlab.com/ece/22202, https://git-scm.com/book/ko/v2/
'github' 카테고리의 다른 글
Git 기능 구현 작업을 잘못된 브랜치에서 했을때 (0) | 2020.12.11 |
---|---|
Xcode와 github 연동하기 (0) | 2020.07.07 |