ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Git] Git 이론 익히기
    Git 2024. 6. 5. 23:23

    1. Git이란?

    • Git은 소스 코드를 관리하기 위한 분산 버전 제어 시스템
    • 버전 제어 시스템이란 사용자가 파일을 수정할 때 변경 사항을 기록하고 저장하므로 언제든지 이전 버전의 작업을 복원할 수 있는 시스템

    1-1. Git 구성 요소

    • 작업 트리
      • 작업 중인 파일로 구성됨
      • 수정 할 수 있는 파일 시스템
    • 인덱스
      • 스테이징 영역으로도 불림
      • 커밋이 준비되는 곳
    • 저장소
      • 프로젝트 파일의 모든 변경 사항을 추적하는 “컨테이너”
      • 팀이 만든 모든 커밋 보관
       

    1-2. 기본 Git 워크플로

    1. 작업 트리에서 파일을 수정
    2. 다음 커밋에 포함하려는 변경 사항을 준비합니다.
    3. 변경 사항을 커밋합니다. (커밋하면 인덱스에서 파일을 가져와 저장소에 스냅샷으로 저장합니다.)

     

     

    2. 저장소

    • 저장소는 코드를 저장하기 위해 중앙에 위치한 폴더
    • 파일과 디렉터리가 포함된 Git 저장소가 있으면 변경 사항 및 버전 추적을 시작할 수 있음

    2-1. 원격 저장소 대 로컬 저장소

    • 로컬 저장소는 개별 사용자를 위해 로컬 컴퓨터에서 호스팅 됨
      • 호스팅이란 서버 컴퓨터 전체 또는 일정 공간을 이용할 수 있도록 임대해 주는 서비스
    • 원격 저장소는 인터넷, 외부 서버, 다른 경로에 있는 동일한 시스템에서 호스팅되고 여러 팀 구성원 간에 공유됨

    2-2. 저장소 생성

    • 새 저장소: GIt init 명령을 사용하여 처음부터 새 저장소 생성
    • 복사된 저장소: Git clone 명령을 사용하여 원격 저장소를 로컬 시스템에 복사할 수 있음

     

     

    3. 변경 사항 기록

    • Git은 모든 변경 사항을 자동으로 기록하지 않으므로 인덱스에서 해당 변경 사항을 준비하여 기록하려는 변경 사항을 Git에 알려야 함
    • 스테이징 후 해당 변경 사항을 커밋하여 저장소에 기록할 수 있음

    3-1. 변경하기

    • 작업 트리에서 변경(파일 편집, 새파일 추가, 불필요한 파일 제거)
    • 작업 트리의 변경 사항은 저장소와 작업 트리 사이에 있는 인덱스에 수정된 것으로 기록되지만 저장소에 직접 저장되지는 않음
    • 모든 변경 사항은 먼저 인덱스에 스테이징된 다음 저장소에 저장
    • 인덱스의 변경 사항만 저장소에 커밋됨

    →인덱스 거쳐서 변경사항 반영됨

    3-2. 변경 사항 커밋

    • Git commit 명령을 사용하면 저장소의 Git 기록에 파일 변경 사항을 기록할 수 있음
    • 커밋한 모든 변경 사항은 각 파일 또는 디렉터리에서 시간순으로 확인 가능

    3-3. Git commit 메시지

    • 커밋을 진행할 때 메시지를 입력해야 하는데, 변경 사항을 간결하고 정확하게 설명해야 한다.

     

     

    4. 변경 취소

    • git에서는 실수를 취소할 수 있음
    • 새 커밋을 만들때 프로젝트의 스냅샷을 저장하므로 필요할 때 이전 버전으로 돌아갈 수 있음
    • 주요 방법: git revert, gir reset

    4-1. 커밋 취소

    • Git revert : 이전 커밋 취소
      • revert 명령은 이전 커밋의 변경 사항을 되돌리는 새 커밋을 만듦
      • 커밋을 제거하거나 저장소 기록을 수정하지 않아도 되므로 기록이 보존됨

    4-2. 커밋 제거

    • Git reset : HEAD가 이전 커밋을 가리키도록 함
      • 재설정 모드로 전환하여 재설정 명령의 범위 지정
       

    4-3. 재설정 모드

    • 혼합 (기본) 모드는 변경된 인덱스의 상태를 복원합니다.
    • 소프트 모드는 이전 커밋을 취소합니다.
    • 하드 모드는 커밋의 모든 흔적을 제거합니다.

     

     

     

    5. 저장소 동기화

    • 어디에서 호스팅을 하든 다른 팀 구성원과 변경 사항을 공유하려면 로컬 저장소를 원격 저장소와 자주 동기화해야 함
    • Git push, git pull, git merge

    5-1. 변경 사항 푸시

    • 변경 사항을 다른 사람과 공유하려면 git push을 사용하여 원격 저장소에 푸시
    • 이렇게 하면 원격 저장소가 업데이트 되고 로컬 저장소와 동기화 됨

    5-2. 변경 사항 풀링

    • 누군가 공유 원격 저장소에 변경 사항을 푸시할 때마다 로컬 저장소가 구식이 됨
    • 로컬 저장소를 새로 업데이트된 원격 저장소와 다시 동기화하려면 git pull 실행
    • 풀 명령이 실행되면 원격 저장소에서 최신 개정 기록을 다운로드하고 로컬 저장소로 가져옴

    5-3. 변경 사항 병합

    • 로컬 저장소가 오랜된 경우 원격 저장소에 대한 푸시가 거부됨
    • 이 경우 푸시하기 전 git merge를 사용해 원격 브랜치의 로컬 복사본에서 최신 변경 사항을 통합해야 함

    5-4. 병합 충돌 해결

    • 병합을 제대로 완료하기 전에 해결해야 하는 충돌이 발생할 수 있음
    • 이런 일이 발생하면 Git은 충돌 파일에 충돌 해결 마커를 추가함
    • 마커는 수동으로 해결해야 하는 파일 섹션을 파악하는 데 도움이 됨

     

     

     

    6. Git 기록 관리

    6-1. 커밋 수정

    • Git commit —amend
      • 동일한 브랜치에서 가장 최근 커밋 수정
      • 새 파일이나 업데이트된 파일을 이전 커밋에 추가하는 데 용이함
      • 이전 커밋에 커밋 메시지를 편집하거나 추가하는 간단한 방법
       

    6-2. 새 브랜치에 커밋 복사

    • Git rebase 을 실행하고 “-i” 옵션을 추가해 기록에서 개별 커밋을 다시 작성, 교체, 삭제, 병합
      • 과거 커밋 메시지 다시 쓰기
      • 커밋 그룹을 함께 스쿼시
      • 커밋되지 않은 파일 추가
       

    6-3. 다른 브랜치에 커밋 복사

    • git cherry-pick
      • 잘못된 브랜치에서 올바른 브랜치로 커밋을 이동합니다.
      • 다른 브랜치의 기존 커밋을 기반으로 현재 브랜치에 커밋을 추가합니다.
       

    6-4. 커밋 병합

    • git merge —squash
      • 새 커밋이 브랜치의 모든 커밋을 함께 그룹화하여 해당 커밋이 현재 브랜치에 병합됨
       

     

     

     

     

    참고사이트

    https://nulab.com/learn/

     

    Learn | Nulab

    Learn with Nulab. Our guides, how-tos, & content series offer tips to improve business management, career advancement, productivity, communication, & more.

    nulab.com

     

     

    리뷰

     - 부트캠프 초반에 아래와 같이 배운내용을 글자 그대로 암기하듯이 받아들이기만 한 점이 학습하면서 아쉬웠다.

     - 작은 프로젝트들을 진행하며 clone, push할 일들이 있었는데 정확한 이해가 부족한 채로 같은 방식만 반복해서 git을 활용했던 것 같다.

    나중엔 최종 프로젝트를 진행하며 팀원과 git을 활용할 기회가 있었는데 이때에도 merge, 브랜치 정도만 알아둔채로 얼렁뚱땅 진행한 부분이 있었다고 느껴 시간이 남을 때, git 공부를 해두어야겠다고 다짐하였다.

    - 더군다나 개발자로서 현업에서 일한다면 반드시 미리 알아두어야겠다는 생각이 들어 기본적인 개념부터 학습을 시작하였다.

    - 한두번 정도 시간이 남을 때 강사님이 git에 관련된 어려운 문서를 제공해주신 적이 있는데 오히려 그런 자료를 보며 막연히 git에 대한 두렴이 커지기도 하였다.

    - 하지만 이렇게 기초부터 차근히 공부하니 충분히 할 수 있겠다는 자신감이 생긴다.

    - 백문이 불여일견이라고, 내일은 이론공부를 바탕으로 직접 이거저거 쳐보며 손과 뇌에 제대로 각인시켜야겠다.

     


     1.  작성
    git touch a.txt

     2. 시작
    git init

     3. 상태 확인(?)
    git config —global -l

     4. 커밋 하기 (파일명 활용하여 개별적으로)
    git add 파일명

     5. 커밋명 작성
    git commit -m “커밋명”

     6.푸쉬하기 git remote add origin 링크
        git remote -v
        git push -u origin master

    •  
Designed by Tistory.