2 minute read

★git은 버전관리 시스템이고, gitbash로 다룰 수 있다. 기본적으로 리눅스와 커맨드가 비슷하다.

★git init : 어떤 프로젝트의 루트에서 git bash에 이 커맨드를 입력하면 이제 이 프로젝트는 git이 관리하게 된다. 관리 정보는 .git(숨김폴더임)에 저장되어 있으므로 이 디렉토리를 삭제하면 관리정보가 모두 사라진다.

★git status : 현재의 프로젝트 상태를 확인한다.

★status의 원리 :
처음 소스를 수정하게 되면 그 소스는 git working directory에 위치하게 된다. git add를 하게되면 working directory상에 위치한 그 파일들이 index(staging area, cache라고도 함)에 등록되게 되고, 그 후 마지막으로 git commit을 하면 repository에 등록되게 되어 그 셋이 일치하면 git status가 nothing to commit이라고 알려준다. 버전등록이 완료된 것.

★git add [수정된 파일명] : 처음 어떠한 파일을 생성하거나 수정하면 아직 Git이 이 파일을 관리하지 않고 있기 때문에 이 상태에서 git status 커맨드를 입력하면 Untracked files가 있다는 메시지가 뜬다. git add를 해줘야 git이 이 파일을 추적하기 시작한다. 이 작업이 끝나면 commit을 할 수 있다. add가 된 파일들은 stage라는 곳으로 이동…은 아니고 상태로 변한다.

★버전을 등록하기 전에 누가 만든 버전인지를 명시하기 위해 사용자 정보를 등록해야 한다

git config --global user.name dh
git config --global user.email laniakea33@naver.com

이 작업은 딱 한번만 해주면 된다.

★git commit : 새로운 커밋을 만든다. 여기서 커밋은 버전을 뜻한다. 이 커맨드를 입력하면 vi에디터가 열리는데 여기에 버전의 정보들을 입력하고 저장한다. stage에 있는 파일들이 commit되면 repository상태로 간다.

★git commit -a : 수정/삭제된 모든 파일을 모두 stage에 자동으로 올려줌

★git commit -m “메시지” : commit메시지를 여기다가 쓸 수 있음

★git commit –amend : 마지막 commit메시지의 내용을 바꿀 수 있음.

★git log : 현재 커밋의 내역을 확인할 수 있음

★git log -p : 버전사이의 소스의 차이를 확인할 수 있다.

★git log master..exp : 두 branch간의 로그의 차이를 보여줌 master에는 없고, exp에는 있는 commit들을 보여준다. -p옵션으로 소스의 차이도 알 수 있다.

★git log –branches –decorate –graph : 모든 branch의 log들을 graph를 사용해 어떻게 분기되어 왔는지 쉽게 확인할 수 있다. –oneline까지 붙여주면 한줄로 확인할 수 있음

★git diff : working copy와 index의 내용의 차이를 보여줌

★git diff 커밋아이디..또다른커밋아이디 : 서로 다른 두 버전의 차이를 확인할 수 있다. add하고 diff하면 더이상 안보임

★과거로 돌아가기 = commit을 취소하기 : reset, revert 두가지 방법이 있는데 항상 조심해서 할 것

★git reset [복귀할commit아이디] –hard : 해당 commit으로 복귀할 수 있다. 그 이후의 버전은 모두 사라진다. 진짜 삭제된건 아니므로 복구가 가능하긴 함. 근데 나중에 공유하기 시작하고나서는 절대로 리셋을 하면 안되므로 공유하기전에만 사용. –hard는 사실 위험한 옵션이므로 원리를 알고나면 다른 옵션을 사용할 수도 있음

★reset시 사용할 수 있는 옵션들 GIT에는 3가지 요소가 있다.

  1. working directory(1) = working tree, working copy
  2. index(2) = staging area, cache(index파일 참조)
  3. repository(3) = history, tree(refs/heads/master파일 참조)

옵션에 따라 취소되는 요소가 달라진다
–hard : 위험 but 심플. 3,2,1이 모두 초기화 된다.
–mixed(default) : 2와 3만 초기화 된다.
–soft : 3에서만 초기화 된다. 1과2는 초기화되지 않음

★git revert는 reset처럼 삭제해버리는게 아니라 commit을 취소하며 다시 새로운 버전을 만드는 명령어

Categories:

Updated: