
git의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 분기와 같은 것이다. 기본적으로 git은 master 브랜치를 만든다. 처음 커밋하면 이 master 브랜치가 생성된 커밋을 가리킨다. 이후 커밋을 계속하면 master 자동적으로 브랜치는 가장 최신 커밋을 가리킨다.
Branch 알아보기
Git 브랜치 - 브랜치란 무엇인가
원격 저장소의 사용은 백업과 협업에 필수이다.
로컬 = 내 컴퓨터
원격 = 가상의 저장소 (인터넷 세상 어딘가에 있는 다른 컴퓨터 속의 저장소
출처
https://github.com/(계정명)
-> 개인 깃허브 주소
https://github.com/(계정명)/momentum(래퍼지토리 명)
-> 개인 깃허브 내 원격 저장소 주소
로컬 -> 원격으로 업로드 하는 방법
... git add .
... git status
... git commit -m 'first commit'
// 커밋은 버전을 생성하는 것
... git log
// 커밋한 브랜치 확인
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ 여기까지 로컬 저장소 ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
// github에서 새로운 래퍼지토리를 만든다. (원격 저장소 생성)
... git remote add origin (github 원격 저장소 주소)
//remote : 원격 저장소, Origin : 저장소 주소 지칭
//github 원격 저장소 주소를 git에 업로드
... git push origin master
//master : 브랜치
//위 브랜치로 깃허브에 업로드
1️⃣ 클론 clone
원격 저장소를 로컬 환경으로 복제 (다운로드)

ssh 주소를 git에서 붙여넣기 한다.
원하는 폴더의 위치를 정하고 명령어 입력
git clone git@github.com:계정이름/리퍼지토리 이름.git
원격 저장소 브랜치 이름
main 브랜치 ==master 브랜치
origin ==원격 저장소에 붙은 별명
origin/HEAD ==원격 저장소 origin의 HEAD
origin/mian ==원격 저장소 origin의 mian
로컬 저장소의 main(master) 브랜치와 HEAD는
원격 저장소의 origin 브랜치와 main 과 다를 수 있다.
2️⃣ 푸시 push
원격 저장소에 로컬 저장소의 커밋을 밀어넣기 (업로드)
git init
//현재 프로젝트에서 변경사항 추적(버전 관리) 시작
git add .
(또는)git add 특정파일
// 변경사항을 추적할 전체 (또는 특정파일) 지정
git commit -m'프로젝트 생성'
// 메세지(-m)와 함께 버전을 생성
<푸시 진행을 위한 세가지 명령어 🔽>
<깃 허브에 래퍼지토리 생성>
git remote add origin git@github.com:깃헙계정/래퍼지토리 이름.git
// origin이란 별칭으로 원격 저장소 연결 (푸시할 원격 저장소 찾기)
git branch -M main
// 깃허브의 브랜치 이름으로 바꾸는 명령어 (master -> main)
git push -u origin main
(또는) git push origin main == git push
// 푸시를 하는 명령어
// 최초 한 번 입력하고 나면 origin main 생략 가능해 이후부터는 git push 로만 푸시 가능!
Push를 하는 일련의 과정 🔽
(로컬주소) % cd ~
(로컬주소) ~ % cd Desktop
(로컬주소) % mkdir pushtest
(로컬주소) % cd pushtest
(로컬주소 pushtest) % git init
//Initialized empty Git repository in /Users/(계정)/Desktop/pushtest/.git/
(로컬주소 pushtest) % touch a.txt
(로컬주소 pushtest) % vi a.txt
(로컬주소 pushtest) % git add a.txt
(로컬주소 pushtest) % git commit -m "first commit"
//[main (root-commit) 324b70a] first commit
// 1 file changed, 1 insertion(+)
// create mode 100644 a.txt
(로컬주소 pushtest) % git remote add origin git@github.com:(🔐/remot-test).git
(로컬주소 pushtest) % git branch -M main
(로컬주소 pushtest) % git push -u origin main
//Enumerating objects: 3, done.
//Counting objects: 100% (3/3), done.
//Writing objects: 100% (3/3), 213 bytes | 213.00 KiB/s, done.
//Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
//To github.com:(🔐/remot-test).git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
(로컬주소 pushtest) %
3️⃣ 패치 fetch
원격 저장소의 커밋을 로컬 저장소로 가져만 오기.
클론 이후 원격 저장소에 업데이트 사항이 있을때 다운받아 로컬과 비교하기 위해 사용! 패치는 로컬의 브랜치에까지 영향 없다. (가상의 브랜치인 origin/main으로 fetch 되기 때문)
-> 원격 저장소(github)의 새 커밋을 가져오기 위해선
mrege를 해야함!
4️⃣ 풀 pull
원격 저장소를 로컬 저장소로 가져와서 병합하기
원격 저장소의 새 커밋을 로컬 저장소에 가져와서 병합!
Pull = fetch 패치 + merge 병합
git pull (origin main 생략 가능)
23.3.23 실강
1) fast foward merge (빨리감기 병합)
Main 브랜치 내용이 업데이트 되지 않았을때 사이드 브랜치와 합치는 상황
2) -....? merge (일반 병합)
Main 브랜치의 업데이트 내용와 사이드 브랜치에 업데이트 된 내용이 다를때
1. 서로 다른 파일을 수정했을 때
2. 서로 같은 파일을 수정했을 때
먼저 1번의 상황은 문제가 없다. (충돌 없음)
A라는 사람이 A.js 파일을 수정했고 B라는 사람이 B.js 파일을 수정했을 때 merge 한다면 git이 자동으로 소스코드를 합쳐줄 것이다.
2-1) 서로 같은 이름의 파일을 수정했지만 수정한 부분이 다를 때
2-2) 서로 같은 이름의 파일을 수정하고 수정한 부분이 겹칠 때
충돌이 발생할 수 있다. 충돌 시 vi 창으로 보여지는 메세지를 택1 하여 해결하는 방법이 있다. (다른 방법도 있었던것 같은데 찾아보고 내용 추가할 예정)
깃의 충돌에 대해 알아보지! 중복되는 부분은 vi창으로 조회가 가능하다.
<<< ~ === 현재 위치! main branch
=== ~ >>> 사이드 branch
=== 를 기준으로 전자/후자 직접 선택하면 됨!
<<<<<<< HEAD
commit: 인덱스의 상태를 기록하기
=======
pull: 원격 저장소의 내용을 가져오기
>>>>>>> issue3
브랜치의 시작점을 바꿀때
git rebase -i ...?
풀 리퀘스트 (pull request)
타인이 원격 저장소의 main에 push할 수 있도록 요청하는것!
fork(복사) => '복사된 main저장소'를 사용.clonebranch 브랜치이름 생성 후 해당 브랜치에서 작업 (checkout 브랜치이름)브랜치이름 Push