📕 git 3 가지 상태
1. Working directory
- untracked: Add된 적 없는 파일, ignore 된 파일
- tracked: Add된 적 있고 변경내역이 있는 파일
git add
명령어로 Staging area로 이동
2. Staging area
커밋을 위한 준비 단계
- 예시: 작업을 위해 선택된 파일들
git commit
명령어로 repository로 이동
3. Repository
.git directory
라고도 불림- 커밋된 상태
📘 파일의 삭제와 이동
1. git rm
tigers.yaml
를 삭제해본 뒤git status
한 결과- 파일의 삭제가
working directory
에 있음 git reset --hard
로 복원
- 파일의 삭제가
git rm tigers.yaml
로 삭제하고git status
한 결과- 파일의 삭제가
Staging area
에 있음 git reset --hard
로 복원
- 파일의 삭제가
2. git mv
일반적으로 파일 명 변경시 상황
tigers.yaml
를zzamtigers.yaml
로 이름변경 뒤git status
한 결과Changes not staged for commit: tigers.yaml deleted
Untracked files: zzamtigers.yaml
- Working directory 에서 add 작업이 필요한 상황
- 이후 추가로
git add .
한 결과Changes to be committed: renamed: tigers.yaml -> zamtigers.yaml
- 비로소 Staging area 로 들어감
git mv 명령어 사용 상황
- 초기 상태로 복원 한뒤
git mv tigers.yaml zzamtigers.yaml
로 실행 후git status
한 결과Changes to be committed: renamed: tigers.yaml -> zamtigers.yaml
- 바로 Staging area 로 들어감
3. 파일을 staging area
에서 working directory
로
# `staging area`에서 `working directory`로
git restore --staged (파일명)
# `working directory`에서도 제거 즉 변경내역을 없에는 작업
git restore (파일명)
- 예전:
git reset HEAD (파일명)
4. reset의 세 가지 옵션
- --soft:
repository
에서staging area
로 이동 - --mixed (default):
repository
에서working directory
로 이동 - --hard: 수정사항 완전히 삭제
working directory
에서도 삭제
📗 Git의 HEAD
현재 속한 브랜치의 가장 최신 커밋을 의미
1. checkout
으로 앞뒤 이동해보기
^
또는~
: 갯수만큼 이전으로 이동git checkout HEAD^^^
,git checkout HEAD~5
커밋 해시를 사용해서도 이동 가능
git checkout (커밋해시)
git checkout -
: (이동을) 한 단계 되돌리기
2. 💡 이전으로 checkout 된 HEAD 상태
이전의 분기점으로 가면서 익명의 브랜치에 위치함을 알 수 있음 그리고 그 브랜치의 HEAD 상태이다.
checkout
으로 이전으로 돌아간 뒤 브랜치를 만들어 새로운 분기를 만들 수 있다- ex)
git switch -c (브랜치 이름)
- ex)
3. HEAD reset
HEAD 기준으로 reset 하여 분기점을 뒤로 돌릴 수 있음
git reset HEAD(원하는 단계) (옵션)
📙 fetch 와 pull
fetch
: 원격 저장소의 최신 커밋을 로컬로 가져오기만 함 (확인 용도)pull
: 원격 저장소의 최신 커밋을 로컬로 가져와merge
또는rebase
(실제 적용)
1. fetch
내역 살펴보기
- 원격의
main
브랜치에 커밋을 추가한 후git checkout origin/main
으로 확인해보기- 다른 커밋 내용이 있는것을 확인 가능하지만 변경내용은 적용되지 않은상태
main
에서 원격의 변경사항을fetch
해옴git checkout origin/main
으로 확인해보기- 다른 커밋 내용이 있는것을 확인 가능하지만 변경내용은 나와있는 상태
pull
로 적용
2. 원격의 새 브랜치 fetch 로 확인 후 연결
- 원격에서 브랜치가 생성되고 작업 내용을 생성한 상태
- 로컬에서
git fetch
후git branch -a
로 원격 브랜치가 추가된 것을 확인 할 수 있다.
git checkout origin/(원격의 브랜치명)
하여 변경내용을 확인 할 수 있다
git switch -t origin/(브랜치명)
로 원격 브랜치를 로컬브랜치를 생성하며 연결한다
📒 git config 설정
config를 --global과 함께 지정하면 전역으로 설정됩니다.
1. 설정값 확인
# 현재 모든 설정값 보기
git config (global) --list
# 에디터에서 보기 _(기본: vi)_
git config (global) -e
2. 기본 에디터 수정
# vsc 로 설정 예
git config --global core.editor "code --wait"
- 또는
code
자리에 원하는 편집 프로그램의 .exe파일 경로 연결 --wait
: 에디터에서 수정하는 동안 CLI를 정지- 💡
git commit
등의 편집도 지정된 에디터에서 열게 됨
3. 유용한 설정들
# 줄바꿈 호환 문제 해결
git config --global core.autocrlf (윈도우: true / 맥: input)
# `pull` 기본 전략 `merge` 또는 `rebase`로 설정
git config pull.rebase false
git config pull.rebase true
# 기본 브랜치명
git config --global init.defaultBranch main
# push시 로컬과 동일한 브랜치명으로
git config --global push.default current
4. 단축키 설정
'git & github' 카테고리의 다른 글
git github 처음부터 다시 배우기 - 6. git hub 활용 (0) | 2023.02.15 |
---|---|
git github 처음부터 다시 배우기 - 5. git 활용 (0) | 2023.02.13 |
git github 처음부터 다시 배우기 - 4. commit 디테일 (0) | 2023.02.09 |
git github 처음부터 다시 배우기 - 2. git hub (0) | 2023.02.06 |
git github 처음부터 다시 배우기 - 1. git (0) | 2023.02.05 |