Git 강의 정리

오의석·2024년 2월 14일
1

1. Git 설정

1) Git 최초 설정

(1) 사용자 이름과 이메일 주소 전역설정

git config --global user.name "(본인 이름)"
git config --global user.email "(본인 이메일)"

(2) 사용자 이름과 이메일 주소 확인

git config --global user.name
git config --global user.email

(3) 기본 브랜치명 변경

git config --global init.defaultBranch main

2) Git 프로젝트 설정

(1) 프로젝트 생성

git init

(2) 로컬<->원격 저장소 연결

git remote add (원격 저장소 이름) (원격 저장소 주소)
-> git remote add origin (원격 저장소 주소)
보통 원격저장소 이름을 origin이라고 설정한다.

현재연결된 저장소 이름 확인하는 법

git remote (-v)

원격 지우기

git remote remove (원격 저장소 이름)

(3) 현재 브랜치<->원격 브랜치 기본 연결

git push -u origin main
-> origin이라고 설정한 원격저장소의 main 브랜치와 연결하겠다. + 올리기
( -u--set-upstream을 의미)
-> 이 이후로는 git push만으로 올리기 가능

이미 원격저장소에 있는 것을 다운 받아서 사용할 경우
git clone (원격 저장소 주소)

2. Git 상태 관련

1) Git 상태 확인

(1) 파일 상태 확인

git status

(2) 브랜치 상태 확인하기

  • 로컬 브랜치 상태 확인하기
    git branch
  • 로컬과 원격 브랜치 상태 확인하기
    git brach --all

2) Git 로그 확인하기

git log

If 여러 브랜치의 로그를 동시에 보고 싶을때,

(like 소스트리)
git log --all --decorate --oneline --graph

3) Git 배제하기

(1) .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

3. Git 올리기

1) 파일 및 폴더 올리기

(1) 파일 담기

  • note.txt라는 파일 담기
    git add note.txt

  • 현재 폴더에 있는 거 다 올리기
    git add .

  • (2)번의 커밋메시지까지 한번에 하기(수정할때만 가능)
    git commit -am "(메시지)"

(2) 커밋 메시지 작성하기

  • 한번에 바로 메시지 담기
    git commit -m "FIRST COMMIT"

  • Vi 모드에서 작성하기
    git commit

(3) 올리기

git push

4. Git 받기

1) 일반적인 다운

git pull

2) 팀원이 커밋한 것이 있을 때

일단, push는 안됨

(1) Merge 방식으로 pull하기

git pull --no-rebase
git push
-> 로컬과 원격의 어긋난 시간선을 모아준 다음에 내 꺼를 push 하는 느낌

(2) Rebase 방식으로 pull하기(★ 더 선호)

git pull --rebase
git push
-> 원격의 데이터를 먼저 붙이고, 내 꺼를 이어서 붙이는 방식

3) 상대가 먼저 커밋하고, 나도 같은 부분을 수정했을 때

일단, push는 안됨

(1) Merge 방식으로 pull하기

git pull --no-rebase
충돌 해결하기(읽으면서)
git add (해당 파일)
git push

(2) Rebase 방식으로 pull하기(★ 더 선호)

git pull --rebase
충돌 해결하기(읽으면서)
git add (해당 파일)
git rebase --continue
(필요에 따라) git commit && git push

4) 나 혼자 사용할 때 + 원격 커밋 의미 없을 때

git push --force
로컬의 커밋에 억지로 맞추는 명령어

5. Git 복원

1) 과거 시점으로 다 되돌리기(주의)

(1) 먼저 돌아갈 시점 찾기 + 해시값 알아내기

git log

(2) 과거로 되돌리기

  • 그 사이 커밋도 코드도 다 날라감
    git reset --hard (돌아갈 커밋 해시)

2) 과거의 커밋만 복원

(1) 먼저 돌아갈 시점 찾기 + 해시값 알아내기

git log

(2) 특정 커밋의 파일들만 변경

  • 해당 시점의 커밋만 변경
    git revert (되돌릴 커밋 해시)

  • 해당 시점의 커밋만 변경 (이 변경 내용조차 커밋에 안올리기)
    git revert --no-commit (되돌릴 커밋 해시)

6. Git 브랜치

1) 브랜치 기본 기능(CRUD 느낌)

(1) 브랜치 생성

git branch (브랜치명)

(2) 브랜치 목록 보기

git branch

(3) 브랜치 이동

git switch (이동할 브랜치명)

과거에는 checkout를 사용했지만,
checkout -> switch와 restore로 분리함

(4) 브랜치 삭제하기

git branch -d (삭제할 브랜치명)

If 브랜치 강제 삭제

(EX, 다른 브랜치로 적용되지 않은 내용의 커밋이 존재할 경우)
git branch -D (삭제할 브랜치명)

(5) 브랜치 이름 변경

git branch -m (기존 브랜치명) (새 브랜치명)

(6) 원격의 브런치 삭제

git push origin --delete (원격의 브랜치명)

2) 새브런치 만들어서 git 올리기

(1) 새로운 브런치 만들기

git branch new-sub

(2) 원격의 브랜치에 파일 올리기

git push -u origin new-sub
origin이라는 이름을 가진 원격저장소의 new-sub이라는 브랜치와 연결하고 파일을 올리자

3) Merge(★ 더 선호)

브랜치의 사용 내역들을 남겨둘 필요가 있을 때 사용.

TIP
merge는 reset으로 되돌리기 가능

(1) 합쳐질 브랜치로 이동

git switch main

(2) 합병하기(main <- 합칠 브랜치sub)

git merge (합칠 브랜치명sub)

(3) 병합된 브랜치는 삭제

git branch -d (합쳐진 브랜치명sub)

4) Rebase(★ 경우에 따라)

히스토리를 깔끔하게 만드는 게 중요할 때 사용.

(1) 합칠 브랜치로 이동(merge랑 반대)

git merge (합칠 브랜치명sub)

(2) 합치기

git rebase main

(3) main의 시점을 합쳐진 브랜치로 이동

git merge (합칠 브랜치명sub)

main의 시점을 잠깐 멈추고,
앞에 브랜치를 연결시키고,
main의 시점을 앞의 연결된 브랜치 앞으로 이동시키는 느낌

(4) 병합된 브랜치는 삭제

git branch -d (합쳐진 브랜치명)

5) Merge 충돌 해결하기

(1) Merge 명령 후

<<<<<< HEAD
이름 : 오의석
=======
이름 : oh
>>>>>>> sub

윗 줄이 현재 브랜치, 아랫 줄이 병합될 브랜치

(2-1) Merge 중단하기

git merge --abort

(2-2) Merge 충돌 해결하기

충돌난 부분을 찾아서 수정하기. 그 후에, 아래 명령어 진행
git add (수정한 파일)
git commit

6) Rebase 충돌 해결하기

(1) Rebase 명령 후

<<<<<< HEAD
이름 : 오의석
=======
이름 : oh
>>>>>>> sub

윗 줄이 현재 브랜치, 아랫 줄이 합병될 브랜치

(2-1) Rebase 중단하기

git rebase --abort

(2-2) Rebase 충돌 해결하기

충돌난 부분을 찾아서 수정하기. 그 후에, 아래 명령어 반복
git add (수정한 파일)
git rebase --continue

git add (수정한 파일)
git rebase --continue

git add (수정한 파일)
git rebase --continue

합병될 브랜치들의 커밋들을 차례대로 확인하며, 어느 코드가 맞는 지 확인하는 작업입니다.
이어서 아래 내용을 함으로써 병합하고, 해당 브랜치를 삭제합니다.
git switch main
git merge sub
git branch -d sub

7) 원격에 새로운 브랜치가 생겼을 때

(1) 원격의 변경사항 확인

(최신 메타 데이터 정보만 확인)
git fetch

(2) 로컬에 새로운 브랜치 생성하고 연결하기

git switch -t origin/sub-branch
origin이라는 저장소의 sub-branch라는 브랜치를 로컬에 생성하고 연결하겠다.

profile
끊임없이 나아가는 사람이 되어볼게요.

0개의 댓글