git diff
- 아직 스테이징 되지 않고 커밋되지 않은 작업 디렉토리의 untracked파일의 변경 사항을 보여준다.
git diff --cached
- 스테이징 되어 커밋 대기 상태에 있는 tracked된 파일의 변경 사항을 보여준다.
git diff commit1 commit2
git commit --amend
- 마지막 커밋에 추가할 사항이 있는 경우 덮어씌운다.
git reset --soft HEAD~
- HEAD를 특정 커밋으로 이동시킨다.
- WD 파일 보존, 해당 파일은 staged로 이동한다.
- commit하면 원래 상태로 복원이 가능하다.
- staging area에 add된 상태이다.
git reset HEAD~2
git reset --mixed HEAD~
- default 옵션이다.
- WD 파일 보존, 해당 파일 unstated, HEAD이동
- ~이 하나이므로 한 칸 이전으로 가겠다는 것이다.
- staging area에 add되지 않은 상태이다.
git reset --hard HEAD~
- WD파일 변경 사항을 삭제한다. 해당 파일을 unstaged하며, HEAD dlehdgksek.
git rm sample.txt
- sample.txt의 git 저장소와 로컬디렉터리(WD) 모두 삭제한다.
git rm --cached sample.txt
- sample.txt의 git 저장소만 삭제한다. 로컬디렉터리(WD)는 삭제하지 않는다.
git clone “Remote repo URL”**
- 원격 저장소에서 로컬 저장소로 복제한다.
- 현재 내가 있는 폴더 밑에 생긴다. 그래서 해당 버전과 파일이 복제된다.
git clone “Remote repo URL” abc
- 클론해 올 저장소의 주소(Remote repo URL)를 지정하고, 저장소를 로컬에 복제할 위치(abc)를 지정한다.
git clone -b Lab1 “Remote repo URL” abc
git remote
- 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다.
git remote -v
git remote add origin “remote repo URL”
git remote remove origin
git pull 사용법
- remote에서 생긴 변경사항을 내 repository에 넣는다.
git push 사용법
- 변경 사항을 원격 repository에 넣는다.
git fetch 와 git pull의 차이
- git fetch는 내 repository를 그대로 두고 새로운 branch를 만들어서 가져온다.
- git pull은 내 새로운 branch를 만들지 않고 repository에 넣는다.
- git pull은 fetch + merge와 같다.
git branch –h
git branch -a
git branch
git branch issue1
git branch –d issue1
- 작업 중인 파일이 없는 경우 해당 브랜치(여기서는 issue1)를 삭제한다.
git branch issue2
git checkout issue2
- 현재 master 브랜치에서 issue2 브랜치로 이동한다.
git checkout –b issue1
- 브랜치 생성과 체크 아웃을 한번에 한다.
- issue1이라는 브랜치를 생성하고, 생성된 새로운 브랜치로 체크아웃된다.
git branch –D issue1
- 로컬 브랜치를 삭재한다.
- issue1이라는 로컬 브랜치를 삭제한다.
- 작업 여부와 상관 없이 삭제한다.
git checkout master
git stash
- 현재 작업 내용을 임시 저장하여 보관하는 장소이다.
- Working Directory에서 수정한 파일만 저장.
- 현재 진행 중이던 내용들을 git stash로 저장해두고 다른 브랜치로 이동하여 작업한 뒤 다시 돌아와 복구하여 작업을 계속할 수 있다.
git stash save
git stash list
- 그동안 저장되었던 작업들의 리스트를 볼 수 있다.
git stash pop
- stash list의 가장 최근 작업을 가져오고 stash list에서는 삭제한다.
git stash apply
- stash에 저장된 내용을 다른 브랜치에 적용한다.
- git stash pop과 비슷하지만, 목록에서 삭제하지는 않는다. 그러므로 여러 브랜치에서 저장된 내용을 적용하는 것이 가능하다.
git stash drop
git stash clear
git merge TopicA
- 작업 중이던 TopicA를 merge하겠다는 것.
git merge --no-ff TopicA
- fast-forward인 경우에도 반드시 병합 커밋을 만든다.
- 다른 branch에서 merge 했다는 이력을 history에서 잘 보이게 연결할 수 있으며, merge commit을 통해 merge하면서 일어난 변경 사항을 하나로 묶어 볼 수 있다.
merge conflict 상황설명
- merge conflict는 두 브랜치에서 같은 파일을 수정하여 각각 커밋한 후, 병합하는 경우 발생한다.
merge conflict 해결방법
- 파일의 내용을 적절히 수정해서 해결할 수 있다.
- git add로 해결할 수 있다.
- git commit으로 해결할 수 있다.
revert 와 reset의 차이
- 특정 커밋으로 되돌아갈 수 있다. 취소할 때 사용한다.
- reset: 최근 커밋부터 특정 커밋 이후의 버전들을 히스토리에서 삭제. 삭제하지 않고 새롭게 생긴다.
commit 취소. 특정 커밋으로 돌아감으로 취소 작업을 수행한다.
- revert: 현재에 있으면서 과거의 특정 사건들만 없던 일로 만든다. 실제로 삭제하고 취소한다.