웹풀스택 공부 중
Git 파일 관리 본문
Git 명령어 정리
파일 관리
git add <file_name>
: 변경된 파일 하나만 Staging Area로 추가합니다.git add .
: 모든 파일 변경 사항을 한번에 Staging Area로 추가합니다.git add -p
: 파일을 세부적으로 hunk 단위로 나눠서 Staging Area로 추가할 수 있습니다.y
(yes): 현재 보고 있는 hunk를 add합니다.n
(no): 현재 보고 있는 hunk를 add하지 않습니다.q
(quit): add(staging) 과정을 종료합니다.s
(split): 현재 hunk를 더 작은 단위로 나눕니다.e
(edit): 현재 hunk를 직접 편집합니다 (비추천).
- Hunk 조작 옵션:
파일 수정내용 임시 저장
git stash
: 현재git add
를 통해 commit 대기 중인 모든 수정사항을 임시 저장소에 저장합니다.git stash pop
: 임시 저장된 것 중 가장 최신의 하나를 꺼내옵니다.git stash list
: 임시 저장된 항목들을 Stack 자료구조로 조회합니다.
Commit 생성 및 수정
git commit -am "message"
:git commit -a
와git commit -m "message"
를 합친 명령어입니다. (Untracked 파일 제외)git commit --amend
: 앞선 커밋을 수정할 수 있습니다 (메시지나 내용 수정).
Commit 삭제 (롤백)
git reset HEAD~1
: 현재 커밋을 Mixed 롤백합니다. 커밋했던 수정본을 커밋되지 않은 상태로 롤백할 수 있습니다.git reset --hard HEAD~1
: 현재 커밋을 Hard 롤백하여 모든 수정본을 삭제합니다.
Mixed vs Soft vs Hard
- Mixed (기본 옵션):
- 이후
git add
가 필요합니다.
- 이후
- Soft:
git reset --soft HEAD~1
git add
가 필요 없습니다.
- Hard:
git reset --hard HEAD~1
- 모든 변경사항을 삭제합니다.
Commit 지칭 방법
- 절대 커밋 지칭 (Hash): 커밋의 고유한 해시 값으로 지칭 (예:
2cd27c
427c904c6ec4d30ce28a633e4d5113245f). - 상대 커밋 지칭 (Relative Reference):
~
(Tilde): N번째 조상을 지칭합니다. (수직 이동)^
(Caret): N번째 부모를 지칭합니다. (수평 이동, 잘 안 씀)@
(At): Reflog를 통해 내가 직접 커밋한 히스토리를 기반으로 롤백합니다.
Rebase
git rebase -i HEAD~4
:-i
(interactive): rebase할 때 필요한 옵션으로, 한 번에 여러 커밋을 수정할 수 있습니다.- 이후
reword
로 여러 커밋 메시지를 변경할 수 있습니다. edit
옵션을 사용해vi
로 커밋 내용을 수정한 후,git commit --amend
로 커밋 메시지도 수정할 수 있습니다.
- Cherry Picking: 원하는 커밋만 선택적으로 변경 가능합니다.
- Merge Conflict 방지: 변수나 함수 이름 변경 시 연쇄적인 Merge Conflict를 방지할 수 있습니다.
Commit 조회
git log
: 커밋 메시지 기반으로 조회합니다.git show
: 커밋 메시지와 상세 수정 내용을 함께 조회합니다.
Review
- Staging Area: new file + modified + deleted
git commit
시 여기 있는 파일들이 Commit 된다
- Unstaged: modified + deleted
- 이 중에서 Commit 하고자 하는 것들을
git add
를 통해 Staging Area로 올린다
- 이 중에서 Commit 하고자 하는 것들을
- Untracked: new file
- 이 중에서 Commit 하고자 하는 것들을
git add
를 통해 Staging Area로 올린다- Commit 하고 싶지 않은 파일은
.gitignore
에 추가한다
- Commit 하고 싶지 않은 파일은
- 이 중에서 Commit 하고자 하는 것들을
Git Remove
git rm <file_name>
: 명렁어로 삭제하기- Staging Area로 바로 올려 Commit시 삭제되도록 한다
git rm --cached <file_name>
: 명령어로 삭제하기- Staging Area로 바로 올려 Commit시 삭제되도록 하며, Untracked에서 나만 볼 수 있다
- Git Repo에서 삭제할 예정 (Staging) + Local에서 사용
- Git 에서만 확실하게 없에고, 로컬에서는 사용하고 싶은 파일
- ex.) .env
- Git 에서만 확실하게 없에고, 로컬에서는 사용하고 싶은 파일
- Git Repo에서 삭제할 예정 (Staging) + Local에서 사용
- Staging Area로 바로 올려 Commit시 삭제되도록 하며, Untracked에서 나만 볼 수 있다
Reflog
- 날려먹었을때 이전 작업을 원상복구 할 수 있다
git reflog
: 이전에 내가 작업했던 커밋이나 브랜치로 이동이 가능하다- 수행하는 모든 커밋은 저장되어 어떤 문제가 발생해도 대응이 가능하다
반응형
'웹개발 > 웹 개념' 카테고리의 다른 글
CORS (Cross-Origin Resource Sharing, 교차 출처 리소스 공유)와 SOP (Same-Origin Policy)란? (0) | 2024.08.25 |
---|---|
HTTPS의 보안 적용 방식 (0) | 2024.08.25 |
Web Storage와 Session이란? (0) | 2024.08.25 |
Cookie(쿠키)란? (0) | 2024.08.25 |
Proxy란? (0) | 2024.08.23 |