![article thumbnail image](https://blog.kakaocdn.net/dn/bs3zGU/btrGsoAAt66/4VvaCQIVdGM7Toj2Y8ceMK/img.png)
📖 git
commmit hash값 확인하기 : reflog
기본적으로 commit의 hash값을 알 수 있고, HEAD@{숫자}를 입력하여, commit hash 대신으로 사용할 수 있다.
main, HEAD
(HEAD → main) 이라는 문구는, HEAD가 main을 참조하고 있다는 뜻이며, main은 해당 commit을 참조하고 있다는 뜻이다.
commit한 파일 삭제하는 2가지 방법
파일 삭제 후 commit : reset
기존에 commit 했던 이력이 남음
commit 하기 전 상태로 복구하고, commit하기
기존에 commit 했던 이력도 삭제된다.
옵션 | working dir | staging area | repository | 기존에 만든 파일 |
--hard | 변경 | 변경 | 변경 | 삭제 |
--mixed(생략 가능) | 유지 | 변경 | 변경 | 유지 |
--soft | 유지 | 유지 | 변경 | 유지 |
예시
git reset --hard [commit hash] → 기존에 만든 파일이 삭제된다.
git reset --soft [commit hash] → 기존에 만든 파일이 staging area 상태로 유지된다.
* reset을 진행하여도 다시 복구도 가능하다.
바로 이전의 상태로 되돌리기 git reset HEAD^
commit 한단계 이전의 상태를 뜻하는 HEAD^를 hash값 대신 입력하여, 바로 이전의 상태로 되돌릴 수 있다.
# Git Bash
$git reset HEAD^
checkout과 reset시 HEAD 이동
checkout 명령어 실행시, HEAD 참조값이 변경된다.
reset 명령어 실행시, main의 참조값이 변경된다.
main을 참조하는 HEAD 또한 참조값이 변경된다.
로컬 저장소와 Git Hub(원격 저장소)를 연동하기
원격 저장소 장점
안정성 : 로컬 저장소 파괴시, 백업 가능
협업 : 원격 저장소로 다수 개발자 협업 가능
원격 저장소 생성 및 url 복사
깃허브 → repository 생성 → 원격 저장소 url 복사
원격 저장소 등록
git remote는 원격 저장소를 관리하는 명령어이다.
-v 옵션을 사용하여, 원격 저장소로 등록이 잘되었는지 확인 할 수 있다.
원격 저장소 삭제
로컬 저장소와 원격 저장소를 연동하고, 로컬 저장소의 파일을 원격 저장소로 저장하기
정상적으로 연동이 되었는지 자세히 확인하기
정상적으로 연동이 되었는지 간단히 확인하기
정상적으로 연동이 되었으면, upstream을 삭제하지 않는 한 유지되며, git push 명령어로 원격 저장소에 파일 이동 가능
* 순서 : 파일생성 → add → commit → push
push와 pull
개념
git push : 로컬 저장소 파일을 원격 저장소로 업로드
git pull : 원격 저장소 파일을 로컬 저장소의 브랜치로 다운로드
git push
upstream 등록 한 경우 생략가능
git pull
원격 저장소의 정보를 가져오고(fetch), 가져온 정보와 로컬 저장소 브랜치와 병합(merge)를 순서대로 실행하는 명령어
upstream 등록 한 경우 생략가능
git pull 명령어를 git fetch와 git merge 명령어로 분리
tag
사용 이유
외우기 쉬운 tag를 부착하여, git 에서 commit에 참조할때 hash값 대신 사용
명령어 : Lightweight tag
tag 이름만 부착하여 포인터 역할 수행
명령어 : Annotated tag (권장)
tag 이름, 설명, 이메일 등 정보를 저장
vim 편집기 생략하는 명령어
tag 확인 방법
tag만 확인하는 명령어
tag 중 선별하여 확인하는 명령어
특정 tag 상세보기
tag 삭제하기
tag push
tag는 따로 push를 해줘야 원격 저장소에 저장이 된다.
revert
개념
commit 취소할때 사용
명령어
commit 하나만 취소하기
commit 여러개 취소하기
* 주의 할 점은 start commit은 포함이 되지 않는다. 예를 들어 0 ~ 2까지 입력했다면, 실제로는 1 ~ 2까지 취소된다.
clone
명령어
기존 저장소 복사하기
사용자 설정하기
사용자 설정 확인하기
push와 pull 협업하기
A가 작업하여 push
A : 1번 파일 수정 → add → commit → push
B가 원격저장소에서 pull 하여 작업
B : A 파일 pull → 1번 파일 수정 → add → commit → push
pull 충돌
상황
A : 1번 파일 수정 → add → commit → push
B : 1번 파일 수정 → A 파일 pull → 충돌! (컴퓨터가 B의 파일과 A의 파일 중 어느것으로 merge할지 몰라 충돌 발생)
충돌 파일 확인하기 (선택)
파일 수정하기
직접 파일을 클릭하여, 파일 수정
다시 push 하기
순서 : add → commit → push
pull 충돌 단계적 수행
상황
A는 B가 수정한 파일을 가져와(fetch) 검토하고, A의 파일과 병합(merge)하고 싶다.
B : 1번 파일 수정 → add → commit → push
원격 저장소 파일 가져오기
불러온 원격 저장소 파일과 로컬 저장소 파일 비교하기
불러온 원격 저장소 파일과 로컬 저장소 파일 병합하기
'공부 > 공통' 카테고리의 다른 글
[공부] 코딩 컨벤션 (기본) (0) | 2022.05.12 |
---|---|
[공부] npm 정리 (0) | 2022.05.05 |
[공부] Git 정리 - 팀 프로젝트 (0) | 2022.05.02 |
[공부] git 정리 -3 (0) | 2022.03.06 |
[공부] git 정리 -1 (0) | 2022.02.28 |