Critical

  • git ignore

 

Important

  • Atomic commits (커밋의 원자적 유지)
  • 좋은 커밋 메시지 작성
  • 깃 문서 탐색

 

Nice To Have

  • GUI 사용
  • Amending commits (커밋 변경)

 

깃의 문서는 https://git-scm.com 에서 볼 수 있다. 명령어의 기능이 궁금할 때 레퍼런스를 참조하면 된다.

 

* Atomic commits (커밋의 원자적 유지)?

가능하다면 커밋은 단일 기능이나 단일 변화, 수정만을 포함시켜야 한다.

한 커밋에 모든 변경사항들을 통합한다면 커밋을 롤백할 때 많은 작업들을 취소해야 할 수도 있다.

 

* 커밋 메시지 작성

현재 시제의 명령형 커밋 메시지를 사용할 것을 공식적으로 권장하고 있다.

예를들어 'x를 만들다', 'x를 변경하다' 등의 동사(영어 기준)로 표현해야 한다.

 

 

커밋 메시지를 넣지 않고 커밋을 하면 vim으로 진입하게 된다.

이 때 i를 입력하면 입력 모드로 바뀌고 메시지를 작성 후 esc입력, :wq를 입력하면 커밋 메시지가 추가되고 다시 터미널로 돌아온다.

-m 플래그를 통한 커밋은 보통 짧은 메시지를 쓸 때 사용되고 길게 쓸 필요가 있을 때 사용하면 될 것으로 보인다.

 

 

git log

--pretty : 로그가 출력되는 방식을 바꾼다.

--oneline (--pretty=oneline --abbrev-commit) : 해시 길이를 줄이고 커밋 메시지도 한줄만 출력한다.

 

터미널이나 GUI나 작동 방식은 동일하지만 GUI는 시각적으로 다이어그램을 볼 수 있으므로 흐름을 파악하는데 도움이 된다.

 

* Amending commits

직전의 커밋을 수정한다. 커밋에 파일을 포함시키는 것을 잊거나 메시지 오타 발생 등 커밋에 빼먹은 내용이 발생했을 때 수정할 수 있다. 반드시 "직전 커밋" 에만 사용할 수 있다.

git commit -m "something"
# 여기서 누락된 걸 확인했을 때
git add something.txt
git commit --amend

 

* git ignore

보통은 저장소의 최상위 폴더에 넣는다. 깃이 추적하길 원하지 않는 컨텐츠를 .gitignore에 작성 해놓으면 추적하지 않는다.

https://gitignore.io 에서 작업중인 프로젝트의 환경을 검색하면(ex: python) gitignore에 추가할 권장 내용들을 보여준다.

Critical

  • 깃 저장소의 개념
  • 명령어 git init/status
  • 커밋의 흐름 (명령어 git add/commit/log)

 

Important

  • .git 폴더에 대한 이해

 

깃 저장소는 작업공간이다.

 

git init

현재 있는 디렉토리를 새 저장소의 홈으로 만든다. init을 실행하기 전에 status로 먼저 확인해 주는 것이 좋다.

 

git status

현재 저장소의 상태를 확인한다.

 

.git 폴더를 삭제하면 저장소의 이력까지 모조리 사라진다.

 

저장소 안에 또 다른 저장소를 넣지 말아야 한다. (초기화된 저장소 안에서 또 초기화를 하지 말라는 뜻)

깃이 깃을 추적하기 때문에 혼란스러워진다.

 

* 커밋이란?

프로젝트의 변경 사항이 있는 일종의 체크포인트.

 

깃은 3개의 다른 영역으로 구분하여 사용한다.

  • 작업 공간(Working directory) : 현재 작업하고 있는 디렉토리. 깃에 추적되고 있지 않은 상태이다.
  • 스테이지 영역(Stage area) : 커밋하기 전에 변경사항들을 등록하는 곳.
  • 저장소(Repository) : .git 폴더가 존재하는 디렉토리.

 

git add

작업 공간에서 변경된 컨텐츠들이 자동으로 표시되고 커밋하기 전에 변경사항들을 선택하고 그룹화 시켜서 스테이지 영역으로 올린다.

'git add .' 실행 시 모든 변경사항들을 한꺼번에 스테이지 영역으로 올린다.

 

git commit

스테이지 영역의 내용을 저장소로 올린다.

-m 플래그와 같이 사용해서 메시지를 남긴다.

git commit -m "change something"

 

git log

커밋 정보들을 검색한다.

 

터미널 vs GUI

 

터미널

장점 : 속도가 빠르다. 개발 환경에 상관없이 작동하기 때문에 의존성이 없다.

단점 : 사용하기 어렵다.

 

GUI

장점 : 사용하기 편하다.

단점 : 작업의 추상화가 이뤄져서 이해가 어려울 수 있다. 툴에 의존성이 생긴다.

 

깃은 이름과 이메일을 설정해주어야 누가 작업했는지 알 수 있다.

주로 깃허브 로그인 이메일 주소와 같게 사용하는 편이다.

 

git config user.name : 등록된 유저의 이름 확인
git config user.email : 등록된 유저의 메일 확인

git config --global user.name : 유저 이름 등록
git config --global user.email : 유저 메일 등록

 

 

터미널 명령어

 

[탐색]

 

ls

list의 약어. 현재 디렉토리 또는 폴더에 있는 컨텐츠들을 나열한다.

ls -a : 숨김 상태인 파일과 폴더까지 보여준다.

 

open(맥) / start(윈도우)

finder(파일 탐색기)를 연다. 'start .' 입력시 현재 디렉토리의 탐색기가 열린다.

 

* ls와 start는 터미널로 보는가, GUI로 보는가의 차이일 뿐 똑같다고 볼 수 있을것이다.

 

pwd

현재 있는 디렉토리의 경로 출력.

 

cd

change directory의 약어. 'cd [디렉토리명]' 입력으로 디렉토리를 이동한다. 'cd ..' 은 한 단계 상위 폴더로 이동한다.

 

[파일 및 폴더 생성]

 

touch

현재 디렉토리에 파일을 생성한다. 하위 경로를 지정해서 해당 디렉토리에 생성시킬 수도 있다.

 

mkdir

make directory의 약어. 현재 디렉토리에 폴더를 생성한다. touch와 같다.

 

[파일 및 폴더 삭제]

 

rm

remove의 약어. 현재 디렉토리에 있는 파일을 삭제한다. 휴지통이 아닌 영구 삭제가 된다.

rm -rf : -recursive -force가 결합된 플래그. 현재 디렉토리에 있는 폴더를 삭제한다. 마찬가지로 영구 삭제가 된다.

rm playlist.txt
rm -rf Songs/

 

clear

커맨드(콘솔)창의 내용을 비운다.

Git은 가장 많이 사용되는 버전 관리 시스템(VCS)이다.

그 외 유명한 것으로는 Subversion, CVS, Mercurial이 있다.

 

VCS란?

파일의 변화를 시간에 따라 추적하고 관리하는데 도움을 주는 시스템.

 

Git은 일종의 체크포인트(세이브포인트)를 지정하는 것이다.

 

브랜치를 합쳐서 새로운 체크포인트를 생성할 수도 있다.

 

Git은 개발자 뿐만 아니라 정부, 과학자, 작가 등 다양한 분야에서 사용한다.

 

 

Git과 Github의 차이점

 

Git은 VCS이고 PC에서 실행된다. 인터넷이나 계정이 필요없다.

 

Github는 웹 서비스이고 Git 저장소가 필요하다. 인터넷과 계정이 필요하다.

Github는 사람들을 연결하고 Git프로젝트를 연결한다.

Github는 Git과 사용자를 위해 만들어진 도구이다.

유데미의 [한글자막] Git & Github 실무 활용 완벽 가이드를 보고 내용을 정리할 예정.

말머리는 [Git & Github]를 사용한다.

 

  • Git의 핵심 주제
  • Git의 중요한 내용이지만 사용 빈도가 빈번하지 않은 것들
  • Github 협업 워크플로우
  • 그 외 경험에서 겪은 Git

 

이 정도의 주제로 나누어져 있다.

 

The Git & Github Bootcamp

https://www.udemy.com/course/best-git-github/

+ Recent posts