Git 명령어
1. GIT MODIFIED 취소
1) 레파지토리 내 모든 수정 되돌리기
$ cd {repository_root_dir}
$ git checkout .
2) 특정 폴더 아래의 모든 수정 되돌리기
$ git checkout {dir}
3) 특정 파일의 수정 되돌리기
$ git checkout {file_name}
2. GIT ADD 취소
실수로 git add * 명령어로 모든 파일을 Staging Area 에 넣은 경우, 아래의 명령어를 통해 파일을 Unstage 상태로 변경할 수 있다.
git reset HEAD [file] //선택한 파일만 적용
git reset HEAD //모든 파일에 적용
3. GIT COMMIT 취소
// [방법 1] commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존
$ git reset --soft HEAD^
// [방법 2] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에 보존
$ git reset --mixed HEAD^ // 기본 옵션
$ git reset HEAD^ // 위와 동일
$ git reset HEAD~2 // 마지막 2개의 commit을 취소
// [방법 3] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
$ git reset --hard HEAD^
commit message 변경하기
가장 최신의 commit 을 덮어쓴다.(업데이트)
$ git commit --amend
4. GIT PUSH 취소
이 명령을 사용하면 자신의 local의 내용을 remote에 강제로 덮어쓰기를 하는 것이기 때문에 주의해야 한다.
되돌아간 commit 이후의 모든 commit 정보가 사라지기 때문에 주의해야 한다.
특히, 협업 프로젝트에서는 동기화 문제가 발생할 수 있으므로 팀원과 상의 후 진행하는 것이 좋다.
1. 워킹 디렉터리에서 commit 되돌린다.
가장 최근의 commit을 취소하고 워킹 디렉터리를 되돌린다.
// 가장 최근의 commit을 취소 (기본 옵션: --mixed)
$ git reset HEAD^
커밋 두개 취소하기
원하는 시점으로 워킹 디렉터리를 되돌린다.
// Reflog(브랜치와 HEAD가 지난 몇 달 동안에 가리켰었던 커밋) 목록 확인
$ git reflog 또는 $ git log -g
// 원하는 시점으로 워킹 디렉터리를 되돌린다.
$ git reset HEAD@{number} 또는 $ git reset [commit id]
2. 되돌려진 상태에서 다시 commit을 한다.
$ git commit -m "Write commit messages"
3. 원격 저장소에 강제로 push 한다.
$ git push origin [branch name] -f
또는
$ git push origin +[branch name]
// Ex) master branch를 원격 저장소(origin)에 강제로 push
$ git push origin +master
TIP 경고를 무시하고 강제로 push 하기
[방법 1] -f 옵션
–force 옵션과 동일하다.
[방법 2] +[branch name]
해당 branch를 강제로 push한다.
5. untracked 파일 삭제
$ git clean -f //디렉터리를 제외한 파일들만 삭제
$ git clean -f -d//디렉터리까지 삭제
$ git clean -f -d -x//무시된 파일까지 삭제
6. GIT STASH
아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다. git stash 명령을 사용하면 워킹 디렉토리에서 수정한 파일들만 저장한다.
Modified이면서 Tracked 상태인 파일
1) Tracked 상태인 파일을 수정한 경우
2) Tracked: 과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태의 파일
Staging Area에 있는 파일(Staged 상태의 파일)
1) git add 명령을 실행한 경우
2) Staged 상태로 만들려면 git add 명령을 실행해야 한다.
3) git add는 파일을 새로 추적할 때도 사용하고 수정한 파일을 Staged 상태로 만들 때도 사용한다.
// working directory에 있는 파일의 상태 확인
$ git status
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: lib/simplegit.rb
$ git stash
$ stash save
for more detail: https://gmlwjd9405.github.io/2018/05/18/git-stash.html
7. git commit 후 빠진 파일/변경사항 추가하기 -> $ git commit --amend
: 자동으로 텍스트 편집기를 실행시켜서 마지막 커밋 메시지를 열어준다. 편집기에서 메시지를 바꾸고 닫으면 바뀐 메시지로 마지막 커밋을 수정한다.
fetch 와 pull 의 차이점
출처: https://stackoverflow.com/questions/21756614/difference-between-git-merge-origin-master-and-git-pull
출처:https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html