ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [GIT] Git Source Tree 입문
    WEB/Git 2020. 5. 10. 23:01

    git 이란?

    형상 관리 시스템(Version Control System)의 한 종류, 주로 개발자들이 프로그램과 관련된 파일들을 저장하는 데 사용합니다. 게임의 세이브 포인트와 유사하며, 언제든지 저장 시점으로 되돌아 갈 수 있습니다.

     

    커밋(commit)

    게임의 세이브에 해당하는 행동을 git에서는 커밋이라고 합니다. 사용자는 언제든지 커밋한 시점으로 되돌아 갈 수 있습니다. 커밋을 하려면 저장을 원하는 파일을 묶어서 커밋 명령을 수행하면 됩니다.

     

    스테이지에 올리기(add)

    앞에서 커밋하기 전에 저장을 원하는 파일들을 묶는 일을 해야 하는데 이 작업을 '스테이지에 파일을 올린다.' 라고 합니다. 혹은 줄여서 'add' 라고 표현합니다.

     

    github에 업로드(push)

    커밋을 하면 현재 작업 내용의 세이브 데이터가 내 컴퓨터에 저장됩니다.

    이걸 github에 업로드하면 마치 요즘 유행하는 스팀이나 PS4, 각종 모바일 게임의 원격 저장과 비슷한 일을 합니다. 다른 사람이랑 공유할 수도 있고 내 컴퓨터의 데이터가 날아가도 안전하게 다시 복구할 수 있습니다.

    github에 업로드 하는 걸 git에서는 'push'라고 합니다.

     

    커밋 주의사항

    1. 1. 반드시 한 번에 하나의 논리적 작업만을 커밋합니다.
    2. 2. 커밋 메세지를 잘 적어야 합니다. 

    ※ 커밋 메세지는 미래의 자신과 다른 개발자들을 위해서 꼼꼼히 적어야 합니다!

     

    커밋 메세지 작성법

    1. 1. 첫줄에 간단하지만 명확하게 내용을 작성합니다.
    2. 2. 한 줄 비우고
    3. 3. 자세한 내용을 다음 줄에 작성합니다.

    커밋하지 않은 변경 내용 취소(checkout)

    'checkout' 명령어를 통해 마지막 세이브로 돌아갈 수 있습니다.

    SourceTree에서는 discard를 통해 마지막 커밋 상태로 돌아갈 수 있음

     

    커밋한 파일의 변경 내용 취소(reset)

    리셋을 원하는 브랜치를 클릭 후 오른쪽 마우스 - Reset current branch to this commit

    - soft reset : keep all local changes

    - mixed reset : keep working copy but reset index

    - hard reset : discarding all working copy changes

     

    선택한 버전을 취소하고 이전 버전으로 올리기(revert)

    리셋을 원하는 브랜치를 클릭 후 오른쪽 마우스 - Reverse commit...

     

    ※ 리버트를 원하는 브랜치까지 순차적으로 리버트 해줘야한다. (안그러면 conflict 발생)

     

    브랜치(branch)

    가상의 작업 환경, 기능 변경을 하고 싶을 때 생성 및 사용

     

    마스터 브랜치(master branch)

    사람들과 공유하고 싶은 최종 결과물이 있어야 하는 곳

     

    ※ 브랜치를 새로 생성하면 기존의 마스터 브랜치의 내용은 그대로 보존하면서 새로운 작업 환경을 생성하는 것 이라고 생각하면 됩니다.

     

    병합(merge)

    한 브랜치의 내용을 다른 브랜치와 합치는 것을 병합(merge)라고 합니다. 현재 브랜치를 헤드 브랜치라고 합니다. 만약에 헤드 브랜치가 master이고 version2 브랜치를 병합하면 version2의 내용이 master에 반영됩니다.

     

    ex) 마스터를 해드 브랜치를 둔 상태에서 version2 브랜치를 오른쪽 마우스 - 'Merge version2 into current branch'

     

    병합시 발생 상황

    상황 1 : 헤드 브랜치에 변경 사항이 없는 경우

    - 합치려는 브랜치가 헤드 브랜치로부터 시작되었다.

    - 그 사이 헤드 브랜치에는 전혀 갱신이 없었다.

    - 가장 쉬운 상황이며, 주로 혼자 작업할 때 발생하는 상황

    - fast-forward

     

    상황 2 : 가지가 생겨난 경우

    - 과거의 커밋으로부터 브랜치를 생성해서 작업을 한 경우

    - 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우

    - 여러 브랜치를 동시에 작업하면서 병합을 시도할 경

     

    병합 해결 방법

    1. 수작업
    2. Resolve conflicts - Resolve using Mine Resolve using Theirs
    3. Resolve conflicts - Resolve using Theirs

     

    병합 해결 후

    Uncommitted changes 오른쪽 마우스 -  Resolve conflicts - Mark resolved 과정을 통해 Git에게 충돌이 해결됐다는 것을 알린다.

     

     

    'WEB > Git' 카테고리의 다른 글

    [GIT] Github Repository와 GitBash 연결하기  (0) 2020.08.08

    댓글

Designed by Tistory.