1. LOCAL REPO
1) local repo init
git config --global user.name "test1"
git config --global user.email test1@test.co.kr
git init
git commit --message 'test'
4) 변경 history 보기
git log
5) 변경 차이 보기
git diff master~1 master (--stat or --word-diff)
git diff 123443 123444
git diff master (current dir과 마지막 커밋과 비교)
git diff (current dir과 staging 내용 비교)
2. REMOTE REPO
1) remote repo 추가 (여러개 remote repo 추가 가능)
cd /tmp/test
git remote add origin https://github.com/test/test.git (remote repo name : origin)
git remote --verbose
git remote show (remote 상세한 정보 보기)
git remote prune (다른 사용자에 의해 삭제된 branch 정보 삭제)
2) source get
git fetch (remote 변경 데이터 가져옴, no merge)
git pull (remote 변경 데이터를 가져와서 local과 merge)
==> git fetch, git merge origin/master
3) source put
git push
git push --set-upstream origin master (처음 remote branch를 생성하기 위해 push 할때 사용)
git push --delete origin test1 (test1를 지우고 현재 master push)
4) source 복제
remote에 repo를 복사하여 local에 구성
git clone https://github.com/test/test.git
git clone https://github.com/test/test.git test1 (test1에 remote clone)
git remote --verbose
3. 새로운 Branch 구성
1) branch 생성
git branch test1
git checkout test1 ( checkout : 새로운 브랜치로 이동 )
git checkout --force
git stash
git branch --delete test1 ( test1 브랜치 삭제)
2) git branch list
git branch
git show-branch
4. Git 일반 기능
1) mv
git mv test1 test2
git commit --message "test2"
2) rm
git rm test3
git commit --message "remove test3"
3) reset
git reset --hard (index staging and working dir) , --mixed (index staging..)
last commit으로 되돌림.
git checkout master
git reset HEAD^
git reflog HEAD (head에 대한 log를 확인)
4) clean
git clean --force (untracked file들을 삭제, 임시 파일등등)
git clean -d -n ( d: directory, n : dry-run )
5) .gitignore
.gitignore 파일 생성
git add .gitignore
git commit --message "add ignore file"
git clean --force -X (gitignore에 표시된 파일 삭제)
6) stash
uncommitted change를 숨김처리
git stash save
git stash list
git stash pop (git stash apply -- 유지)
git stash clear
git update-idex --assume-unchanged test3
(test3 변경을 무시)
git ls-files -v (변경 무시된 파일 표시)
git update-index --no-assume-unchanged test3 (원래대로 돌림)
7) log
git log
git log --format=email --reverse --max-count 2
git log --format=fuller
git log --format="%ar %an did: %s" (ar : format date, an : author, %s : subject)
git log --oneline --graph --decorate ( 그래픽하게 log를 )
git blame --date=short test1.txt (test1.txt 파일에 대한 line별 변경 사항)
git bisect log (git bisect good/bad 로 설정한 bug log를 확인)
5. git merge
git checkout -b test-merge (새로운 브랜치 생성)
git mv test1.txt test11.txt
git add
git commit -m "test.."
git checkout master
edit test1.txt
git commit -m "test..."
git merge test-merge
git branch --delete test-merge
git show master
6. git rerere
merge conflict 발생시 기존에 해결한 절차를 반영하여 해결
git config --global --ad rerere.enabled 1 (enable)
git rerere forget test1.txt (test1.txt에 대한 conflict 해결 삭제)
7. git tag (reference)
버전 release시 태그를 추가함으로써 향후 해당 버전에 재테스트에 수행 대비
git checkout master
git tag v1
git tag
git tag 태그명 (--list or --force or --delete)
git push -tags ( remote repo에 tage push )
8. git cherry-pick
branch후 single commit를 main에 반영 하고 싶을때
git checkout -b test-v1.0
edit test3.txt
git commit --message "test...."
git cherry --verbose master ( master와의 차이 확인 )
git checkout master
git cherry-pick test-v1.0 ( conflict 발생시 : git cherry-pick --contine, git cherry-pick --abort )
9. git revert
commit를 되돌리고 싶을때..
git checkout master
git revert 34234
10. git rebase
branch 통합시 history를 rewrite하여 새로 설정
git checkout -b test-rebase
git commit --message "test....."
git checkout test
git rebase test-rebase
git pull --rebase (remote...)
git push origin +test
10. GitHub 사용
command tool (gh) 제공
git remote add origin https://~~~
git checkout -b test-br master
git commit "test"
git push --set-upstream origin test-br
gh pull-request