2023.01.11(수) Westudy > Precourse > 공통세션 > Database
Common Workflow: 내 로컬 Repository를 GitHub 에 push 하기
1. 로컬에서 add / commit 한다.
2. Github 으로 이동 후 새 repository를 생성한다.
3. 나의 로컬 repository 를 GitHub repository 와 연결한다. (remote 추가)
4. 새 remote 를 이용하여 코드를 Push 한다.
cd ./Desktop/
git practice
폴더 생성mkdir git_practice
# git_pracitce 폴더로 이동
cd git_practice
# git 초기화
git init
-> 만약 깃허브에서 클론해온 경우, git init을 해줄 필요는 없다. git init
은 새 git 리포지토리를 초기화하고 기존 디렉터리 추적을 시작하게 해주는 반면 git clone
은 이미 원겨으로 존재하는 프로젝트의 로컬 복사본을 만드는 것이기 때문에 초기화를 해줄 필요가 없는 것.
ls-al
-> 위 명령어를 통해 .git
폴더를 확인할 수 있음.
vim
을 이용한 내용 작성touch lynn.md
-> touch
명령어를 통해 파일 생성 -> vim 편집기 실행 -> i
로 편집 모드 전환 후 내용 작성 및 .wq
키로 저장
git status
git add
git commit -m "커밋 메세지"
-> 틈틈이 git status
로 상태 변화 확인
git log
git_practice
폴더와 원격 저장소인 github repository
연동git remote add origin repository 주소
-> 위 주소
는 깃허브 리포지토리에 가면 나와있음.
git push origin main
-> 로컬에 있는 파일들 및 수정사항을 remote
을 통해 origin
, 즉 원격 저장소인 githube repository
에 올리는 명령어
위 사진을 보면 각각 Master
, feautre/login
, feature/signup
이라는 브랜치들이 존재하는 것을 볼 수 있다.
이렇게 각각의 브랜치를 생성하는 이유는 협업을 하는 과정에 있어서 함부로 master
브랜치에 푸쉬를 하는 게 위험(!)하기 때문이다.
master
브랜치는 항상 정상적으로 작동하고 안정적인 버전의 코드를 포함하고 있어야 한다. 그렇기 때문에 따로 브랜치를 생성하지 않고 바로 master
에서 작업을 하게 될 경우 오류를 낼 수도, 함부로 삭제를 하게 될 수도 있기 때문에 나만의 작업공간 = 브랜치를 만들어서 코드를 작성 후 master
와 합쳐달라고 요청, 즉 PR(pull request)
를 보내게 되는 것.
💬 github 협업 flow 에서 궁금했던 것
1)
feature/login
브랜치에서master
에 풀리퀘를 보냈고merge
까지 한 상태에서
2)feature/signup
브랜치가feature/login
브랜치와master
가merge
를 하기 이전의 리포지토리를 클론해온 상태일 경우,
3) 이후에feature/signup
브랜치가 푸쉬 및 풀리퀘를 보내게 될 경우 💥충돌(Conflicts)💥이 일어나게 된다.
-> 이런 경우, github 내에서 충돌을 해결하기 보단 편집기 내에서 다시 최신 상태의master
브랜치를 pull 해온 뒤 push를 하는 게 가장 안전하다. github 내에서 충돌을 해결하게 될 경우, 나의 편집기에는 충돌을 해결한 내역이 반영되지 않기 때문에 곤란해짐. (윤국님 피셜!)