같이보기
git update-index —assume-unchanged <파일명>
- 커밋무시
git update-index —no-assume-unchanged <파일명>
- 커밋 무시 되돌리기
git fetch —all
- 모든 브랜치 패치하기
git fetch —all —prune
- 원격저장소 삭제된 브랜치 정보 정리
git rm -r —cached .
.gitignore
적용 안될때 캐시제거
git add <. | 파일명>
- 변경사항 스테이징 (스테이징 해야만 커밋가능)
.
은 모두 선택
git restore <. | 파일명>
- 변경사항 취소 (스테이징 된거 제외)`
.
은 모두 선택
옵션
--staged
:- 스테이징 취소하기 (변경사항은 유지)
git pull
- 원격 pull 하기
- 만일 커밋 이후에
pull
을 통해서 원격 브랜치 변경사항을 받아오면 merge 커밋이 생김 - 커밋안한 변경사항 있는 상태에서
pull
할때 해당 변경사항과 충돌이 생기는 경우 pull 이 안되기에stash에 저장
하거나,커밋
하거나버리거나
해서 변경사항 없는 상태로 만들어야 함
git pull <원격저장소> <브랜치>
- 특정 브랜치 pull 하기
옵션
--ff-only
- pull 할때 merge 안생기게
fast-forwarded
로 하게끔
- pull 할때 merge 안생기게
--rebase
--ff-only
가 안먹히는 경우rebase
git push
- 커밋 push 하기
git push <원격저장소> <브랜치>
- 특정 브랜치 push 하기
옵션
-f
- 로컬 커밋으로 강제 푸쉬 진행하기
reset
,rebase
진행 시 사용
git status
- git 상태 보기
pull
할꺼,push
할꺼 체크 가능- 변경 사항 체크가능
빨강
: 스테이징 안된것초록
: 스테이징 된것
Unmerged paths
:- 해결해야하는 병합 파일 목록
git diff <옵션 | null> <비교대상 | null>
- 변경 사항 보기 (기본은 스테이징 안한것만)
- 새로 만든 파일인 경우 반드시 스테이징 해야만 출력된다
git difftool <옵션 | null> <비교대상 | null>
- 이건 아예
vim
같은 CLI 텍스트 에디터로 비교해줌 - 사용볍은
diff
와 같음
기본옵션
--staged
:- 스테이징 항목 변경사항보기
- 그냥 하면 스테이징 안된것만
비교대상
git diff HEAD
- 스테이징 포함하여 모든 현재 변경사항 출력
git diff <브랜치A> <브랜치B>
- 두 브랜치 간 비교
git diff <커밋A> <커밋B>
- 두 커밋 간 비교
git diff <파일명>
- 특정 파일에 변경사항 확인
git merge —abort
- 병합 해드 취소
git reset <리셋타입 | null> <돌아갈 주소>
- 커밋 리셋
- 리셋이지만 앞 작업으로 가는 것도 가능하다
- push 하려면
push -f
로 강제 푸쉬해야 함- 누군가
reset
되기 전까지의 커밋까지 정보를 가지고 있는 경우 해당 사람도 똑같이reset
진행 해야함
- 누군가
옵션
리셋타입
--soft | --hard
:- reset 타입 지정
돌아갈 주소
커밋 값
:- git log 에서 확인
작업로그 값
:- git reflog 에서 확인
브랜치명
:- 해당 브랜치 까지 리셋 (원격도 가능
원격저장소/브랜치명
) - 원격 브랜치로 리셋 할 경우 pull 받지 않고 로컬 브랜치를 강제로 원격 브랜치에 위치시킴
- 로컬 브랜치가 꼬여 pull이 안되는 경우 사용하기 좋다.
- 대신에 모든 로컬 커밋은 취소된다.
- 해당 브랜치 까지 리셋 (원격도 가능
HEAD~
:- 이전 커밋 취소
git log
- 커밋로그 보기 (빠져 나올때 “q”)`
git log —all —oneline —graph
- 그래프 형태로 보기
git reflog <브랜치>
- 브랜치 작업로그 보기 (빠져 나올때 “q”)
git rebase <브랜치>
- rebase 하기
- push 하려면
push -f
로 강제 푸쉬해야 함- 누군가
rebase
되기 전까지의 커밋을 보유하고 있는 경우
git reset --hard 원격저장소/브랜치
해서 원격 브랜치로 reset 해야함
- 누군가
옵션
--continue
:- rebase 작업 계속하기
--skip
HEAD(Rebase 타겟)
가 가지고 있는 사항으로 유지 시킨다- 충돌해결 안해도 상관없는경우 해당부분 스킵
--abort
:- rebase 되돌리기
-s ours
- 충돌나는 모든 커밋을
타겟 브랜치
커밋으로 교체
- 충돌나는 모든 커밋을
-X ours
- 위와 반대
- 충돌나는 모든 커밋을
기존 브랜치
커밋으로 교체
git branch <브랜치>
- 브랜치 생성
git branch —all
- 모든 브랜치 보기
- 원격 브랜치는
remotes
빼고 보면 됨
git branch -D <브랜치>
- 로컬 브랜치 삭제
git push <원격 저장소> <브랜치>
- 원격 브랜치 생성
원격 저장소
는 보통 origin
git push <원격 저장소> -d <브랜치>
- 원격 브랜치 삭제
git branch -m <현재이름> <바꿀이름>
- 브랜치명 변경
- 이름 변경이후 원격 브랜치 push 는 이전 브랜치
삭제
→ 변경된 브랜치push
git switch <브랜치>
- 브랜치 간 전환
옵션
-c
:- 브랜치 생성 & 전환
-f
:- 변경사항(커밋안한) 존재할 시 버리고 전환
-m
:- 변경사항과(커밋안한) 병합하기
브랜치
-
:- 최신 커밋으로 돌아가기
git checkout <커밋값 | 브랜치>
- 브랜치, 커밋 전환
- switch 로는 커밋간 전환이 안되므로 체크아웃으로
git checkout <커밋값 | 브랜치> — .
- 브랜치 전환하지 않고 해당 브랜치의 변경사항을 가져오기
옵션
-f
:- 변경사항(커밋안한) 존재할 시 버리고 전환
-m
:- 변경사항과(커밋안한) 병합하기
git stash <작업 | null> <옵션 | null>
git 임시 저장소, 스텍구조로 되어있음
- stash에 변경사항 저장하기
-m
설정 안하면 0, 1, 2 순으로 저장
기본옵션
-m
:- 저장할 이름
-S
:- 스테이지에 있는것만
작업
git stash list
- stash 목록보기
git stash drop <이름 | null>
- stash 제거하기
- 이름 안정하면 가장 최근꺼
git stash apply <index | null>
- stash 적용하기 (이름은 쓸 수 없음
list
명령에서 앞에 인덱스 확인) - 이름 없으면 가장 최근꺼
git stash pop
- 가장최근꺼 적용하고 삭제
- 스텍구조라 drop 으로 하면 인덱스가 뒤섞임
git submodule <작업>
git 에서 심볼릭 링크처럼 다른 리포지토리를 엮어 쓰는방법
git submodule add <리포지토리url> <적용경로>
<적용경로>
에 리포지토리 추가
git submodule init
submodule
이 적용된 리포지토리를 clone 받고나서 바로 이걸 해줘야됨- 그래야 update 가능
git submodule update —remote —recursive
submodule
브랜치 정보 업데이트submodule
쪽 브랜치에 새로운 커밋이 올라오면 해당 커밋에 해드 sha 값으로 업뎃
참고
로컬, 원격 브랜치 선택
로컬
:- 그냥 브랜치명
master
- 그냥 브랜치명
원격
- 원격 저장소명/브랜치명
origin/master
- 원격 저장소명/브랜치명
모든 것을 의미하는 문자
.