내 컴퓨터에서 외부저장소에 관한 작업을 할때 사용하는 명령어
"git remote"
"git remote add origin (프로젝트 url)"
url이 가리키는 외부 서버의 프로젝트를 원격 저장소로 지정하는데, 이름은 origin이라고 설정한다.
"git push -u origin master"
현재 내 프로젝트의 내용을 origin에 push(업로드)한다.
"git clone (프로젝트 url)"
외부저장소에 있는 프로젝트를 내컴퓨터에 다운로드 한다.
(다른 사람의 프로젝트에 처음으로 참여할 때)
"git pull"
원격 저장소의 최신 커밋을 가져온다.
1. "git add ."
2. "git commit -m "(message)"
3. "git push -u origin"
항상 작업을 할때 "git pull" 을 통해 최신화를 시켜주어야 한다. 만약 외부 저장소와 커밋히스토리가 다를 경우 push가 불가능하다.(가능은하나 버전이 꼬이기 때문에 팀플을 위해 자제하자//"git push --force"를 사용하면 강제로 push 가능)
브랜치(branch)란 특정 커밋을 가리키는 '포인터'이다.
master == branch
origin/master == 원격저장소의 branch
위의 상태는 현재 최신 버전이라는 의미이다.(원격 저장소와 현재 내 컴퓨터에 있는 working directory의 버전과 같다)
=>병렬적으로 프로젝트 진행이 가능하게 된다.
"git branch (branch의 이름)"
"git checkout (branch의 이름)"
develop이라는 branch를 새로 만들어 HEAD를 옮긴 뒤, commit했을 때의 log
"git log --all --graph"
--all: HEAD가 가리키는 Branch 뿐만 아니라, 모든 Branch를 본다.
--graph: Branch와 Commit의 관계를 그래프 형식으로 본다.(develop)branch이후로 feature-defend, feature-attack 두개의 branch로 나눠진 것을 확인할 수 있음.
"git merge (합칠 branch 이름)"
지금 HEAD가 가리키는 Branch에 (합칠 branch)에서 했던 작업을 합쳐 준다.develop branch와 feature-attack branch가 합쳐진 것을 확인할 수 있다.(새로운 commit이 생성되지 않고 위 그림과 같이 기존 커밋에 합쳐진 것을 Fast-Foward라고 한다.)
merge할 때, 같은 줄에 다른 메소드가 있으면 충돌이 일어나고 위 사진과 같이 에러 메세지가 뜨며, 충돌이 일어나 코드를 나타내주는 기호들이 생성된다.
- 해결방법
충돌이 일어 난 부분을 나타내는 기호들만 지워주면 자연스럽게 합쳐진 코드를 나타낼 수 있다. 그 후 커밋하면 해결!
다음과 같이 새로운 커밋이 생겼다.
"git push -u origin master" or
"git push -u origin (branch 이름)"
master branch를 origin이 의미하는 깃랩 서버의 프로젝트로 올려라
-u == --set-upstream(내 컴퓨터의 master 브랜치가 깃랩 서버의 master 브랜치를 바라보게 한다)
해당 옵션을 주고 맨 처음에 push를 하게 되면, git push/pull만 해도 깃랩서버의 master 브랜치를 기준으로 작업을 진행한다.
- 다른팀원 초대하기
- project repository에서 setting 선택
- Members 선택
- 다른 개발자의 닉네임이나 이메일 입력
- add to project 버튼 클릭
- 알맞은 권한 주기
Guest
Reporter
Developer(코드를 수정하려면 Developer 권한이 주어져야함)
Maintainer
기존의 git clone 후 git push는 아무런 제약없이 프로젝트의 수정이 이루어지므로 협업시에는 다른 방식으로 작업을 해야 한다.
위 그림들과 같이 원래의 프로젝트(이하 origin)에 바로 git push를 하는 것이 아닌 마이클의 레포지토리에서 작업이 진행되고 진행한 작업에 대해 origin의 maintainer에게 merge request를 보내 진행한 작업을 프로젝트에 반영할지 하지 않을지 검토하는 과정이 추가된다.
해당 프로젝트 레포지토리에서 Fork를 사용하여 위의 과정을 진행한다.
- origin의 프로젝트에서 Fork를 한다.
- Fork한 복제된 프로젝트의 url를 가져와 "git clone"을 한다.
작업을 한 후 git push를 했다면 밑의 그림과 같이 create merge request를 누른다.
위의 사진에서 자신이 수정할 branch를 확인한다. 만약 다를경우 오른쪽에 있는 change branches를 통해 바꿔준다.
MR 알람 아이콘다음과 같이 MR이 온 것을 확인 할 수 있다.
또한 DISCUSSION 기능을 통해 해당 코드에 대해 작성자와 질의를 할 수 있다.
해당 코드가 Merge해도 괜찮다면 Merge버튼을 눌러준다.
이때 Fast-Foward가 일어나지 않고 새로운 커밋이 생성되는데, 이는 Setting에서 Merge 정책을 변경할 수 있다.