배경
git/github 를 처음 쓰게된 시점이 과제로 팀프로젝트를 처음 하게 되었을 때인데 개발도 익숙치 않던 상황에 git 은 물론이요 github 를 얕고 빠르게 GUI 위주로 다뤘었다 그러다 보니 슬슬 한계를 느껴 처음 배우는 것처럼 하나부터 열까지 천천히 다시 배워보려 한다
git 은 무엇인가
깃(Git /ɡɪt])은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템 혹은 명령어를 의미한다.
VCS : Version control system (버전관리 시스템)
※ 부가 설명
Git과 다른 VCS(Subversion 및 그 친구들 포함)의 주요 차이점은 Git이 데이터에 대해 생각하는 방식입니다. 개념적으로 대부분의 다른 시스템은 정보를 파일 기반 변경 목록으로 저장합니다.
Git 은 상태를 커밋하거나 저장할 때마다 기본적으로 모든 파일이 그 순간에 어떻게 보이는지 사진을 찍듯이 해당 스냅샷에 대한 참조를 저장한다.
1. 기본 세팅 관련
Git Bash
- Git 사용에 적합한 터미널
- 리눅스/맥(유닉스)에서 사용되는 CLI 명령어들을 윈도우에서 사용 가능 - 타 프로그래밍에도 유용
- ※ 협업시 윈도우와 맥에서 엔터 방식 차이로 인한 오류를 방지합니다.
git config --global core.autocrlf true
VSC
- VS Code에서
Ctrl
+Shift
+P
Select Default Profile
검색하여 선택- Git Bash 선택
- 터미널에서 +로 새 창을 열어서 기본으로 Git Bash가 설정된 것 확인
.git 폴더 생성
※ .git 지우면 Git 관리내역이 삭제됩니다. (현 파일들은 유지)
git init
특정 파일 무시
gitignore 파일 생성
파일 등록 관련 명령어
스테이징
git add
커밋
git commit
# 커밋 메시지와 함께
git commit -m "Replace Lions with Leopards"
# `add`와 `commit` 한꺼번에
git commit -am "(메시지)"
커밋 메시지까지 함께 작성하기
git commit -m "FIRST COMMIT"
커밋 내용 확인
# 위치한 브랜치에서의 내역만 볼 수 있음
git log
# 여러 브랜치의 내역 편리하게 보기
git log --all --decorate --oneline --graph
커밋 내용 자세히 확인
git diff
2. Git에서 과거로 돌아가는 두 방식
reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다.
git reset --hard (돌아갈 커밋 해시)
# 아래 명령어로 현 커밋 상태로 초기화
git reset --hard
revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행합니다.
git revert (되돌릴 커밋 해시)
# 커밋해버리지 않고 revert 하기 스테이징 만 됨
git revert --no-commit (되돌릴 커밋 해시)
수정한 내역이 충돌 충돌시
git rm leopards.yaml
로 Git에서 해당 파일 삭제git revert --continue
로 마무리:wq
로 커밋 메시지 저장
3.브랜치
기본 명령어
# `add-coach`란 이름의 브랜치 생성
git branch add-coach
# 브랜치 목록 확인
git branch
# add-coach` 브랜치로 이동
git switch add-coach
# 브랜치 생성과 동시에 이동하기
git switch -c new-teams
# 브랜치 삭제하기
git branch -d (삭제할 브랜치명)
# 커밋내용 무시하고 브랜치 삭제하기
git branch -D (강제삭제할 브랜치명)
# 브랜치 이름 바꾸기
git branch -m (기존 브랜치명) (새 브랜치명)
# 여러 브랜치의 내역 편리하게 보기
git log --all --decorate --oneline --graph
※ checkout
명령어가 Git 2.23 버전부터 switch
, restore
로 분리
브랜치 내용 병합 관련
merge : 두 브랜치를 한 커밋에 이어붙입니다. : > ·
- 주 흐름이 될 곳에서 합쳐질 브랜치를 merge 함
- 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식입니다.
- 다른 형태의 merge에 대해서도 이후 다루게 될 것입니다.
※ merge
는 reset
으로 되돌리기 가능
merge
도 하나의 커밋이기 때문merge
하기 전 해당 브랜치의 마지막 시점으로도 가능
# main 입장에서 add-coach 를 머지해서 합치기
git merge add-coach
rebase : 브랜치를 다른 브랜치에 이어붙입니다. - ···
- 주 흐름이 될 곳에서 이어붙어질 브랜치로 이동해
main
브랜치로 rebase 함 - 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합합니다.
- 이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋습니다.
※ rebase 이후 브랜치가 뒤쳐져있으므로 merge 까지 이어져야 함
# new-team 브랜치를 `main` 브랜치로 rebase
git rebase main
# main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward
git merge new-teams
브랜치 충돌시 처리관련
merge 충돌 해결하기
- 오류 메시지와
git status
충돌 부분 내용 확인가능 - 에디터에서 충돌부분만 변경 한후 스테이징 한 후 커밋해서 처리
# 충돌 발생후 처리
git merge conflict-1
# 충돌부분 변경 후
git add ...
git commmit ...
# 당장 충돌 해결이 어려울 경우 아래 명령어로 `merge` 중단
git merge --abort
rebase 충돌 해결하기
- 오류 메시지와
git status
충돌 부분 내용 확인가능 - 에디터에서 충돌부분만 변경 한 후 스테이징 한 후 특정명령어로 계속 수정
# 충돌 발생후 처리
git rebase main
# 충돌부분 변경 후 끝날 때까지 반복
git add ...
git rebase --continue # 커밋내용은 자동으로 적용됨
# Successfully rebased and updated refs/heads/conflict-2.
# 당장 충돌 해결이 어려울 경우 아래 명령어로 `merge` 중단
git rebase --abort
'git & github' 카테고리의 다른 글
git github 처음부터 다시 배우기 - 5. git 활용 (0) | 2023.02.13 |
---|---|
git github 처음부터 다시 배우기 - 3. git 디테일 (0) | 2023.02.13 |
git github 처음부터 다시 배우기 - 4. commit 디테일 (0) | 2023.02.09 |
git github 처음부터 다시 배우기 - 2. git hub (0) | 2023.02.06 |
[GitHub] git private clone 인증 관련 (0) | 2022.08.30 |