🔗 [얄팍한 코딩사전] 제대로 파는 Git & GitHub 와 함께하는 깃/깃허브 공부
[2022.03.28]
깃 공부 본격적 시작
진짜 재밌는 강의
미토 말투 개웃기다 ㅋㅋㅋㅋ
아무튼 Git을 위한
VSCODE, SOURCETREE 설치도 완료!
깃은 버전 컨트롤 시스템
즉, 시간과 차원을 관리하는것
시간? 프로젝트의 버전을 과거로 되돌리거나 특정 내역을 취소할 수 있는 것
차원? 프로젝트의 여러 모드를 쉽게 전환하고 관리 가능
Git을 사용하는 두 가지 방법
CLI 방식 : 터미널에 명령어를 이용
GUI 방식 : 소스트리 등의 프로그램을 사용
CLI 위주로 학습 할 예정
Git 최초 설정
Git 전역으로 사용자 이름과 이메일 주소를 설정
GitHub 계정과는 별개다!
깃베시에서
git config --global user.name "(본인 이름)" git config --global user.email "(본인 이메일)" |
확인
git config --global user.name git config --global user.email |
기본 브랜치명 변경
git config --global init.defaultBranch main |
기본 브랜치명 변경이 뭐냐면 ...
master/slave
whitelist/blacklist
같은 인종차별적인 것들 명칭을 변경한 것
그래서 master 에서 main 으로 ..
프로젝트 생성 & Git 관리 시작
1. 일단 실험용으로 GitTest라는 폴더를 생성하고
2. VS CODE로 해당 파일 열람
3. VS CODE 터미널에서 git init 입력
4. 해당 파일에서 숨김모드 확인하면 .git 폴더 생성 확인
이 폴더를 지우면 Git 관리내역이 삭제된다. (현 파일들은 유지)
⭐ 터미널에 git status
그 폴더 속 생성된 파일들을 Git에게 맡길 수 있게 된다.
⭐ .gitignore 파일생성
Git에게 안맡기고 싶을때 .gitignore에 파일명 입력하고 저장
↓
git status하면
안맡기고 싶은 파일명 대신 .gitignore이 올라감
.gitignore 형식 |
|
file.c | 모든 file.c |
/file.c | 최상위 폴더의 file.c |
*.c | 모든 .c 확장자 파일 |
!not_ignore_this.c | .c 확장자지만 무시하지 않을 파일 |
logs | logs란 이름의 파일 또는 폴더와 그 내용들 |
logs/ | logs란 이름의 폴더와 그 내용들 |
logs/debug.log logs/*.c |
logs 폴더 바로 안의 debug.log와 .c 파일들 |
logs/**/debug.log | logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log |
타임캡슐(버전) 담기
git status 를 했는데
untracked : git이 아직 관리한 적이 없는 파일
git add : 일단 캡슐에 담자
A로 바뀐걸 확인
(VSCODE기능이라고 한다)
다시 git status 그러면
Changes to be committed:
커밋(타임머신을 탈) 준비가 됐다
(캡슐 안에 있다.)
Untracked files:
아직 캡슐 바깥에 있다.
git add . 모두 담기
git commit : 타임캡슐(버전) 묻기
파일 추가한거 커밋
git add . git commit -am '커밋명' |
그냥 수정한거 커밋
바로 git commit -am '커밋명' |
Vi모드
i | 입력 시작! | 명령어 입력 모드에서 텍스트 입력 모드로 전환 |
ESC | 입력 종료! | 텍스트 입력 모드에서 명령어 입력 모드로 전환 |
:q | 저장 없이 종료 | |
:q! | 저장 없이 강제! | 종료 입력한 것이 있을 때 사용 |
:wq | 저장하고 종료! | 입력한 것이 있을 때 사용 |
k | 위로 스크롤! | git log등에서 내역이 길 때 사용 |
j | 아래로 스크롤! | git log등에서 내역이 길 때 사용 |
과거로 돌아가기
reset | 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다. |
revert | 되돌리기 원하는 시점의 커밋을 거꾸로 실행합니다. |
깃으로 코드를 공유하고 협업할시
한 번 공유공간에 올라간 내용을 리셋하면 문제가 생김 .. 이 후 내역들이 지워지니까
한 번 공유가 된것들은 리버트로 되돌리자
git reset --hard
마지막 커밋으로 초기화
git revert (되돌릴 커밋 해시)
되돌려진 애가 제일 최근 커밋으로 ..
git revert --no-commit (되돌릴 커밋 해시)
커밋하지 않고 revert
원하는 다른 작업을 추가하고 싶을때
차원 이동하기
Branch : 분기된 가지(다른 차원)
- 하나 이상의 모습으로 관리해야 할 때 (배포용, 테스트용 ..)
- 여러 작업들이 각각 독립되어 진행될 때 (신기능, 코드개선, 긴급수정 ...)
git branch 브랜치명 | 브랜치 생성 |
git branch | 브랜치 목록 확인 |
git switch -c new-teams | 브랜치 생성과 동시에 이동 |
git branch -d (삭제할 브랜치명) | 브랜치 삭제하기 |
git branch -D (강제삭제할 브랜치명) | 브랜치 강제삭제하기 |
git branch -m (기존 브랜치명) (새 브랜치명) | 브랜치 이름 바꾸기 |
git log --all --decorate --oneline --graph | 터미널에서 그래픽으로 볼 수 있지만 그냥 소스트리를 보자 |
서로 다른 브랜치를 합치는 두 방식
merge | 두 브랜치를 한 커밋에 이어붙입니다. |
브랜치 사용내역을 남길 필요가 있을 때 적합한 방식입니다.
다른 형태의 merge에 대해서도 이후 다루게 될 것입니다.
git merge 브랜치명
merge로 병합
rebase | 브랜치를 다른 브랜치에 이어붙입니다. |
한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합합니다.
이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋습니다.
git rebase 브랜치명
rebase로 합치기
rebase를 쓸땐
합칠 브랜치로 가서 rebase 실행
이 후 메인 브랜치에서 합친 브랜치를 merge해야
메인으로 유지
충돌 상황 해결하기
merge충돌 해결하기
충돌 확인하고 부분 수정 완료 | git add . , git commit 로 병합 |
merge 중단 (해결 어려울때) | git merge --abort |
rebase충돌 해결하기
충돌 확인하고 부분 수정 완료 | git add . git rebase --continue 충돌이 모두 해결될 때 까지 반복 마지막은 main에서 merge하기 그리고 잔 가지 치기 (삭제) |
rebase 중단 (해결 어려울때) | git rebase --abort |
아직은 많이 어렵네요..
'🧠 저장 > Git' 카테고리의 다른 글
[깃/깃허브] 이전 단계로 이동, 이동 취소, fetch, 원격의 브랜치 가져오기 (0) | 2022.04.07 |
---|---|
[깃/깃허브] Snapshot, Working directory, Staging area (0) | 2022.04.01 |
[깃/깃허브] 동료와 커밋이 겹칠 때, 충돌될 때 💥 (0) | 2022.03.31 |
[깃/깃허브] 토큰, 리포지토리 생성, 로컬과 원격 (추가, 다운) (0) | 2022.03.29 |
[깃/깃허브] 기본 개념 (드림코딩, 노마드 코더, 얄팍한 코딩 사전) (0) | 2022.03.28 |