반응형

git init
//만약에 .git 파일이 없다면 이 커맨드를 입력

git remote add origin <server repo url>
git push --mirror

위와 같이 하면 Local Git의 히스토리 까지 모두 서버로 옮길 수 있다.


만약에 제대로 Remote 서버가 등록 되었는지 알아보려면 아래의 커맨드를 실행하면 알 수 있다.


git remote -v

'Tools > GIT Tutorial' 카테고리의 다른 글

Git SubModule 사용하기  (0) 2017.08.30
Git Server에 커밋을 RollBack해야 할 때  (0) 2017.04.20
Git Alias [유용한 나의 Alias]  (0) 2016.12.01
Git Log Filtering  (0) 2016.11.17
Git 자주 사용하는 Command  (0) 2016.08.27
반응형
[alias]

 st = status -s

 cl = clone

 ci = commit

 cm = commit -m

 cma = commit -a -m

 ca = commit --amend

 amend = commit --amend

 caa = commit -a --amend -C HEAD

 filelog = log -u

 fl = log -u

 ai = add --interactive

 co = checkout

 br = branch

 bra = branch -ra

 le = log --oneline --decorate --remotes --branches

 ll = log --pretty=format:%C(yellow)%h%Cred%d\\ %Cblue\\ [%cn]%Creset%s --decorate --numstat

 ls1 = log --pretty=format:%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn] --decorate

 lds = log --pretty=format:%C(yellow)%h\\ %C(green)%ad%Cred%d%Creset\\ [%cn]\\ %<(20)%s --decorate --date=format:%y/%m/%d_%H:%M:%S --graph

 ldsa = log --pretty=format:%C(yellow)%h\\ %C(green)%ad%Cred%d%Creset\\ [%cn]\\ %<(20)%s --decorate --date=short --graph --remotes --branches

 ls = log --pretty=format:%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn] --decorate --date=relative

 lc = "!f() { git ll $1^..$1; }; f"

 lnc = log --pretty=format:%h\\ %s\\ [%cn]

 la = !git config -l | grep alias | cut -c 7-

 diff = diff --word-diff

 d = diff --word-diff

 dc = diff --cached

 dl = !git ll -1

 dlc = diff --cached HEAD^

 dr = "!f() { git diff -w $1^..$1; }; f"

 diffr = "!f() { git diff $1^..$1; }; f"

 branch = branch -ra

 r = reset

 r1 = reset HEAD^

 r2 = reset HEAD^^

 rh = reset --hard

 rh1 = reset HEAD^ --hard

 rh2 = reset HEAD^^ --hard

 rbp = rebase -p

 svnr = svn rebase

 svnd = svn dcommit

 svnl = svn log --oneline --show-commit

 sl = stash list

 sa = stash apply

 ss = stash save

 cp = cherry-pick

 grep = grep -Ii

 gr = grep -Ii

 gra = "!f() { A=$(pwd) && TOPLEVEL=$(git rev-parse --show-toplevel) && cd $TOPLEVEL && git grep --full-name -In $1 | xargs -I{} echo $TOPLEVEL/{} && cd $A; }; f"

 f = !git ls-files | grep -i

 done = "!f() { git branch | grep $1 | cut -c 3- | grep -v done | xargs -I{} git branch -m {} done-{}; }; f"

 assume = update-index --assume-unchanged

 unassume = update-index --no-assume-unchanged

 assumed = !git ls-files -v | grep ^h | cut -c 3-

 unassumeall = !git assumed | xargs git update-index --no-assume-unchanged

 assumeall = !git st -s | awk {'print $2'} | xargs git assume

 lasttag = describe --tags --abbrev=0

 lt = describe --tags --abbrev=0

 ours = "!f() { git co --ours $@ && git add $@; }; f"

 theirs = "!f() { git co --theirs $@ && git add $@; }; f"

 rem = !git config -l | grep remote.*url | tail -n +2

 lap = "!f() { git --git-dir=$1 format-patch -k -1 --stdout $2 | git am -3 -k; }; f"

 sba = "!f() { git subtree add --prefix $2 $1 master --squash; }; f"

 empty = !git commit -am\"[empty] Initial commit\" --allow-empty

 ra = "!f() { git remote add $1 https://bitbucket.org/$2.git; }; f"

 gm = merge --no-ff

 arch = archive -o
반응형

1. Commit 한 사람으로 필터링

git log --author=<pattern>

ex) git log --author=홍길동


2. 날짜 이후로 필터링

git log --after={2011-11-11} ---> 11/11이후이 커밋만 보여준다.


3. 커밋 메세지로 필터링.

git log --grep=<pattern>

ex) git log --grep=메세지내용


4. Log에서 File 상태까지 보고 싶을때

git log --name-status


반응형

[text]    : 선택사항 값

<text>  : 반드시 입력해야하는 값 


1. Branch 관련 명령어

git checkout -b <브랜치이름>    - 현재 시점에서 새로운 브랜치를 생성하면서, Checkout하는 명령어

git push origin <브랜치이름>    - 로컬 브랜치를 원격 브렌치에 업데이트 , 또는 원격 브랜치 생성

git checkout <브랜치이름>    - <브랜치이름>해당 브랜치로 Checkout

git branch 

git branch --list    - 현재 로컬 브랜치 목록을 보여줌

git branch -r 

git branch -r --list    - 원격 브랜치 리스트를 보여줌

git branch -d <브랜치이름>    - 로컬 브랜치를 삭제함

git push origin -d <브랜치이름> - 해당 리모트 브랜치를 삭제함



2. Merge 관련 명령어
git fetch origin [브랜치이름]   - 리모트 브렌치의 히스토리 상태를 업데이트 함
git merge <브랜치이름>    - 해당 브랜치와 현재 브랜치를 병합
git rebase origin/<브랜치이름>    - 해당 브랜치를 리베이스 함


3. Commit 관련 명령어

git stage -A    - 현재 변경사항을 Stage함

git reset    - 현재 Stage에 올라간 파일들을 Unstage함.

git commit -am "커밋메세지"    - 현재 커밋 메시지로 Commit

git status     - 현재 로컬 브랜치 변경사항을 표시

git checkout -- .    -현재 모든 변경사항을 제거함.(함부로 사용하지 말것)



4. merge 충돌 관련 명령어

git mergetool    -현재 충돌난 상태를 외부 병합툴로 실행

git diff     - 변경 전후 상태 비교

git merge --abort   - 현재 병합중 취소

git rebase --continue    - 계속해서 rebase 병합함

git rebase --abort    - 리베이크 병합 취소


5. 소스 추출시 Tracking된 파일만 압축

git archive -o latest.zip HEAD

 

Tag 달기


 git tag <tagName> [Hash code]    : 태그 생성.

 git push origin master <tagName> : 특정 태그만 원격저장소에 올리기

 git push --tags  : 모든 태그를 원격저장소에 올리기

 

 Tag 삭제.

 git tag -d <tagName>     : 특정 태그 삭제

 git  push origin :refs/tags/<tagName> : 원격저장소에 태그 삭제.

 

 

 Git File목록 검색 

 

 git ls-files | grep -i <pattern>


파일을 수정한 부분중 특정 부분만 찾아서 되돌리고 싶을때


git difftool -y #ref -- /path/aa.cpp

머지 툴을 이용해서 해당 부분을 찾아서 되돌릴 수 있다.


6. MergeTool 이나 DiffTool을 사용할 때 등록되어 있는 Tool을 선택해서 사용할 수 있다.


git mergetool -t <toolname> OR git mergetool -tool=<toolname>

git difftool -t <toolname> OR git difftool -tool=<toolname>


ex)git difftool -t p4merge, git mergetool -t tortoisemerge ...등등


* toolname : .gitconfig 파일에 등록되어 있는 Tool이름을 의미 한다.



+ Recent posts