명령어  설명
 # git pull  
 # git pull --rebase  git pull 할 때, merge branch가 발생하는 것 방지 
 # git status  
 # git add --all  수정된 모든 파일/폴더 commit 하기 위한 상태로 만든다.
 # git commit -m "msg"  commit 및 commit 메시지를 만든다.
 # git push origin HEAD:refs/for/'branchName'  수정된 내용을 Branch에 반영  (gerrit 을 사용할 때)
 # git branch -r  remote의 branch를 보여줌
 # git ls-remote  remote의 tag, branch 들을 모두 보여준다.
 # git diff   unstaged 상태(git add 전 상태)의 파일을 변경사항을 보여준다.
 # git diff --cached  staged 상태(git add 후 상태)의 파일을 변경사항을 보여준다.
   
git log --format="%C(auto)%H" --no-merges -1  
git log --format="%C(auto) %h %s" --no-merges --since=2.weeks  

 

 

- 수정내용 되돌리기

 1. UnStage 상태 일 때 (파일 변경만 해 놓은 상태),
   # git checkout .   전체 파일을 변경을 원래로 돌린다.
   # git checkout -f (or --force)   전체 파일을 변경을 원래로 돌린다. ( # git checkout . 와 동일 )
   # git checkout filename   특정 파일을 변경을 원래로 돌린다.
   # git checkout folderName    특정 폴더의 변경을 원래로 돌린다.
     
 2. Stage 상태 일 때 (git add --all 한 경우)
   # git reset   unstage 상태로 바꾼다.  ( 변경 상태는 유지 )
   # git reset --hard   모든 파일을 변경을 원래로 돌린다. (파일을 변경전으로 돌림)
     
 3. Commit 한 경우
   # git reset --soft HEAD^   모든 파일을 stage 상태로 만들고, commit만 취소한다.
   # git reset  HEAD^   모든 파일을 unstage 상태로 만들고, commit을 취소한다.
   # git reset --hard HEAD^   모든 파일을 변경을 원래로 돌린다. (파일을 변경전으로 돌림)
     
     
     

ref > http://hochulshin.com/git-revert-changes/

 

- git diff

 1. commit된 파일상태와 현재 수정중인 상태 비교
   # git diff   수정한 파일들의 수정 내용 확인
 2. commit된 파일상태와 add된 파일 상태 비교
   # git diff --stated   git add 후에 수정 내용 확인
 3. commit간의 상태 비교하기 - HEAD 이용
   # git diff HEAD HEAD^   가장 최근의 커밋과 그 전의 커밋을 비교한다
 4. commit간의 상태 비교하기 - commit hash 이용
   # git diff 048171 0c747d   commit의 hash 를 이용한 비교, tagbranch의 hash로도 가능
 5. branch간의 상태 비교하기 - HEAD 이용
   # git diff feature/test origin/master 서로 다른 Branch 와의 diff
     
 

'20. Programming > Tools - GIT' 카테고리의 다른 글

Gerrit 에서 HEAD:refs/for/branch 의미  (0) 2018.11.06
GIT - Change-Id 자동으로 넣기  (0) 2018.05.18
GIT - commit message  (0) 2018.05.18
GIT 기본 파일들  (0) 2018.05.18

Windows 7, 10 은 파일명(확장자포함), 폴더명에 대한 길이가 제한되어 있다. (256, 260)


Windows 10은 Registry 를 수정해서 처리 가능

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem


LongPathsEnabled 값을 찾아 1 로 수정


Windows 7은 이런게 없다. Workaround만 있음.

1. 특정 dir을 가상 드리이브로 만들어 사용 (파일복사, 삭제, 편집이 가능)

// 가상 드라이브 생성

C:\ subst z: c:\aaa


// 가상 드라이브 삭제

C:\ subst z: /d


2. 특정 dir을 심볼링크 (바로가기) 활용 (파일복사, 삭제, 편집이 가능)

C:\ mklink /J C:\link    D:\looooooooooooooooooooooooooooooooong\path


삭제는 파일 삭제하듯 탐색기에서 삭제 하면된다 (내부 파일/폴더 지워지지 않음)



출처: http://bwhite.tistory.com/1153

 

Change-Id는 cherry-picks 와 git commit --amend 등등 commit을 tracking (찾기) 하는 용도로 사용된다.

(ref site : https://gerrit-review.googlesource.com/Documentation/cmd-hook-commit-msg.html)

 

commit을 할 때, 자동으로 들어간다면 편하겠지.

 

이걸 할라면 githooks (https://git-scm.com/docs/githooks) 를 알아야 한다.

위 사이트 정독 필요한데 대충 이해한 것만 포스팅함..

 

git init may copy hooks to the new repository, depending on its configuration. See the "TEMPLATE DIRECTORY" section in git-init[1] for details. When the rest of this document refers to "default hooks" it’s talking about the default template shipped with Git. 

 

 

간단 원리 설명 (Change-Id 자동 입력에 대해서만)

commit message 저장 하면 (vi editor에서 저장하면

1. .git/COMMIT_EDITMSG 파일이 생성

2. .git/hooks/commit-msg   .git/COMMIT_EDITMSG 이 수행되어

commit message 중에 comment 부분을 모두 삭제

Change-Id를 얻어온 후 COMMIT_EDITMSG에 Change-Id 삽입

 

 

 

 

 

(1) How to set

- .git dir 하위에 바로 적용

hooks dir 생성

project dir ] $ mkdir  ~.git/hooks/

 

commit-msg 파일 얻기

$ scp -p -P 29411 account@(your Gerrit review server):hooks/commit-msg  .git/hooks/

 

 

(2) How to set

- template dir를 지정한 후 사용

- 장점 :  - 여러 project에 동일하게 적용해야 할 때 편리함.

            - git clone 하면 자동적용됨 (git clone 시 git init이 수행됨)

template dir 지정

$ git  config  --global  init.templatedir  ~/git_template_dir

 

hooks dir 생성

$ mkdir  ~/git_template_dir/hooks/

 

commit-msg 파일 얻기

$ scp -p -P 29411 account@(your Gerrit review server):hooks/commit-msg ~/git_template_dir/hooks/

 

현재 project에 적용 (git init을 하면 template dir 의 내용을 .git dir 하위에 모두 복사한다.)

project dir ] $ git init

 

hooks 확인 (commit-msg 파일이 있는지)

project dir ] $ ls -al  ./.git/hooks/commit-msg

 

Change-Id 들어 갔는지 확인 (commit message를 저장 한 후. .git/COMMIT_EDITMSG를 확인한다)

project dir ] $ cat .git/COMMIT_EDITMSG

 

 

'20. Programming > Tools - GIT' 카테고리의 다른 글

Gerrit 에서 HEAD:refs/for/branch 의미  (0) 2018.11.06
GIT 기본적 명령어 (수정되돌리기 추가)  (0) 2018.10.30
GIT - commit message  (0) 2018.05.18
GIT 기본 파일들  (0) 2018.05.18

+ Recent posts