C 스터디 2주차 🖥️

C언어 스터디 커리큘럼의 경우, C언어 과제 제출 시 GitHub가 사용됨에 따라 약 4주간 Git 스터디를 선행합니다.

branch

git에서는 개발자들이 효율적으로 협업을 할 수 있도록 별도로 작업하여 합칠 수 있도록 branch와 merge라는 기능을 제공한다.

  • branch: 독립적인 작업을 할 수 있는 공간
  • merge: branch를 합치는 작업
branch_merge


위의 그림을 보면 보다 명시적으로 구조 분석이 가능하다.
개리가 개발하던 ‘개리3’ 이후 빙키 계정에서 추가적인 기능을 구현하고 싶을 때, 빙키는 git에서 pull을 받아와 그동안의 작업물을 빙키의 local에 다운로드 한다.
나중에 빙키가 ‘빙키4’라는 기능을 구현하여 자신의 브랜치에 업로드하면 merge할 준비가 완료된다.

before_merge after_merge


다음은 merge이다.
GitHub에서는 기본 브랜치로 main 브랜치를 사용한다. 기능 개발이 완료되면, 기능 개발을 구현한 브랜치를 main 브랜치에 merge한다.
좌측 그림이 Feature 개발이 완료되고 기능 branch에 push를 한 그림이며, 우측 그림이 Feature 브랜치를 main 브랜치에 merge한 것이다.

branch 실습

브랜치 실습 브랜치 실습 브랜치 실습 브랜치 실습 브랜치 실습 브랜치 실습


fork와 pull request

개발자가 레포지토리에 권한이 없지만, 해당 레포지토리를 업데이트하고 싶을 경우 fork라는 기능을 사용한다.
특정 레포지토리를 fork하여 내 레포지토리에 복사한 후, commit과 push를 통해 내 레포지토리에서 업데이트한다. 이후, pull request를 날린다.

fork & pr 실습

pr의 경우 해당 화면까지 접근만 했습니다.

포크실습 포크실습 포크실습

포크실습

그 외 명령어

  1. amend
    • 기존의 commit에 누락된 파일이나 수정된 파일을 추가할 때 사용
    • commit은 기능 단위로 이루어지기 때문에 누락/수정 사항을 관리 시에는 ammend를 사용하는 것이 좋다.
  2. stash
    • 현재 브랜치에서 아직 commit을 하지 못한 파일들이 존재하는데 다른 브랜치로 넘어가야 하는 경우 현재 브랜치의 변경사항을 잠시 보관하기 위해 사용
    • tracked 파일과 untracked 파일 모두 stash가 가능하다.
    • 여러 모드가 존재한다.
  3. reset
    • 브랜치에 여러가지 버전을 올린 후 이전 커밋으로 브랜치를 되돌릴 때 사용
    • 트리가 꼬일 수 있으니 여러 명이 사용하는 브랜치에서는 사용 금지
    • 이미 push된 커밋을 되돌리고 싶은 경우는 revert 사용
  4. revert
    • 기존의 히스토리를 남겨둔 상태로 새로운 커밋 히스토리를 추가하는 방식
    • 특정 커밋 히스토리를 되돌리는 작업 또한 하나의 커밋으로 간주한다.

      revet: 히스토리를 보존한 채로 지정한 커밋의 내용으로 새로운 커밋을 생성
      reset: 지정한 커밋 이후의 히스토리를 초기화 하며 이동 > 충돌 발생

  5. cherry-pick
    • 여러 개의 커밋 중에서 원하는 커밋만 가져와 현재 브랜치에 붙일 때 사용

그 외의 명령어 실습

명령어실습 명령어실습 명령어실습 명령어실습 명령어실습


Updated: