이번 TIL은 유튜브 얄팍한 코딩사전 - 가장 쉬운 Git 강좌 - (하) Github편을 참고하여 작성되었습니다. (강좌 url: https://www.youtube.com/watch?v=GaKjTjwcKQo)
github는 전 세계에서 가장 많은 소스코드들이 공유되어있는 클라우드라고 할 수 있다. 오픈소스의 성지. 내 소스들을 안전하게 보관하고 동료들과 협업하고 전세계의 뛰어난 개발자들과 소통할 수 있다.
프로젝트를 레파지토리에 올리는 방법이다. CLI와 SourceTree 모두 사용이 가능하다. $ git status
로 모두 commit 되어 있는지 확인한다. 빠진게 있다면 전부 add 해서 commit 한다.
$ git remote
: 현 폴더의 원격 레파지토리를 확인하는 명령어
깃헙에서 레파지토리를 생성한 후 아래의 코드를 복사하여 CLI에 입력하면 원격 레파지토리가 등록되고, 소스가 push 된다.
$ git remote add origin https://github.com/MiaJLee/github-practice.git
$ git push -u origin master
다시 $ git remote
를 하면 해당 레파지토리가 나오는 것을 확인할 수 있다.
Sourcetree에서는 메뉴바에서 [Repository] - [Add remote], 원격이름을 추가하고 URL에 복사한 Github 레파지토리 주소를 붙여넣는다. 마지막으로 Github 유저명을 입력하면 된다.
좌측 바의 REMOTE에서 origin을 확인할 수 있고 이를 push 해주면 깃헙에서 확인할 수 있다.
$ git add -A
$ git commit -m “ADD dog”
$ git push origin master
오픈소스로 공유되면 안되는 민감한 내용이 담긴 파일이나, 자동으로 파일이 다운로드 되는 등의 파일은 Git에 올라가지 않도록 만들어야 할 필요가 있다.
프로젝트 폴더 바로 안쪽, 최상위 공간에 .gitignore 파일을 생성한다. 숨김파일로 생성이 된다. 여기에 아래 참고 링크에 나오는 형식으로 git의 관리에서 제외시킬 파일이나 폴더, 기타 요소를 적으면 된다.
참고링크 : http://atlassian.com/git/tutorials/saving-changes/gitignore
add - commit - push를 하면 .gitignore에 있는 파일을 제외하고 깃헙에 저장된다.
다른 동료들과 private한 레파지토리를 공유하기 위해서는 해당 레파지토리에서 [Setting] - [Collaborators] 를 통해 초대 이메일을 보내면 된다.
레파지토리에서 Code 버튼 - 주소 복사
$ git clone https://github.com/MiaJLee/github-practice.git (복사한 주소)
폴더가 복사되어있는 것을 확인할 수 있다.
$ cd (폴더명)
을 입력해서 그 폴더 안으로 들어가야 한다.
ex) $ cd github-practice
들어간 후 git log
를 입력해보면 프로젝트의 내역들이 그대로 복사되는 것을 확인할 수 있다.
SourceTree에서도 아래와 같이 클론이 가능하다.
clone 한 파일을 수정하고 git에 올리면 수정된 것을 확인할 수 있지만, 동료가 수정한 파일을 일일히 확인하는 것은 번거로운 일이다. CLI에서 간단한 방법으로 파일의 업데이트 상황을 확인할 수 있다.
$ git fetch
$ git status
origin에 비해 커밋이 뒤쳐져 있는지, up to date인지 확인할 수 있다.
뒤쳐져 있는 경우 다운 받아야 할 것이 있다는 의미이므로 git pull (원격명) (로컬 브랜치명)
을 입력한다. ex) $ git pull origin master
소스트리에서도 Fetch를 선택하면 master branch에 뭔가 받아올 것이 있다는 표시가 뜬다.
팀원이 작업한 것을 꾸준히 받아야 conflict를 방지할 수 있다. 또한 깃헙에서 내용을 pull 받기 전까지는 내 쪽에서 push가 불가능하다.
$ git branch
: 브랜치 생성
$ git checkout
: 브랜치로 넘어가기
$ git checkout -b (브랜치명)
: 위 두 단계를 한번에 가능하다!!!
$ git branch
는 로컬에서의 브랜치만 볼 수 있지만
$ git branch -a
를 하면 로컬과 원격 모두를 볼 수 있다.
아직 원격의 브랜치가 반영이 되지 않았다면 $ git fetch
로 Github의 현 상태를 파악하고 나서 다시 $ git branch -a
를 하면 된다.
깃헙에 있는 브랜치를 가져오기 위해서는 아래와 같이 입력하면 된다.
git checkout -b my-idea origin/my-idea
(로컬에서 my-idea
라는 브랜치를 원격의 origin/my-idea
에서 가져오고 그 평행우주로 넘어간다.)
팀원과 내가 같은 파일의 같은 내용을 수정한 경우 pull을 먼저 받아야 push가 가능한데, 이때 pull을 하게 되면, 팀원의 내용과 나의 내용이 충돌(Conflict)하여 병렬되어 나타난다. 이때 합의를 보고 수정한 뒤 add - commit까지 하고 push를 하면 상황이 끝난다.
원격 브랜치 삭제하는 법
$ git push -d origin my-idea
오 깔끔하게 정리 잘하셨네요👍 잘 보고 갑니다~~