Git Advanced No.1

자본주의의 정점은 돈이 많은것도 유명해지는것도 아닌, 경제적 자유이다. 돈많은 백수는 한강뷰를 볼수있을때 진정한 경제적 자유를 얻은거라고 기준을 정했다. 감사해요 운도님. 쉴틈이 없다. 가자. 이고잉님 말씀대로 지옥에서온 깃.


1. Git Local Repository

깃은 개발자의 코드를 효율적으로 관리하기위한 분산형 버전 관리 시스템이다. Git에서 코드를 저장하는 공간을 저장소 즉, Repository라고 한다. 이 저장소의 공간은 로컬인 내 하드웨어와 원격공간. 리모트에 위치한 원격 저장소로 구분할 수 있다.

1.1. 절차

로컬의 디렉토리에서 git 저장소를 추가하면 해당 디렉토리의 파일 변화를 감지한다. 그 절차는 아래와 같다.

  1. $mkdir folderName: 코드를 저장할 폴더 생성(생성된 폴더내로 이동은 당연)
  2. $git init 해당 폴더에 깃 저장소 생성
  3. $git add: 이제 git관리하에 있는 상태로 올릴 수 있다. 이 영역이 staging area.
  4. $git commit: staging area의 파일은 commit할 수 있다. 로컬에 변화내용을 기록할 수 있다.

1.2. Usage Example

ty@DTHOME:~/Workspace/cs$ mkdir git-parctice
ty@DTHOME:~/Workspace/cs$ cd git-parctice
# git 상태확인 명령어
ty@DTHOME:~/Workspace/cs$ git status
# git 저장소가 아직 없음
fatal: not a git repository (or any of the parent directories): .git
ty@DTHOME:~/Workspace/cs/git-parctice$ git init
Initialized empty Git repository in /home/ty/Workspace/cs/git-parctice/.git/
ty@DTHOME:~/Workspace/cs/git-parctice$ git add
# 잘못된 문법. git add <경로명> || git add .(전체 한꺼번에 staging area로 올림)
Nothing specified, nothing added. Maybe you wanted to say 'git add .'?
ty@DTHOME:~/Workspace/cs/git-parctice$ git add .
ty@DTHOME:~/Workspace/cs/git-parctice$ touch index.html index.css
ty@DTHOME:~/Workspace/cs/git-parctice$ ls
index.css index.html
ty@DTHOME:~/Workspace/cs/git-parctice$ git status
# staging area로 옮겨지지 않았다면 파일이 빨간색으로 출력
# 잘 옮겨졌다면 new file: 이 붙고 초록색으로 출력
On branch master

No commits yet

Changes to be committed:
   (use "git rm --cached <file>..." to unstage)
      new file: index.css
      new file: index.html
# ...
# ...무언가의 작업 후
# ...
ty@DTHOME:~/Workspace/cs$ git status
# 현재의 브랜치
On branch master

No commits yet

Changes to be committed:
   # staging area제거 명령어 (unstage)
   (use "git rm --cached <file>..." to unstage)
      new file: index.css
      new file: index.html

Changes not staged for commit:
   # staging area로 추가
   (use "git add <file>..." to update what will be committed)
   # 변경사항 폐기(discard changes)
   (use "git restore <file>..." to discard changes in working directory)

2. Commit

제주도 3달살기할때 어리석은 나는 짐을 우체국제일 큰박스에 3개나 만들어간다. 정리를 하다보니 큰박스안에 작은박스로 소분하였다. 그리고 그 소분한 작은박스에 내용물을 순서대로 분류하여 각각 순서대로 메모하였다.

  • 큰박스: staging area
  • 큰박스 내 작은박스에 분류하여 메모: commit
    • $git commit: 작은박스에 저장
    • $git commit -m “고양이 장난감”: 작은박스에 메모

3. Staging Area

commit하기 전 내용을 기록하는 곳이다. 커밋 전 $git status로 staging area를 확인하는 것이 좋다. 코멘트는 달아야 나중에 어떤 작업을 했는지 알 수 있다.

ty@DTHOME:~/Workspace/cs/git-parctice$ git commit -m "코멘트는 필수"
[master (root-commit) cd8cd38] 코멘트는 필수
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.css
create mode 100644 index.html
ty@DTHOME:~/Workspace/cs/git-parctice$ git status
On branch master
nothing to commit, working tree clean

4. CodeStates Clean commit

  1. 작은 단위로 자주 하는게 좋다.
    • 코드를 잘못 적은 경우 복원이 쉽다.(참 어렵다. 자주 커밋하는게)
    • 누가 해당코드를 수정했는지 파악하기 쉽다(걸리기 쉽다^^ 그래서 자주안했나보다 껄껄)
      • merge, rebase 기능을 강력하게 만들어준다.
  2. 코멘트는 짧고 간결하고 사실적으로 작성한다. 협업을 위해서는 필수. 미리 약속을 정해도 좋고, 그런 약속이 없을 경우 글로벌약속(기존에 정해서 이렇게 하라고 하는게 존재한다. 기억은 안난다^^)을 따라간다.

참조

Git:book/Korean/v2