[Git] Git - 1
1.Git 설치
git bash와 함께 설치
리눅스/맥(유닉스)에서 사용되는 CLI 명령어들을 윈도우에서 사용 가능
git bash 실행후 git config --global core.autocrlf true 입력
2.GUI Git 관리 프로그램 설치
https://git-scm.com/downloads/guis
3. 사용할 terminal을 git bash로 변경
#git version 확인을 통해 설치가 잘 됐는지 확인
git --version
#최초설정
#유저네임 셋팅
git config --global user.name "<이름>"
#유저 이메일 셋팅
git config --global user.email "<email>"
#기본 브런치명 변경
git config --global init.defaultBranch main
git init
git config --global --add safe.directory 경로 - intelij 2024 기준
4. 기본 명령어
명령어 | 기능 |
git init | 해당 프로젝트를 Git에 관리역할을 부여 |
git config --global --add safe.directory 경로 | 소유자 관련 명령 |
git status | 깃 저장소, 로컬 저장소 비교 |
git add . | 모든 변화 깃 스테이지에 올리기 (해당 파일 지정가능) |
git commit | vi에디터가 실행됌(커밋 메시지 입력후 :wq) |
git commit -m "커밋메시지" | 지정된 커밋메시지로 커밋 |
git commit -am "커밋메시지" (새로 추가된 파일이 없어야함) |
변경사항 모두 저장 후 커밋 |
git diff | 변경사항 초기화 |
.gitignore
깃이 관리하는 예외를 지정할 목록 지정
# 이렇게 #를 사용해서 주석
# 모든 file.c
file.c
# 최상위 폴더의 file.c
/file.c
# 모든 .c 확장자 파일
*.c
# .c 확장자지만 무시하지 않을 파일
!not_ignore_this.c
# logs란 이름의 파일 또는 폴더와 그 내용들
logs
# logs란 이름의 폴더와 그 내용들
logs/
# logs 폴더 바로 안의 debug.log와 .c 파일들
logs/debug.log
logs/*.c
# logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log
logs/**/debug.log
버전 되돌리기
reset
해당 버전 (해당 시점)으로 되돌리기
ex) v1-> v2 -> v3-> v4 -> v5 에서 v3으로 reset = v1 -> v2 -> v3
git log
git reset --hard (log에서 조회한 커밋 해시)
v1 으로 되돌렸지만 다시 v5로 되돌아 가고싶을땐 백업한 .git 폴더를 덮은 후
git reset --hard
마지막 commit으로 이동 (버전 중 필요없어진 파일은 수동 삭제)
revert
해당 버전의 변경내용을 반대로 수행
ex) v1-> v2 -> v3-> v4 -> v5 에서 v3으로 revert v1-> v2 -> v3-> v4 -> v5 -> v3-(변경내용취소)
git log로 커밋 해시 조회
#자동 커밋
git revert <커밋 해시>
#수동 커밋
git revert --no-commit <커밋해시>
협업 중에는 중간 버전으로 코딩 한 개발자가 있을 수 있기에 필요하다 revert를 사용하자!!
특정 파일을 생성 했던 버전으로 revert하는데 중간에 수정한 내역이 존재한다면?
git rm 특정 파일 || 다른 옵션
브런치 (brunch) 란?
해당 버전에서 새로운 기능을 적용
명령어 | 기능 |
git switch <브런치명> | 지정된 브런치로 이동 |
git switch -c <브런치명> | 지정된 브런치로 생성 후 이동 (현재 브런치 기준) |
git branch | 브런치 목록 조회 |
git branch <브런치명> | 지정된 브런치 생성 (현재 브런치 기준) |
git branch -d <브런치명> | 지정된 브런치 삭제 |
git branch -D <브런치명> | 지정된 브런치 강제삭제 다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때 사용 |
git branch -m <브런치명> | 현재 브런치명 변경 |
git branch -m <브런치명A> <브런치명B> | 브런치명A를 브런치명B로 변경 |
git log --all --decorate --oneline --graph | 모든 브런치의 내역 조 |
브런치 병합 하기
merge
두 브랜치를 한 커밋에 이어붙입니다. (잔가지 유지)
- 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식입니다.
- 다른 형태의 merge에 대해서도 이후 다루게 될 것입니다.
- 기준 브런치로 git switch
- git merge <merge 대상 브런치>
- 작업이 성공적으로 수행됫다면 git branch -d <merge 대상 브런치>
merge로 합치면 reset으로 되돌리기 가능!
rebase
브랜치를 다른 브랜치에 이어붙입니다. (잔가지 제거)
- 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합합니다.
- 이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋습니다.
- 공유된 버전에서 rebase사용 지향
- merge와 반대 개념으로 대상이 될 브런치로 git switch
- git rebase <기준 브런치> 이후 git switch <기준 브런치>
- git merger <대상 브런치>
- 작업이 성공적으로 수행됫다면 git branch -d <merge 대상 브런치>
공통 - 충돌 해결하기
각 브런치마다 다른 작업을 수행햇다면 성공적으로 브런치가 병합이 돼었을 것이다.
하지만 같은 파일에서 같은 내용을 수정하였다면? 충돌이 날것이다.
해결방법
merge
- 수정 값 x개 중 1개 택 n개 또는 모두 사용
- 이후 병합과 동일
- 해결이 어렵다면 git merge --abort 명령어로 merge 중단
rebase
- 해결할 것이 n개 이면 1개 수정후 git rebase --continue
- 이후 병합과 동일
- 해결이 어렵다면 git rebase --abort 명령어로 rebase 중단
출처 : https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EA%B9%83/dashboard