📜 제목으로 보기

준의 git 강의

upstream

image-20220216104610592

  • 기본적으로 최초push에서는
    • local -> origin의 연결에 local에 대한 상대적 상류(upstream) -u로 명시해줘야한다.

    • -u--set-upstream으로 상대적인 상류를 표기한 것이다.

  • 일반적으로
    • origin에 대한 origin이 upstream이라고 별칭한다.
      • 미션repo(upstream) -> fork repo(origin) -> clone repo(local)
    • 최초 명시해준 것처럼 upstream은 downstream에 대해 상대적인 것이다.
  • 깃허브 초기 메세지 박스를 보면 -u가 있는데 상대적 상-하 관계를 설정하는 upstream설정을 요약한 단어다

    • 없으면 push가 안된다.
    • 내 local의 remote인 origin이라는 원천이라는 upstream으로 사용한다
      • 보통은 원천(origin)보다 위쪽(stream)은 없다.
      • 하지만, fork가운데origin이 생기면서, 원본 repo를별칭stream을 사용하게 된다.
      • 우테코의 경우, 미션repo를 fork해해서 origin보다 더 상위단계가 생기므로 upstream

    image-20220216105030785

    • 여러개의 downstream이 존재함을 안보이더라도 생각해야한다.
      • git clone시((origin <-> local)에는 origin을 알고 있기 때문에 자동으로 stream관계가 설정되어 push할 때 -u를 통한 upstream 설정은 안해도 된다.

–help명령어와 git 객체

  • 퀴즈1 image-20220216105638129

    O

    • git help메세지들을 잘 보자. image-20220216105744351

      • .git안에 깃 저장소를 초기화 했습니다.
      • ls -al 숨긴 파일, 폴더 보면 .git이 깃 저장소(로컬 저장소)가 보인다.

      image-20220216105853695

      • tree .git/으로 로컬저장소의 구조를 보면image-20220216105941160
    • 명령어 도움말은 명령어 + --help를 뒤에 달면된다. image-20220216110218535

  • 퀴즈2 image-20220216110227506

    • blob은 파일으로 생각하자.

    • 답은 5

      • branch는 commit객체에 대한 참조만 가지고 있다.

      image-20220216110335830

    • commit

      • 커밋 = 작업 디렉토리 스냅샷 = 세이브 포인트
      • 돌아가기 위한 포인트.. commit + push만 하지말자
      • 돌아가기 위한 정보를 어떻게 담고 있을까

      image-20220216110639929

    • add시 생성객체, commit시 생성객체를 나누었다.

      image-20220216110841734 image-20220216110908919

      • add하면, git이 a.txt를 관리대상으로 인식한다.
        • 아까는 없었던, indexobject가 추가 된다.

      image-20220216111032274

      • commit하면, tree(파일관련), commit(tree를 담고 있는)객체까지 만들어서 2개가 더 만들어진다.

      image-20220216111155902

    • 퀴즈3

      image-20220216111320270

      • git은 변경사항만 저장한다?
        • 흔한 오해 -> 파일을 통채로 저장한다!
        • 엄청 뒤로 갈 때, 변경사항만으로 추적? -> 연산 엄청 많아진다. 그냥 속도측면을 중요시해서 통채로 저장 = 객체로 관리
        • 원본 파일마다 tree객체를 가지고 있다. 통채로 저장해놓고, 그것들을 관리하기 위한 커밋이 가진다.
          • 마지막 commit상태의 blob을 본다.
          • 변경사항을 저장하는게 아니라서..