Git
;버전관리 프로그램
코드를 작성하다 보면 이것저것 바꾸어 보고, 새로운 시도들을 하며 기존의 코드들을 덮어씌우게 된다. 그 새로운 시도가 잘 작동하지 않는다면, 다시 되돌아가야하는데 cmd+z의 한계를 넘어선 수정은 되돌리기 힘들다.
시점의 구분없이 항상 마지막 수정본만 가지는 파일의 특성상 버전이 변경될 때 마다 새롭게 저장을하며 파일 수 를 늘려야 했고, 변경사항들을 체크하려면 하나하나 열어보며 직접 비교를 했어야 했다.
다행히도 이런 고민들과 필요는 git이라는 깃똥찬 프로그램을 이끌어 냈다.
git을 통하여 파일들의 변경사항들을 추적하고, 원하는 시점(버전)들을 기록하여 자유롭게 그 시점들을 이동할 수 있게 되었다.
추가적으로 branch라는 개념의 도입으로 협업에서도 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고 같은 모듈을 개발하더라도 소스를 서로 공유하며 개발할 수 있는 환경을 만들어 주었다.
그 이외에도 유용한 기능들과 무료라는 이점 덕분에 최초 개발된 2005년 이후로 아직까지도 필수역량으로서 자리잡고 있다.
"Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency."
-https://git-scm.com/ (git공식사이트)
GitHub
;Git을 업로드 할 수 있는 웹사이트
git을 통해 추적하는 파일들의 버전을 업로드하거나 다른사람들의 버전을 다운받을 수 있다. git을 업로드하는 웹사이트는 몇가지 더 있지만, github이 가장 보편적으로 사용되고 있다.
"GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere."
-https://guides.github.com/activities/hello-world/ (github공식 사이트)
git init
git remote add origin [remote repository address]
git add .
git commit -m "[commit message]"
local directory에 git을 활성화한뒤 remote repository와 연결한다
추적할 파일들을 add 한뒤 그 시점(버전)을 commit한다.
여기서 commit message를 입력하는데, 권장되는 규칙이 있다.
올바른 commit message의 목적
commit message 규칙
commit message example
commit []
Author: []
Date: []
Simplify serialize.h's exception handling //제목
Remove the 'state' and 'exceptmask' from serialize.h's stream
implementations, as well as related methods.
As exceptmask always included 'failbit', and setstate was always
called with bits = failbit, all it did was immediately raise an
exception. Get rid of those variables, and replace the setstate
with direct exception throwing (which also removes some dead
code).
As a result, good() is never reached after a failure (there are
only 2 calls, one of which is in tests), and can just be replaced
by !eof().
fail(), clear(n) and exceptions() are just never called. Delete
them.
commit message에도 구조가 있다.
제목과 본문
그 구조를 잘 파악하고 규칙들을 적용하자.
tip. 제목이나 단행 commit message를 작성할 때,
(If applied, this commit will), [commit message]를 생각하면 좋다.
ex)
참조