ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git 기본 개념
    Search: SwDevTool SwDevTool 2021. 3. 27. 20:01

     

    Git 특징

    소스 버전관리 도구.
    과거 수정 내용 확인.
    팀작업에서 서로 다른 수정이 발생했을 때 통합하거나 별도 분리 가능.

    Svn과 차이점.
    Svn은 Server와 Client의 구성이 Git보다 간단하여 직관적이다. 저장소가 하나만 있어 명확하다. 팀작업이 웬만큼 복잡한 경우가 아니면 사용하기에 문제 없다.
    Git은 Server와 Client의 구성이 Svn보다 복잡하고 표현이 좋지 못하다. 저장소가 하나가 아니다. 중간 저장소가 있어 각 단계별 처리를 해야한다. 처리 단계가 더 있기에 좀더 안전하지만 초기 이해가 잘 못된 상태로 사용하는 사람들도 많아서 역으로 문제와 비용을 증가 시킨다.

     

    기타 특징
    Svn은 중앙 집중, Git은 분산형. Git은 Client측인 Local에 별도의 저장소가 만들어져서 개인 혼자서 offline으로 commit을 해두거나 복구할 수 있다. 별도의 명령을 하기 전 까지 다른 사람이 수정해서 올린 Server측의 변경 사항을 알 수도 없다. 좀더 독립적이다.
    Branches. Svn은 특정 버전 시점의 복사볼 폴더로 볼 수 잇다. Git은 특정 개정판에 대한 포인터 일 뿐이므로 복사본, 새 디렉토리 및 오버 헤드 비용이 매우 낮다.
    Commit. 작업자는 Local에서 offline으로 모든 Commit을 누적해서 최종본을 스스로 확인 후 Server측에 올려 공유할 수 있다.

     

    관리 구조 

    [source] - [local/master] - [remote/master]  ~  [Server]

     

    Fetch

    Server에서 [remote/master]와 [source]로 가져오기 

    fetch, 원격 저장소의 데이터를 로컬에 가져오기만 한다. 병합 없음.

     

    Pull

    remote/master에 변경 내용을 [local/master]와 [source]로 가져오기 


    pull 을 실행하면, 원격 저장소의 내용을 가져와 자동으로 병합 작업을 실행하게 된다(원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에는 fetch 명령어를 사용).

     

    Commit

    Source에서 local/master로 일부 보내기. 

    Push

    local/master의 내용을 remote/master로 적용하기

     

    Rebase

    local/master와 remote/master간 결합, conflect발생됨. 


     

    충돌 상황 Ex

    User1,User2는 동일한 파일의 내용을 서로 다르게 수정


    User1:
     Commit
     Push 성공

    User2:
     Commit
     Push 시도 -> 실패
     Pull
     conflect발생.
     conflect발생한 것은 local/master와 remote/master간 선택하여 정리(Mask as resolved).
     Commit
     Push (실패시 Pull과Commit후 Push)

     

     

    충돌 상황 Ex2(old)

    User1,User2는 동일한 파일의 내용을 서로 다르게 수정


    User1:
     Commit
     Push 성공

    User2:
     Commit
     Fetch
     local/master와 remote/master간에 hash차이 확인 가능
     Rebase로 결합하며 conflect발생.
     conflect발생한 것은 local/master와 remote/master간 선택하여 정리(Mask as resolved).
     Commit
     Push

     

    'SwDevTool' 카테고리의 다른 글

    Github Project 비공개(Private)  (0) 2022.05.12
    Vsc Jupyter Notebook  (0) 2021.04.03
    구름Ide  (0) 2021.04.03
    Jupyter  (0) 2021.04.03
    Vsc에 Git-Scm GitHub  (0) 2021.03.27
    Vsc에서 C#(Csharp) 프로젝트 만들고 실행하기  (0) 2020.08.02
    Vsc, Visual Studio Code - Extensions  (2) 2020.08.01
    Vsc에서 C# Csharp 준비  (0) 2020.07.30

    댓글