Git Tutorial


Git

  • VCS(Version Control System) : 형상 관리 도구 or 버전 관리 시스템. 이를 사용하면 변경을 쉽게 되돌릴 수 있다. 소스코드를 과거의 특정 시점으로 되돌리거나, 특정 시점의 변경 사항을 취소하거나, 두 버전의 소스 코드를 비교하는 등의 일이 가능하다.

  • git : VCS의 한 종류. 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어. 분산형(소스코드를 여러 개발 PC와 저장소에 분산해서 저장)

Branch

  • Working Tree : 리포지터리의 어느 한 시점을 바라보는 작업자의 현재 시점.

  • Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 리포지터리에 저장하는 작업.

  • Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치.

  • Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다. 필요에 의해 만들어지는 각각의 branch는 다른 branch의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행 가능

  • Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.

  • Conflict : master와 branch를 merge 할 때 중복된 부분이 있을 때 발생

[Conflict 최소화 방법] 마스터를 브랜치에 주기적으로 병합하면 추후 방대한 변화를 저장하지 않아도 된다.

1 Conflict 발생 예시
 2 <<<<<<< Master      # 현재 checkout 한 브랜치의 상태
 3 Mater 소스 코드
 4 =======             # 구분자 ====================
 5 Branch 소스 코드
 6 >>>>>>> Branch         # 병합하려는 대상인 브랜치의 상태

Repository

  • github : git을 웹에 저장 가능. 협업하고 있는 코드를 저장할 서버가 필요 할 때 사용. VCS를 지원하는 웹호스팅 서비스의 기능을 통해, push, pull request같은 이벤트에 반응하여 자동으로 작업(배포 등)을 실행 가능.

  • ATOM : git 명령어를 다 외울 필요 없이 GUI(Graphical User Interface)를 통해 사용 가능한 툴. (깃허브에서 만든 텍스트 에디터)

  • Repository : 리포지터리는 히스토리, 태그, 소스의 branch에 따라 버전을 저장한다. 작업자가 변경한 모든 히스토리 확인 가능

Git

  • clone : 리모트 서버의 Repository에서 클라이언트로 파일을 복붙. 이때 클론을 수행하기 위해서는 어떤 리포지터리에서 파일을 가져올 것인지에 대한 정보가 필요한데, 이 정보는 위에서 설명했듯이 URL로 표현한다. HTTPS 프로토콜이나 SSH 프로토콜을 사용하여 소스를 클론할 수 있는데, 보통 HTTPS를 많이 사용한다.

  • pull : 리모트 서버의 최신 소스를 가져와서 로컬 소스에 Merge. 만약 처음 소스를 클론한 후에 다른 사람이 리모트 서버를 상태를 갱신했더라도 리모트 서버가 그 변경된 사항을 알려주지는 않기 때문에 직접 서버에 요청. 단순히 리모트 서버에서 로컬로 소스를 가져온다의 개념보다는 가져와서 합친다의 개념이기 때문에 브랜치끼리도 pull을 통해 소스를 합칠 수 있다. pull은 바로 리모트 서버의 최신 소스를 가져와서 내 로컬 소스에 합쳐버리기 때문에 조금 위험하할 수 있다. (예를 들면 지금 리모트 서버의 최신 소스가 버그가 있는 경우)

  • push : commit을 통해 포장된 변경 사항들은 push를 사용하여 리모트 서버로 업로드. 이때는 commit된 변경 사항들을 실제 리모트 서버에 전송하는 것이기 때문에 반드시 네트워크에 연결이 되어있어야 한다.

  • fetch : 리모트 서버의 최신 이력을 내 클라이언트로 가져오되 병합은 하지는 않음.

[협업 시 코드 적용 순서] pull -> 코드 작성 -> commit -> pull -> push

  • stash : 아직 마무리하지 않은 작업을 스택에 잠시 저장. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리 가능.





© 2020.11. by creamer

Powered by CREAMer