일반적인 협업 과정 (Push & Pull)

이 게시글에서 주요내용은 다음 4가지로 요약된다.

  • 일반적인 협업과정 : Pull -> 작업 -> Commit -> Pull -> Push -> ....
  • 작업하기 전과 Push하기 전에 충돌을 줄이기 위해 Pull 한다.
  • 인덱스에 보여진 브랜치들의 버전 위치는 현재 브랜치들의 버전 상태가 아닐 수 있다.
  • Author 이름과 이메일 변경방법

Changing Author Info
같은 컴퓨터에서 두개의 로컬저장소를 만들고 각 로컬저장소를 서로 다른 사람이 작업하는 공간으로 생각하자. 좀 더 각 저장소를 구분하기 쉽게 저장소에 Author name과 email을 지정해보자. 필수사항은 아니므로 건너뛰어도 좋다.
1. git_exam_other 로컬저장소 탭에서 터미널을 클릭한다.


2. user.name과 user.email을 지정한다.


Common Collaboration Process
현재 git_exam과 git_exam_other 그리고 origin/master의 저장소는 같은 버전을 가지고 있다.
1. git_exam의 Working Directory를 수정하고 커밋한다( !!!!!! 추가 후 커밋 ). 인덱스에서 master와 orgin/master가 버전 1개 차이가 존재한다. Push버튼의 숫자 1의 의미 또한 원격저장소와 로컬저장소의 버전차이가 1개 있다는 뜻이다. 하지만 origin/master가 지금도 저 버전일 것이라는 보장은 없다.


2. 원격저장소로 Push한다.


3. Push가 끝나고 숫자 1이 사라졌다. Push해서 원격저장소와 로컬저장소의 버전차이가 없기 때문이다. 인덱스에서 marter와 origin/master가 같은 버전에 있다.(버전이 같다=버전차이가 없다)


4. git_exam_other 로컬저장소로 가서 Pull한다.


5.


6. git_exam_other의 Working Directory를 수정하고 커밋한다( ###### 추가 후 커밋 ). Push까지 한다.(사진은 생략함)


7. git_exam의 Working Directory를 수정하고 커밋한다.


8. Push하면...


9. git_exam_other PUSH 상태에서 git_exam PUSH 하면 오류가 발생한다. 원격저장소와 push하려는 로컬저장소의 현재 버전이 다르기때문에 문제가 발생할 확률이 높다. 그래서 깃이 자체적으로 제한해둔 것이다.


10. 그래서 Push하기 전에 먼저 Pull 한다. Pull하는 동시에 merge가 수행된다. 첫번째 Options : Commit merged changes immediately를 체크하면 Pull하는 동시에 merge가 수행되고 Commit까지 된다.


11. Pull해서 원격저장소와 로컬저장소를 병합했다. Push에 숫자2는 인덱스에서도 알 수 있다시피 원격저장소와 로컬저장소의 버전이 2개 차이나기 때문이다.


12. (자세한 과정은 생략) 2개의 버전을 푸쉬하고 원격저장소와 로컬저장소의 버전이 같아졌다. Push의 숫자도 사라진다.


대충 생각하면 작업 -> 커밋 -> 푸쉬 과정을 거칠 것 같다.
조금 더 생각해서 풀 -> 작업 -> 커밋 -> 푸쉬 -> ...  정도로 생각할 수 있지만,
풀하고 푸쉬하기 직전까지 원격저장소가 변경되서 새로운 버전이 생성되었을 수 있다. 그래서 push 직전 pull을 해야한다.
따라서 pull -> 작업 -> commit -> pull -> push -> ... 가 일반적으로 협업과정이다.







댓글

이 블로그의 인기 게시물

AWS RDS DB 인스턴스에 연결하기 (Oracle Database Instance)

tomcat server.xml ( 톰캣 서버 설정 )

Git resolving merge conflicts as Mark resolved (mark resolved 옵션으로 해결)