TIL 👩🏻‍💻

TIL : Git workflow

heesue 2021. 4. 6. 15:21

페어 프로그래밍을 하거나 프로젝트를 할 때 함께 코드를 짜기 때문에 상대방 코드를 가져오는 등 공유하는 상황이 분명 생긴다. 이런 상황에 어떻게 코드를 공유할 수 있을지 git workflow를 다뤄보고 충돌상황이 발생했을 때 어떻게 해결할지 알아보려고 한다.


1. 페어 프로그래밍 Git workflow

쉽게 이해하기 위해 나를 user1, 상대방을 user2라고 해보자.

 

1. user1 : git fork -> git clone 한 상태에서 파일을 만들고 푸시 과정을 다 거친다. 이때 중간에 remote 과정을 거쳐야 한다. remote가 잘 된 건지 확인은 remote -v로 할 수 있다. user2 자리에는 내가 임의로 상대방 이름을 정해서 쓰면 된다. user2도 fork 후 remote, clone하는 과정은 같다.

git remote add user2 <Repo URL>

user1의 파일

2. user2 : user2는 이제 user1이 만든 파일을 가져와서 수정하고 싶다. 이때 pull을 이용해주면 된다. 이후 내용을 추가해서 다시 add, commit, push 과정을 거친다.

git pull user1 master

user2의 수정 파일


2. 충돌 상황

충돌 상황을 재연해서 해결해 보려고 하는데 그 방식이 기존의 레파지토리에서 fork로 진행하는 방식과 branch를 만들어서 하는 방식이 있다. 처음에 페어 분과 진행할 때는 이런 걸 모르고 그냥 branch를 만들어서 진행하려고 했다. 그 결과....충돌 상황은 생기지만 마지막에 push 하려고 할 때 다음과 같이 권한이 없다는 오류가 났다. 서치를 하면서 이 방법이 아닌가 보다 했지만 문제 해결을 해 보고 싶어 ssh key를 만드는 과정까지도 했다 ... 그러나 문제는 해결되지 않았고 스프린트 리뷰를 들으면서 자신의 repository에서 manage access에 들어가 페어에게 권한을 주면 해결된다는 걸 알 수 있었다. 어쨌든 첫 번째 방법으로도 진행해 보기 위해 다시 페어분과 진행해 보았다!

 

1. user1 : 위의 방식과 비슷하게 진행하는데 충돌 상황을 만들기 위해 같은 부분을 수정해 주면 된다. git push까지 완료하고 git pull을 진행하면 아래와 같은 오류가 뜬다! 메세지를 잘 읽어보면 'CONFLICT (content): Merge conflict in script.js' 이런 문구를 볼 수 있고 다음에 자동 병합에 실패했다고 뜬다.

 

 

2. 충돌 상황 해결 : vscode는 git에 최적화 되어 있어 병합을 하기 정말 쉽게 되어있다. 둘 중 선택도 가능하고 둘 다 있게 할 수도 있다. 나는 둘 다 있게 해서 해결했고 add, commit, push까지 완료하였다! 참고로 평소에는 commit할 때 메세지를 입력하는데 merge할 때는 입력하지 않아도 자동으로 입력된다.

 


3. Network Graph

오늘 스프린트 리뷰를 들으면서 새로 알게 된 것 중 하나이다! 지금까지 계속 작업하던 내 repository에서 insight -> Network를 누르면 확인할 수 있다. 밑에 사진은 좀 정신없을 수 있지만 맨 위가 user1, 위에서 4번째가 user2이다. 잘 보면 여기서 pull했구나를 알 수 있다! 그리고 다른 분들 얘기를 보고 sourcetree도 깔아보려고 한다..

 


※ 참고 : commit message

커밋 메세지는 보통 동사원형으로 쓴다!!

 

※ 참고 : 명령어!

· touch test.txt : 파일 만들기 (파일명 test.txt)

· cat test.txt : test.txt 파일 내용 확인

 

· git add : untracked / modified file -> staged file

· git restore : git add와 반대 역할

 

· git diff : 변경사항 확인

· git log 나가는 법 : q

 

· git push에 대해 : master branch에 있을 때에만 git push 뒤에 아무것도 붙이지 않는다. 명시적으로 표시하는 것이 일반적이다.

'TIL 👩🏻‍💻' 카테고리의 다른 글

TIL : Modern Javascript Koans  (0) 2021.04.08
TIL : 짝수생성기  (0) 2021.04.08
TIL : 개발환경 구축  (0) 2021.04.05
TIL : Stringify JSON  (0) 2021.03.27
TIL : 재귀함수  (0) 2021.03.25