2021. 6. 27. 00:34ㆍBig Dreamer_Developer/Git
git workflow
Git에는 크게 총 3가지의 작업환경이 나눠져 있다.
첫 번째는 우리가 프로젝트의 파일들을 수정하고 작업하고 있는 working directory가 있고
어느정도 작업하다가 버전 히스토리에 저장할 준비가 되어있는 파일들을 옮겨놓는 staging area와 그리고 버전의 히스토리를 가지고 있는 git repository 또는 git directory로 나눠져 있다.
예를 들어서 프로젝트 폴더에서 파일들을 수정하고 있다가 b와 c 파일은 이제 어느정도 준비가 되었는데 라고 결심을 하게 되면 staging area로 b와 c 파일을 옮겨두게 된다. 그리고 commit 이라는 명령어를 이용해서 staging area에 있느 ㄴ파일들을 Git 버전 히스토리에 저장하게 된다.
그리고 계속 a 파일을 수정하다가 이제 a 파일도 준비가 되면 다시 staging area로 옮겨서 commit 명령어를 이용해서 다시 히스토리에 저장할 수 있다.
이렇게 git directory에 저장된 버전들은 checkout이라는 명령어를 이용해서 언제든지 원하는 버전으로 다시 돌아갈 수 있다.
보통은 이런 git directory를 나의 pc에만 저장해 두는 것이 아니라 Githyb와 같은 서버에 push라는 명령어를 이용해서 나의 git directory를 서버에 업로드 해 둘수가 있다.
그리고 서버에서 다시 로컬로 다운로드 받고 싶을 때는 pull이라는 명령어를 이용해서 할 수 있다.

각각의 commit은 스냅샷된 정보들을 기반으로 해서 고유한 해쉬코드가 부과가 된다.
이를 이용해서 우리는 버전정보를 참조할 수가 있다. 그리고 이commit에는 아이디 뿐만 아니라 어떤 버전인지, 버전의 관련된 메시지와 누가 작성했는지, 날짜와 시간 같은 정보들도 함께 포함이 되어져 있다.
Git workflow에서 working directory는 엄밀히 말하자면 두 가지로 나누어 볼 수 있다. 바로 untracked와 tracked 두 가지로 나눌 수 있는데, Git이 이미 알고 있는 Git이 트래킹하고 있는 파일이라면 tracked의 카테고리로 나눠지게 되고 새로 만들어진 파일이거나 기존에 존재하던 프로젝트에서 Git을 초기화 하게 되면 Git이 파일에 대한 정보가 전혀 없는데, 아직 트레킹이 되지 않는파일들을 untracked으로 나눠볼 수 있다.
그리고 Git이 트래킹하고 있는 파일들 중에서 지금 이 시점에서 수정이 되었는지 유무에 따라서 unmodified, 수정이 되지 않거나 modified, 수정이 된 두 가지로 나누어 볼 수가 있다.
unmodified, 수정이 되지 않았다는 말은 이전 버전과 비교해서 수정 되지 않았기 때문에 오직 수정이 된 modified 파일만 Staging area로 옮겨 갈 수 있다.
하지만 코딩 작업은 혼자서만 하는 경우는 드물다. 그렇다면 pair programming을 하게 될 때, 어떻게 pair와 remote repo를 연결하여 작업을 진행해야할까?

pair programming을 진행할 때 github의 repo에서 fork를 한 후 각자 got clone을 한다. 여기서 pair의 repo를 연결하여 remote repo에 연결해야 한다. 즉 git remote add pair URL(해당 pair의 repo 주소)를 입력하여 연결한다.
git remote -v
를 입력하면 pair repo와 연결되어있는지 알 수 있다.
그리고 우선 작업한 사람이 git add, git commit, git push orgin master로 자신의 repo에 넘긴다. 그럼녀 pair는 git pair master를 통해 작업물을 pull 한다. 그리고 이 작업을 반복하며 프로젝트를 진행한다(pair programming).
conflict
pair programming을 진행하다 보면 내가 작업한 코딩에 pair의 작업물을 git pull하는 과정에서 conflict가 발생할 수 있다. 이를 해결하기 위해서는 mrege가 필요하다.
conflict가 발생하였을 때, code . 를 통해 vscode를 실행하면
<<<<<<<<HEAD (current change)
//나의 현재 작업물
======
//git pull한 작업물
>>>>>>>> (incomming change)
형태로 나타난다.
HEAD 위에는 Accept Current Change / Accept Incomming Change / Accept Both Change / Compare Change가 나타난다.
Accept Current Change를 누르게 되면 //나의 현재 작업물 만 merge 하게 되고
Accept Incomming Change를 누르게 되면 // git pull한 작업물 을 merge 하게 된다.
Accept Both Change를 누르면 두개의 작업물 모두 merge 하게 된다.
merge 한 이후 다시 git add, git commit, git push를 하게 되면 정상적으로 remote repo에 넘어가 문제를 해결하게 된다.
'Big Dreamer_Developer > Git' 카테고리의 다른 글
| ignore_추가하면 안되는 폴더와 파일들 (0) | 2021.06.27 |
|---|---|
| 로컬파일들을 추가하기_add (0) | 2021.06.27 |
| 깃을 초기화 하고 삭제하기(터미널에서 Git 이용하기) (0) | 2021.06.26 |
| git 사용자 설정 및 필요한 셋팅들 (0) | 2021.06.26 |
| 터미널(cmder)을 이용한 Git 설치유무 확인하기 (0) | 2021.06.26 |