- git 명령어에 정리
git init
git 저장소를 초기화하는 명령어이다. 이 명령어를 실행하면 git이 해당 디렉토리를 관리하기 시작한다.
파일 변경 사항이 있을 시 git 에 의해 추적할 수 있다.
#일반적인 절차.
mkdir my_project
cd my_project
#git 저장소 초기화
git init
git add
파일을 스테이징 영역(stage area)에 추가하는 명령어이다.
스테이징 영역은 커밋을 만들기 전에 변경된 파일들을 임시로 보관하는 장소로, 어떤 파일이 커밋될지 선택하는 데 사용된다.
#특정 파일 추가
git add filename.txt
#여러 파일 추가
git add *.txt
#모든 변경 사항 추가
git add .
or
git add -A
git status
현재 git 프로젝트 파일의 상태를 보여준다.
git rm
파일을 지우거나 스테이지에서 해제할 때 사용한다.
이 명령어를 사용하면 작업 디렉토리에서 파일이 삭제되고, Git의 스테이징 영역에도 그 삭제가 반영되어 이후 커밋 시 저장소에서 해당 파일이 제거된다.
#특정 파일 삭제
git rm filename.txt
#여러 파일 삭제
git rm *.log
#스테이징된 파일의 삭제
git rm filename.txt
#캐시에서만 삭제
git rm --cached filename.txt
#예제
git rm old_file.txt
git status
git commit -m "Deleted old_file.txt"
git rm 사용 시 주의사항
- git rm은 기본적으로 작업 디렉토리에서 파일을 제거하므로, 실수로 중요한 파일을 삭제하지 않도록 주의!
- 삭제된 파일을 커밋하기 전에는 반드시 변경 사항을 확인하고 커밋 메시지를 신중하게 작성!
- 만약 작업 디렉토리에서 파일을 유지하면서 Git의 버전 관리에서만 제거하려면 --cached 옵션을 사용!
git restore
위킹 트리의 변경된 파일을 마지막 커밋된 버전으로 복원해 주는 역할을 한다.
#작업 디렉토리의 파일 복원#
git restore filename.txt
#스테이징된 파일 언스테이지#
git restore --staged filename.txt
#여러 파일 복원#
git restore .
or
git restore *.txt
#특정 커밋에서 파일 복원#
git restore --source=HEAD~1 filename.txt
git restore 사용 시 주의사항
- git restore 명령어를 사용하면 파일의 수정 내용이 사라질 수 있으므로, 변경 사항을 복원하기 전에 항상 백업을 고려
- 작업 디렉토리의 변경 사항을 원래 상태로 되돌리기 전에 현재 상태를 잘 확인하는 것이 중요,
실수로 중요한 변경 사항을 잃지 않도록 주의. - 이전에는 git checkout 명령어를 사용하여 복원 작업을 수행했으나,
최신 Git 버전에서는 명확성과 사용성을 위해 git restore를 권장
git clean
Git에서 버전 관리되지 않는 파일(즉, Git이 추적하지 않는 파일)을 작업 디렉토리에서 삭제하는 명령어
#기본 형식
git clean
#삭제 전 확인
git clean -n
or
git clean --dry-run
git clean 사용 시 주의사항
- 주의 깊게 사용: git clean 명령어는 되돌릴 수 없는 방식으로 파일을 삭제하므로, 중요한 파일이 삭제되지 않도록 항상 신중하게 사용해야 함.
- 삭제 전 상태 확인: -n 옵션을 사용하여 어떤 파일이 삭제될지를 먼저 확인한 후 실제로 삭제할 것.
- 백업 고려: 중요한 파일이 버전 관리되지 않고 있다면, 삭제 전에 백업을 해 둘 것.
git commit
변경된 내용을 저장한다.
# 메시지와 함께 커밋
git commit -m 'First Commit'
# 신규 파일을 제외한 변경사항을 Staging 후 커밋
git commit -a
# 이전 커밋 변경
git commit --amend
git log
commit 목록을 볼 수 있다. 굉장히 많은 옵션이 있으니 git log --help 명령어로 자신에게 맞는 조합을 활용하기.
# branch 그래프를 추가하여 보기
git log --graph
# 모든 branch 보기
git log --all
# commit 메시지 제목만 한줄로 보기
git log --oneline
git push
원격 저장소(remote repository)에 코드 변경분을 업로드.
# 기본 사용법
git push [저장소명] [branch]
# 최초 1회 저장소, branch 지정. 이 후, 생략 가능
git push -u [저장소명] [branch]
# 로컬에서 생성한 branch를 push
git push --set-upstream [저장소명] [branch]
git branch
# 로컬 branch 목록 확인
git branch
# 원격 저장소를 포함한 모든 branch 목록 확인
git branch -a
# test 라는 branch 생성하기
git branch test
# test 로컬 branch를 origin이라는 원격 저장소의 test branch에 연결
git branch --set-upstream-to=origin/test test
# test branch 삭제
git branch -d test
# test branch 강제 삭제
git branch -D test
git checkout
branch를 변경하고 워킹 트리(Working tree)에서 변경점을 복원하는 명령어. switch, restore 명령어를 사용하는 것을 추천.
# test branch로 변경하기
git checkout test
# test2 라는 branch를 새로 생성하고 test2 branch로 변경하기
git checkout -b test2
# Unstaged 상태의 파일을 원래대로 되돌림
git checkout -- [파일명]
# Unstaged 상태의 현재 경로의 모든 파일을 원래대로 되돌림
git checkout -- .
git switch
branch를 변경하는 명령어 입니다. checkout 에서 복원하는 기능을 제거했다고 함.
# test branch로 변경하기
git switch test
# test2 라는 branch를 새로 생성하고 test2 branch로 변경하기
git switch -c test2
git fetch
원격 저장소(remote repository)의 데이터를 가져오기. pull 로 병합하기 전에 어떤 변경점이 있나 살펴볼 때 사용하기 좋다.
# origin 이라는 원격 저장소의 데이터를 가져옴
git fetch origin
# 모든 원격 저장소의 데이터를 가져옴
git fetch --all
# 원격 저장소에서 삭제된 branch를 로컬에서도 삭제
git fetch --prune
git pull
원격 저장소(remote repository)의 데이터를 가져온 후 로컬 branch에 병합.
# git fetch --all && git pull 과 같습니다
git pull --all
git stash
현재 작업중인 변경점을 임시 저장하거나 불러올 수 있다. 현재와 다른 branch로 가서 작업을 하기전에 사용하면 유용
# 현재 변경점 testStash 라는 이름으로 저장하기
git stash save testStash
# stash 목록(stack) 확인하기
git stash list
# testStash 라는 stash를 불러와 적용하기
git stash apply testStash
# testStash 라는 stash를 불러와 적용하는데, Staged 상태까지 적용하기
git stash apply testStash --index
# 가장 최근의 stash를 가져와 적용하고 스택에서 삭제하기
git stash pop
# 가장 최근의 stash 제거하기
git stash drop
# testStash라는 stash를 제거하기
git stash drop testStash
git blame
특정 파일의 수정 이력을 확인할 수 있다. 각 라인별로 누가, 언제 마지막으로 수정 했는지 알 수 있다.
# test.txt 파일의 수정 이력을 확인
git blame test.txt
# test.txt 파일의 5부터 10번 라인까지만 확인
git blame -L 5,10 test.txt
# 파일명이 변경 되었다면, 변경전의 파일명과 함께 확인
git blame -C newTest.txt
# 공백 변경을 무시
git blame -w test.txt
git diff
# 마지막으로 커밋된 소스와 현재 Unstaged 상태의 변경점과 비교
git diff
# 마지막으로 커밋된 소스와 현재 Staging 된 변경점과 비교
git diff --staged
# 커밋간 비교
git diff [커밋해시1]..[커밋해시2]
# branch간 비교
git diff [branch1] [branch2]
git revert
지정한 커밋으로 되돌려 커밋한다. 되돌린 이력이 남기때문에 충돌이 발생할 위험이 적으며 협업 상황에서 사용하는 것이 좋다.
# 특정 커밋으로 되돌리고 커밋
git revert [커밋해시]
# 특정 태그로 되돌리고 커밋
git revert [태그명]
# 특정 커밋으로 되돌리지만 커밋은 안한채로 Staging 상태
git revert [커밋해시] -n
# 병합한 커밋으로 되돌릴 때 메인이 되는 커밋을 지정하여 되돌리기
git revert [커밋해시] -m 1
git merge
현재 브랜치를 특정 브랜치의 소스와 병합한다.
사실상 가장 충돌이 많이 일어나는 지점.
merge 하기 전엔 워킹 디렉토리를 stash 등으로 깔끔하게 정리하고 진행하는 것을 추천.
# master branch를 병합
git merge master
# 병합 충돌(Conflict) 발생 시 취소
git merge --abort
# 공백으로 인한 병합 충돌을 무시하고 병합
git merge -Xignore-all-space
#로그 확인
git log
#병합 전으로 돌리기
git reset --hard (93weq123weq~~~~)
#Merge를 되돌리는 경우:
#만약 merge 커밋 이후로 git reset --hard를 사용하여 이전 커밋으로 되돌린다면,
#merge 커밋 자체를 없애는 효과가 있다.
#즉, merge 작업이 이루어지기 전 상태로 되돌아 감.
#Commit을 이전으로 돌리는 경우:
#git reset --hard [커밋 해시]를 사용하면 지정한 커밋 해시 이전의 상태로 되돌아 감.
#HEAD가 해당 커밋을 가리키게 되며, 그 이후의 모든 커밋은 로컬 기록에서 삭제됨.
git 코드 더 있겠지만 일단 여기까지만 정리해 본다.
git hub관련 몰라서 못하는 일은 더이상 없었으면 한다.
한 걸음 한 걸음 오늘도 걸어가본다.
git 풀리퀘스트(pull request) 방법
CODE 리뷰를 위해서 사용.(온라인으로)
어떻게 MERGE 하죠? 머지 대신 풀 리퀘스트라는 깃허브 기능을 사용
풀리퀘스트 란?
당겨서 합치는 것을 한번에 !!! + 요청하는 것!!!