GitHub은 Git repository를 위한 호스팅 플랫폼이다. GitHub 없이도 Git을 사용할 수 있지만 다른 개발자와 같은 프로젝트를 두고 협업하거나 내 코드를 공유하기는 어렵다.
GitHub repository는 모든 프로젝트 파일들과 코드의 히스토리를 관리할 수 있게 해주고, public 혹은 private 하게 협업할 수 있다.
echo "# github-tutorial" >> README.md #파일 생성
git init # 깃 초기선언
git add README.md #staging area에 추가
git commit -m "first commit" #커밋
git branch -M main #master >> main 으로 브랜치 이름 변경
git remote add origin https://github.com/wjddk97/github-tutorial.git # 깃헙 연동
git push -u origin main # 해당 remote repository 로 업로드
로컬환경에 이미 Git repository 가 있다면 아래 ...or push an existing repository from the command line
부분에 나와있는 순서대로 진행하면 됩니다.
로컬 Git repo를 GitHub remote repo 와 연결 후 push 까지 했다고 로컬에서 작업한 내용들이 자동으로 remote 에 반영되는 것은 아니다. 그래서 변경사항이 있으면 다시 push 를 해줘야 GitHub repo 가 업데이트 된다.
clone 할 파일로 이동 후 진행
git clone <github-repo-link>
ex)
git clone https://github.com/wjddk97/wecode.git
clone 받은 GitHub repository 의 이름을 그대로 딴 폴더가 생성되고 clone 시점에 remote repository에 존재했던 모든 폴더 및 파일들이 그대로 복제되어 있는것을 확인할 수 있다.
💡 이렇게 다른 개발자들의 public repository 를 클론받아 작업할 수도 있습니다.
#로그인 기능 작업 브랜치 feature/login 에서
git add .
git commit -m '커밋 메세지'
git push origin feature/login
Pull Request 에서는 해당 repository 를 열람할 수 있는 권한이 있는 개발자들이 작업내용에 대한 리뷰를 해주거나, 변경 사항을 확인할 수 있다. (main 브랜치로 합쳐지기 전에 확인해야하기 때문에)
Conflicts (충돌)
항상 이렇게 순조롭게 merge 까지 진행되면 너무 좋겠지만, merge 하기 전 conflicts (충돌) 가 발생할 수도 있다. 충돌은 어떤 파일의 변경사항이 기준이 되는 main 브랜치의 파일과 겹쳐, Git 에서 어떤 버전의 코드를 선택해야하는지 모를 때 발생! 이런 상황에서는, 개발자가 직접 코드를 비교해 충돌을 해결하고 merge 를 마무리 한다.
merge가 된 후
로컬 repository 는 GitHub 에 있는 main 과 서로 다른 내용을 가지고 있다. 이 때 git pull 명령어를 통해 remote 의 최신화된 코드를 내 로컬 repo 에 반영할 수 있다.
📌 main 브랜치로 전환 후 최신화를 시켜준다.
git pull origin main