GIT 깃은 개발자들이 공동작업을 위해서 만든것으로 버전관리시스템, VCS 의 일종입니다.
깃을 일반적으로 사용할경우, 명령 프롬프트 창을 통해서 사용해야 하지만, 이를 쉽게 사용하기 위해 GitHub 를 사용하여 깃을 편하게 사용할 수 있습니다.
깃은 리포지토리(repository) 에 작업물을 저장하게 되는데, 개발자 개인의 리포지토리가 로컬 리포지토리가 되고,
로컬 리포지토리에 작업한것을 원격 리포지토리에 업로드하여 합치게 됩니다.
여기서 원격 리포지토리에 작업물을 업로드하는것을 Push 라고 합니다.
원격 리포지토리에 작업물을 올리게되면 각 개발자 개인의 로컬 리포지토리와 내용이 달라지고, 원격 리포지토리와 같도록 업데이트를 해주어야합니다.
업데이트를 위해 원격 리포지토리의 내용을 로컬 리포지토리에 받는것을 Pull 이라고 합니다.
Push | 로컬 -> 원격 업로드 |
Pull | 원격 -> 로컬 다운로드 |
다수의 개발자가 작업을 하다보면, 서로의 작업물간 충돌이 발생하는 경우도 생기게됩니다.
모두가 원본 파일에 작업을 하다보면 충돌 발생시 원본이 손상되어 이전으로 돌리기 어려운상황이 발생할수도 있습니다.
이를 방지하기위해서 각 개발자가 복제본을 만들어서 작업을 하고 원본과 병합한 후 Push 작업을 진행하게 됩니다.
이 복제본을 Brench, 가지라고 하며 병합하는것을 Merge 라고 합니다.
Merge 작업은 가지끼리도 가능하며, 가지끼리 병합하여 충돌이 없음을 확인하거나, 충돌 내용을 수정하고 해당 내용을 다시 원본에 병합하게 됩니다.
Brench | 가지, 원본의 복제본 |
Marge | 가지 병합 |
가지를 생성하면 이 가지를 원격 리포지토리에 등록할 필요가 있고, 이 작업을 Publish라고 하며, 타 이용자들은
Fetch Origin 을 통해 원격 리포지토리의 변경점을 받아올 수 있습니다.
Publish | 가지 등록, 새로운 내용 등록 |
Fetch Origin | 새로고침 |
로컬 리포지토리에서 작업을 한 뒤 Push 요청을 할 때 변경점을 볼 수 없으면 버전관리프로그램을 사용하는 이유가 없어지게 됩니다.
따라서 로컬 리포지토리에서 Push를 하기전, 변경점을 저장하는 작업이 필요하며 이를 Commit 이라고 합니다
Commit | 변경내용 저장 |
깃은 버전관리 프로그램인만큼 Undo, Redo 등의 되돌리기 기능, 이전 버전을 불러오는 기능등이 여러가지 존재하지만, 이번에 배운 내용들 위주로 정리하여 이정도로 마치겠습니다.