이전에 만들었던 프로젝트의 소스를 깃에 업로드 했던 적이 몇 번 있다. 사실 몇 번 사용해 본 적이 있음에도 협업에는 단 한 번도 사용해보지 않아 이번 기회를 통해 관련 명령어들을 정리하며 방법을 정리해 볼 생각이다. 그리고 남이 'Git 어떻게 써요?'라고 물어볼 때마다 이 링크를 전해줄 예정이다.
상단의 New
버튼을 누르면 레포지토리를 생성할 수 있다. 여러가지 설정 창들이 뜨겠지만 README
옵션 정도만 체크해주고 넘어가면 될 것 같다. 해당 옵션이 활성화 되면 README.md
파일이 만들어지는데, 마크다운 문법을 통해 해당 레포지토리를 설명하는 글을 포스트 형식으로 작성할 수 있다. 지금 작성하고 있는 이 velog post
도 마크다운 문법으로 작성되었다.
레포지토리를 만들었으면 다음과 같은 창이 뜨게 된다. 이 레포지토리에 있는 데이터들을 깔끔하게 가져오고 싶다면 git clone
을 쓰면 되는데, 맥이라면 터미널을 쓰고 윈도우라면 파워쉘을 사용하는 것이 명령어 환경에 친숙해지는 데에 도움이 된다. 앞으로의 설명도 console
에서의 명령어들로 구성되니 정말 아무것도 모르는 상태라면 git
부터 설치해야 한다. 윈도우는 알아서 하고, 맥은 brew에서 brew install git
명령어를 사용해서 깃을 설치하면 된다. 그 이후로 git clone { 본인 레포지토리 링크 ... }
형식으로 사용하여 주면 된다.
다음과 같이 제대로 레포지토리를 clone
해온 모습을 볼 수 있다. ls
명령어를 통해 README.md
파일을 확인했다.
사실 저런 식으로 가져오게 된다면 그냥 다음과 같은 형식으로도 업로드 할 수 있다.!
touch test.py
git add .
git commit -m 'commit message'
git push
하지만 이 글을 쓴 이유 자체가 협업을 위함이기에 branch
를 만들어 로컬에서 merge
후 push
를 써볼 생각이다.
git branch test-branch && git checkout test-branch // test-branch를 만들고 main branch에서 test-branch로 이동
git add . // 수정된 파일들을 올려놓는 상태
git commit -m 'Initial commit' // 해당 브랜치에 커밋
git checkout main // 다시 main으로 이동
git merge test-branch // main 브랜치에 test-branch를 병합
git push // 최종적인 업로드
문제 없이 업로드 된 것을 볼 수 있다. 작은 기능 단위로 branch
를 자주 쪼개주면서 기능 개발이 완료되면 merge
시키는 방식이 안정성에서도, 가시성에서도 우수하다고 한다.
다음은 다른 방식으로 파일을 가져온 경우인데 git remote add origin
방식을 사용한다. 현재 git
에 업로드 된 레포지토리는 원격 저장소로써의 역할을 하고 거기에 remote add origin
을 통해 origin
이라는 이름을 붙여주는 느낌이다. 이 방법을 따르면 push
이후 가끔 다음과 같은 오류를 볼 수 있다.
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
이럴 땐 겁 먹지 말고 그냥 git push --set-upstream origin master
를 복붙 해주면 되고, 이후 push
명령의 결과값은 다음과 같다.
아까와의 차이라고 하면 git
내에서 pull request
를 받아야 한다는 것이다.
다음과 같이 Compare & pull request
가 뜨게 되는데 파일을 merge
할지 확인하는 request
느낌이다.
이것은 레포지토리의 해당 권한을 가진 사람이 볼 수 있는 창인데 코드 리뷰 및 설명 등을 적고 Create pull request
를 누르면 pull request
가 생성되며 main branch
와의 병합 여부를 결정할 수 있는 창이 나온다.
merge
이후 성공적으로 index.html
파일이 저장소에 저장된 모습을 볼 수 있다.