TIL-25_2020.04.06 (git workflow)

Jiwoo Joy Kim (zuzokim)·2021년 4월 6일
0

TIL

목록 보기
29/30
post-thumbnail

git workflow

그동안에는 업스트림 레파지토리를 나의 리모트 레파지토리로 포크, 로컬로 클론해서 코드를 작성하고, git add, git commit, git push로 다시 리모트 레파지토리로 올린 후 PR로 마무리하는 과정을 거쳤었다.

git

컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

오늘 git을 git답게 활용해 여러 명이 코드를 작성할 때 코드의 버전을 관리하는 방법에 대해 공부했다.

  • fork, clone

  • git remote add (리모트명) (리모트레파지토리 주소url)
    : 함께 작업하는 사람의 리모트 레파지토리를 추가한다. (여러개도 가능하다.) 이때, 꼭 작업할 디렉토리로 들어가서 추가해주어야 한다.

  • git remote -v
    : 추가된 레파지토리 항목을 확인할 수 있다.

  • git add, git commit, git push
    : 이 때 push는 나의 레파지토리로 한다. git push origin master

  • git pull
    : 내가 아닌 다른 사람의 업데이트된 버전의 코드를 가져올 때는 git pull (리모트명) master

  • 이 때, origin = 리모트 주소이고, master = 현재 브랜치를 뜻한다.
    : 그동안 푸쉬하면서 origin master 가 무슨 뜻인지 궁금했는데, 브랜치를 배우면서 드디어 알게 되었다.

  • 깃헙에서 과거의 커밋 기록은 push 할 때마다 확인할 수 있다.

  • conflict 해결 : 동시에 코드의 같은 부분을 수정하면 충돌이 난다.
    오늘 충돌상황을 발생시키고 해결해보는 연습을 했는데, 처음에는 충돌이 나지 않아서 오히려 당황했다. 그 이유는 각자의 레파지토리에 push하기 때문에 당연히 서로 영향을 받지 않았던 것이고, 커밋까지만 한 뒤 다른 작업자의 레파지토리를 pull했더니 conflict가 발생했다. 이 때, 파일 상에서 변경된 사항을 확인하고, 원하는 코드로 업데이트해준 뒤 push하면 해결된다.

branch / merge

원본 master 브랜치를 수정하지 않고 사본을 만들어 수정, 업데이트 한 뒤 다시 합칠 수 있는 방법이다. 마치 일러스트,포토샵,프리미어에서 레이어같은 개념이랄까. 브랜치를 잘 치면 프리미어에서 소스를 전부 펼쳐놓고 편집하는 게 아니라 적절히 시퀀스로 분리시키는 것처럼 편리하게 작업할 수 있겠다는 느낌이 딱 왔고, 협업시에 코드 잘치는 것보다 브랜치/머지를 잘하는 게 훨씬 중요한 일이 될 수 있겠다는 생각을 했다.

  • git branch : 브랜치 리스트를 볼 수 있다.

  • git checkout -b (브랜치명) : 브랜치를 생성한 뒤 해당 브랜치로 이동.

  • git checkout (브랜치명) / git switch (브랜치명): 해당 브랜치로 이동.

  • git merge (브랜치명): 머지할 브랜치로 이동한 뒤 git merge (브랜치명)를 해주어야 해당 브랜치가 머지할 브랜치로 머지된다.

    머지는 그냥 서로 다른 두 코드를 합친다는 개념보다는 단어 그대로 최초의 소스에서 출발한 브랜치들이 테크트리를 타고 가다가 다시 합류되는(?) 식이라고 하는게 더 맞는 거 같다. 그래서 수정사항이 없는 브랜치를 마스터로 머지하면 해당 브랜치가 사라진다. (이부분에 대한 개념은 좀 더 명확히 공부해볼 것.)

유용한 GUI git client

git merge하고 깃헙상에서 머지된 코드 혹은 파일을 바로 확인 할 수 없었다. 처음엔 머지가 안됐나하고 다시 머지하려고하니 이미 머지가 되었다고 터미널 메세지가 떴다. 도대체 무슨 에러인가 싶었다.

결국 머지된 브랜치에서 push를 다시해주어야 비로소 파일이 머지되어 있는 상태를 눈으로 확인할 수 있다는 것을 알게 되었는데, 이런 불편함,답답함을 나만 느낀 건 아니었나보다. 이걸 직관적으로(?) 눈으로 확인 할 수 있게하는 GUI가 있었다. 그게 바로 github desktop 같은.. git client다.

이전에 cli 다룰줄 몰라서 썼던 깃헙데스크탑이 이런 깃클라이언트의 하나였다니, 난 git과 github을 정말 요상하게도 써봤던 것 같다. 그리고 추천 받은 다른 깃클라이언트-SourseTree, SmartGit은 나중에 설치해서 사용해봐야겠다.

profile
- I make something! ✍🏽👩🏻‍💻🎬🎨💖🪑🔨🔜

0개의 댓글