Git Command

Git 명령에 대한 팁이다.

* 원격저장소에 브랜치 생성
//master 브랜치에서 child 브랜치를 새로 생성한다
git branch child master 
//원격저장소에 적용
git push origin child
//child 브랜치로 이동
git checkout child
//push/pull 명령시 원격 저장소의 child 브랜치를 자동 지정하도록 설정한다.
git branch -u origin/child

-u 명령은 --set-upstream-to 명령과 동일하다
로컬 branch가 어떤 원격 브랜치와 연결 되어 있는지 볼려면 "git branch -vv" 명령을 사용하면 된다.
-vv 옵션으로 child가 어떤 리모트 브랜치를 자동으로 참고 하는지 확인해보자.

git branch -u 사용 전

  child  2bfebc1 first
* master 2bfebc1 [origin/master] first

git branch -u 사용 후

* child  2bfebc1 [origin/child] first
  master 2bfebc1 [origin/master] first

* 원격저장소 브랜치 삭제
//로컬 child 브랜치 삭제
git branch -d child
//원격저장소 child 브랜치 삭제
git push -d child

* unstaged 파일을 head 내용으로 되돌리기 (svn revert 명령어와 동일)
//작업중인 내용은 날라가며 복구는 불가능하다

git checkout -- filenmae
//모든 파일과 폴더를 되돌린다.
git checkout -- .

//"--" 명령을 생략하고 다음과 같이 사용할수 있다.
git checkout filenmae
git checkout .

* 로컬 작업 디렉토리에서 커밋 취소, 커밋 내용도 같이 취소
//마지막 헤드 커밋 취소
git reset --hard HEAD^
//마지막 헤드 커밋 취소, 위와 동일
git reset --hard HEAD~1

//마지막 헤드 커밋 3개 취소
git reset --hard HEAD~3

* untracked 파일 제거
git clean -fd
//위와 동일한 명령
git clean -f -d

-f: 파일 제거
-d: 디렉토리 제거
-x: .gitignore 목록에 있는 파일 제거

* 로컬에서 push 안된 마지막 commit 내용 수정
콘솔창에서 입력하는 컴맨드 방식과 git gui로 사용하는 방식 두가지를 알아 본다.

- 컴맨드 방식
수정된 내용 add하고 commit --amend한다
> git add main.c
> git commit --amend

- git gui 방식
오른쪽 아래 "Amend Last Commit" 체크 박스를 선택하고 "Unstaged Changes" 뷰에서 추가할 커밋 파일을 선택후 "Commit" 버튼을 누른다.