소스 반영하는 법
1. remote add origin
원격저장소와 연결시킨다.
$ git remote add origin <원격저장소 주소>
로컬에서 원격 저장소의 이름과 경로를 등록한다.
모든 컴퓨터 자원들은 주소를 가지고 있기 때문에 목적지를 정확한 타겟팅을 해주어야 한다. 원격 저장소 주소 역시 마찬가지이다. origin은 저장소의 이름을 뜻한다. 실제로 원격 저장소를 활용할 때는 원격 저장소의 주소를 직접 입력하는 것이 아니라
origin이라는 이름을 활용한다. 즉, 원격 저장소 이름과 주소가 매칭 되어있는 것이다. 깃허브(Github)에서 저장소를 만들고 등록하는 명령어가 바로 git remote add origin이다.
2. push
원격 저장소로 프로젝트를 push하면 깃허브에서 코드와 코드를 변경 했던 이력을 확인 할 수 있다.
$ git push -u origin <브랜치명>
원격 저장소의 로컬 소스를 실제로 반영한다.
최초에 push 작업을 하는 경우
$ git push -u origin main
위 코드의 main은 원격 저장소의 브랜치를 뜻한다. 즉, 같은 저장소 안에서도 다수의 브랜치를 병렬 작업 중인 소스를 관리 할 수 있으며 원격 저장소에도 동일하게 반영된다. push 뒤의 -u 옵션은 --set-upstream이라는 옵션을 축약해서 사용하는 것이다. 내가 위치한, 현재 작업하고 있는 브랜치와 origin 뒤의 원격 저장소에 있는 브랜치를 맵핑 해주는 역할을 한다.
나중에 push를 또다시 사용해야 할 때(수정하거나 변경되었거나 등) 전에 -u 옵션을 쓴 경우
$ git push
git push 명령어만으로도 원격 저장소에, 작업했던 브랜치에 push 작업을 수행 할 수 있다.
push 명령어가 바로 수행 안되는 이유
깃허브 원격 저장소의 경우에는 인증 받은 사용자, 인증 받은 Host(컴퓨터)만 push를 허용한다. 이전에는 다소 복잡한 방법으로 계정정보를 인증 했지만 현재는 git credential manager를 통해서 손쉽게 브라우저에 연동하여 로그인 정보를 가져올 수 있게 되었다. Windows는 깃을 설치하면 기본적으로 같이 설치 할 수 있는 옵션이 있는데 Mac은 수동으로 설치하여 따로 세팅해야한다.
협업하는 법
1. clone
원격 저장소에서 Local 환경(내 컴퓨터)에 가져와야한다.
$ git clone <원격저장소 주소>
깃허브 원격 저장소에 업로드 된 프로젝트를 가져오려면 저장소의 페이지에 들어가서 HTTPS에 나와있는 주소를 가져온다.
*깃으로 저장소가 되어있는 주소는 .git으로 끝나는 것이 특징이다. .git으로 끝나지 않으면 클론으로 불러올 수 없기 때문에 확인해보는 것이 좋다.
ZIP 파일을 다운 받아 쓰지 않는 이유는 Git Clone을 통해 프로젝트를 받으면 commit 이력이나 설정 정보들이 담긴 .git이라는 숨김폴더가 함께 포함되어 받아지지만 Download ZIP 파일로 프로젝트 파일을 받으면 .git 파일이 포함되지 않는다. 소스를 수정하는 것을 반영하기 위해 클론을 하는 것인데 단순히 파일만 받으면 수정을 반영 할 수 없기 때문에 협업에 적절하지 않다.
$ git clone https://github.com/[계정명]/[프로젝트명].git
명령어를 실행하면 프로젝트명의 폴더를 만들고 웹페이지에서 확인할 수 있었던 코드를 다운 받는다.
2. checkout
브랜치를 설정 할 수 있다. main이라는 중심 줄기에서 새로운 가지를 뻗어나가 나만의 작업공간 혹은 특정 기능을 만드는 기능이다.
$ git checkout -b <브랜치명>
$ git checkout <브랜치명>
최초에 브랜치를 할당 받으면 main에서 시작하는데 새로운 기능을 만들거나 수정 할 때는 main이 아닌 복사본을 만들어서 작업 후, test를 끝마치고 main에 합쳐주는 것이 일반적인 협업 과정이다.
$ git checkout -b feature-1
-b 옵션은 브랜치명을 입력했을 때, 신규로 만들면서 바로 그 브랜치로 이동 할 수 있다.
feature-1에서 작업하고 commit 후, 변경사항을 main으로 반영한다.
$ git commit -m "<message>"
feature-1에서 새로운 버전을 찍은 후
main과 합치기 위해 main으로 이동한다.
$ git checkout main
3. merge
main과 합치는 merge 작업을 해준다.
$ git merge <브랜치명>
만약 서로 다른 브랜치의 같은 곳에 위치한 코드가 다르다면 병합이 실패하게 된다. 동일한 곳에서 소스가 달라서 conflict가 발생했기 때문이다.
남길 코드를 선택하고 HEAD와 feature-1 부분을 포함하여 모두 지운 뒤, 다시 commit하면 된다.
'Back-End' 카테고리의 다른 글
Git의 구조와 로컬 Git 저장소 생성하는 방법 (0) | 2023.05.02 |
---|---|
Git & Github란? (0) | 2023.05.02 |