Git ①

minkyung·2022년 5월 7일
0

항해99

목록 보기
1/2
post-thumbnail

[수업목표]

  1. 나 혼자 사용할 수 있는 Git 프로젝트를 만들어 본다 - commit, pull, push
  2. 프로그래밍을 배울 때 마음가짐을 탑재한다.

01. Git 수업에서는 무얼 배우나요?

  • 배운 내용을 맘껏 실험하면 빠르게 배울 수 있음.
  • 에러나는 거 무서워하지 말기. 고치면 됨.
  • 모르면 구글링하면 됨

맨 처음 프로그래밍 학습하는 사람을 위한 tip >


  • 에러 났으면 오답노트처럼 메모해두기
  1. 어떤 행동을 했을 때 에러가 발생했는지
  2. 에러를 해결하기 위해서 어떤 시도를 했는지. 에러가 해결되지 않았더라도 다 적어보세요. 어떤 해결방법이 유효한지 그렇지 않은지 판단하는 눈을 기르는 데 도움이 됩니다.
  3. 해결은 어떻게 했는지

에러 노트 적는 방법 참고 >


  • 질문 시 포함시켜야하는 내용
  1. 에러 정보 (에러 메시지, 에러가 발생한 화면)
  2. 내가 어떤 작업을 시도해봤는지, 참고한 자료가 있다면 무엇인지
    예시) pull 할 때 아래 같은 메시지가 뜨면서 되지 않아요. push 를 누른 다음에 pull 을 하지 않아서 일까요?
    고치기 위해서 이걸 따라해봤어요.

질문 잘하는 법 >


  • 1주차 ~ 3주차까지 배울 것
  1. 기초 Git 사용법을 배워서 프로젝트를 위해 Git 을 바로 사용 할 수 있음.
    ✏️ 핵심 키워드 : 버전 관리, commit, pull, push

  2. 협업하기 위한 기초 개념을 배웁니다.
    ✏️ 핵심 키워드 : Issue branch, merge

  3. Github 으로 만날 수 있는 새로운 세계
    내가 더 좋은 코드를 만들고 싶을 때 다른 코드를 어떻게 참고할 수 있는지, 요즘 사람들이 즐겨쓰는 기술은 무엇인지, 내 github 페이지를 잘 관리하면 내가 어떤 작업을 했는지 알려주는 포트폴리오 처럼 사용할 수도 있답니다!


02. 필수 프로그램 설치

  • Homebrew 설치
  1. terminal에 아래 명령어 복붙

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

  2. brew install git 입력

    ==> Next steps: 참고해서 아래 명령어 2줄 각각 실행후 'brew install git' 실행
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<USER_ID>/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"

  1. git version 확인
  • sourcetree 설치
  1. 설치
  2. 토큰(접근권한 비밀번호) 세팅
    github > tokens 링크

    Note(token이름) : sourcetree
    체크해야할 항목 : repo , workflow, admin:org, admin:public_key, gist, user, delete_repo

    생성된 토큰 복사,
    sourcetree 실행 후 설정 > 계정 > 연결 > 암호에 붙여넣기
    다른 설정은 아래 이미지와 같음

    계정 연결 되면 끝 ~

애플 실리콘 M1 용 Homebrew 설치 >


03. Git 은 뭐고, Github 은 무엇인가요?

  • 실습영상 (pc 폴더 내 txt 파일 만들고, sourcetree와 연결하기)
    txt파일 변경 시 업데이트 됨
    -> 커밋하면 히스토리에서 어떤 상태에서 어떤 상태로 변했는지 확인 가능

  • Git으로 할 수 있는 것

  1. 버전 관리 (히스토리 한눈에 볼 수 있음)
  2. 작업 단위 나누기 (에러파악 쉽게 가능)
  3. 협업해서 프로젝트 만들기 (덮어쓰기 방지, 각각 파일의 차이를 자동 비교)

👉 Git 으로 모든 파일의 내용이 자동 비교가 되나요?
기본 설정으로는 코드(Python, HTML, JavaScript, Java,...) text 파일, markdown파일(text 파일의 일종), CSV 파일 등 이 가능합니다!
이미지 파일, Word 파일, PDF 파일, 엑셀 파일은 여러가지 설정을 해주어야 가능하답니다. 기본 설정으로 이런 파일들은 파일의 크기가 변했구나! 만 알 수 있어요~

  • Github으로 할 수 있는 것
  1. 인터넷으로 연결되어 있는 프로젝트 저장소
    git: 본인 컴퓨터에 쓰는 버전 관리하는 도구라고 친다면 github: 원격으로 올릴 수 있는 클라우드 (개발해야할 기능들 관리 가능)
  2. 개발자들의 커뮤니티 (토론 가능)
  • Sourcetree
    git을 쉽게 사용할 수 있는 도구

git과 github 결합해서 사용함. git이 아니더라도 협업 도구는 필수적으로 사용함.
버그리포트를 받는 용으로 사용할 수도 있음.


  • commit: 작업내역 단위

  • commit 당 작업내역 보기

  • issues 탭 (개발해야하는 투두리스트 관리)

  • github으로 프로젝트 관리하면 url로만 해당 내용들을 공유할 수 있음. 포트폴리오로도 사용 가능하다는게 그 점 때문임.

04. 버전관리와 commit - 개념탑재

기존에는 버전마다 파일을 만들어서 관리했음. 근데 깃은 '파일 지금 이 상태임' 이라고 커밋 해주면됨. 커밋에는 누가, 언제, 현재 프로젝트 상태 어떤지 세가지 내용 포함해서 작업 내역 관리함.

'스냅샷'으로 현재 프로젝트 상태를 포착하는 것임.

예시 ( 대한민국 헌법 개정 )
어떤 부분이 바뀌었는지 직관적으로 볼 수 있음.

Git 에서는 '누가, 언제, 현재 프로젝트의 상태가 어떤지(현재 파일 내용들)' 세 가지 정보를 포함해 작업내역을 관리합니다. 이렇게 현재 프로젝트 상태를 저장한 것을 commit(커밋) 이라고 표현해요.
commit 을 하는 순간 현재 프로젝트의 파일 내용, 언제, 누가 저장했는지 정보가 남습니다. 이전 commit 의 프로젝트 상태와 현재 프로젝트 상태의 차이를 자동으로 알려줍니다.

05. 버전관리와 commit - 실습 01

  1. 프로젝트 만들기

    프로그래밍할 때 파일/폴더명은
    1. 영어로, 특수문자 없이(띄어쓰기도 안돼요!) 만들어주세요. 단어를 연결할 때는 - 나 _ 둘 중 하나를 사용하도록 합시다! 컴퓨터가 다른 문자가 섞이면 잘 못 알아들을 수 있어요.
    2. 내용(데이터)를 제대로 나타내주는 이름을 지어주세요!
    파일/폴더에 담긴 내용은 곧 데이터입니다. 데이터를 제대로 관리하는 첫 걸음은 제대로 이름 붙여주는 것이에요. (예. 11111.txt 🙅 / project_list.txt, commit_practice.py 🙆‍♀️ )
    예를 들면, 프로젝트 이름을 git-tutorial, taco-recipe, constitution-of-republic-of-korea 로 짓는 것처럼요!

  2. 만든 프로젝트를 깃이 관리하는 폴더로 만들기

    컴퓨터에 있는 프로젝트를 Git 이 관리하는 프로젝트로 만들 수 있습니다. 앞으로 Git 으로 관리할꺼야! 하고 설정해주면 됩니다. 이 작업을 git 초기화(git initialize)한다고 표현합니다.

  3. 깃 프로젝트 없애는 방법 (에러 발생 시)
    우클릭 - 삭제 - 휴지통으로 이동 (pc에서 사라짐) / 북마크에서 제거 (소스트리에서만 사라짐)
    깃이 문제임 -> .git 폴더만 삭제

  4. 첫 커밋하기

  5. 커밋 한번 더 하기

    아까는 됐는데 지금은 안되네? -> 깃을 사용해서 아까로 되돌릴 수 있음

06. 버전관리와 commit - 실습 02

김치볶음밥 요리법, 김치찌개 요리법, 김치전 요리법 업데이트 한번에 커밋
-> 실제로 업데이트 할 때는 기능별로 나누어서 각각 커밋해야 추척, 관리 편함

김치볶음밥만 업데이트
-> 커밋 한번에 했어도, 변경한 파일만 캐치해서 작업 내역 커밋하게 함

김치볶음밥, 찌개 업데이트
-> 김치볶음밥만 애드(스테이징, 체크박스 체크하는 것) - 커밋 가능

깃 = 협업하기 위한 도구. 원래 목적이 잘 협업하기 위한 것, 다른 사람도 잘 이해할 수 있게 관리해야함

07. 버전관리와 commit - 정리

  • [👩‍🍳 배웠으면 써먹자] - 개념 적어보기
  1. 버전관리를 한다는 건 어떤 의미일까?

    파일 하나 가지고도 작업 내역을 확인할 수 있다는 것.
    작성자, 업데이트 내용, 어쩌구 세 개 항목 포함해서 커밋하면 작업 버전별로 관리할 수 있음.

    -- 버전관리를 한다는 것은 프로젝트 상태가 변경되는 정보를 알고 있다는 것입니다. Git 은 commit 을 사용해서 버전이 달라지는 것을 관리합니다.
    -- 컴퓨터에 있는 프로젝트를 Git 이 관리하는 프로젝트로 만들 수 있습니다. 앞으로 Git 으로 관리할꺼야! 하고 설정해주면 됩니다. 이 작업을 git 초기화(git initialize)한다고 표현합니다.

  2. 작업내역 단위인 commit 에는 어떤 정보가 포함되어 있어야 잘 버전관리를 할 수 있을까?

    작성자, 업데이트 내용, 날짜?

    -- 현재 프로젝트의 상태를 찰칵 📸 저장하는 것을 commit 이라고 합니다.
    -- commit 에는 아래를 포함합니다.
    -- 누가(author), 언제 commit 했는지의 정보와 프로젝트 변경 내용
    -- 작업내역이 어떤 것인지 알아볼 수 있게 적는 메시지를 'commit 메시지'라고 합니다.
    -- commit 에 반영할지 안할지는 파일 단위로 선택할 수 있습니다. commit 에 반영할 파일을 선택하는 것을 add (혹은 staging, 스테이징) 이라고 합니다.
    -- commit 한 기록은 history 로 볼 수 있습니다.

  3. 지금까지 우리가 실습은 어떤 순서로 했었지?

    폴더 만들고 간단한 txt 파일 만들고 소스트리(깃 계정연결된)에 연결
    txt 업데이트하고 소스트리에서 확인 후 커밋

    -- 지금까지 우리가 한 작업은 'git 초기화하기(initialize) - add(staging) - commit' 입니다.
    -- git 초기화는 처음에 단 한번만 해 주면 됩니다. 작업 내역을 저장하기 위해서는 add - commit 만 하면 됩니다.

  • [👩‍🍳 배웠으면 써먹자] - commit 혼자 해보기
    Q. 아까 commit 하지 않은 김치찌개 요리법 파일 jjigae.txt 를 commit 해보세요.

08. 원격 repo 사용하기 - 개념탑재

로컬 repo
Remote repo (원격 리포)

원격리포와 로컬 리포를 같이 사용한다는 것은? -> 클라우드 서비스 사용하는 것과 비슷함

내 컴퓨터 깃에 저장된 리포를 저 깃헙 원격 리포에도 저장할 수 있음

로컬 리포 기준으로 동작함
(로컬 리포에는 어떤 원격 리포에 연결되어있는지 정보가 포함되어 있지만 원격리포에는 그런 정보 없음.)

커밋 작업 내역을 자동으로 저장하지 않음.
원하는 만큼 반영하기 위해서 원격리포에 반영하는 것은 수동으로 반영하게 되어있음.

원격리포 하나에 여러개 로컬 리포 연결되어 있을 수 있음


원격 리포를 아무것도 없는 피씨에 클론(일종의 초기 다운로드)할 수 있음

09. 원격 repo 사용하기 - 실습

원격 repo 만듬 > https://github.com/sparrowscout/kimchi-recipe
프로젝트 이름은 통일하는게 좋음


키체인에서 git-credential-osxkeychain이(가) ‘github.com’에 저장된 비밀 정보를 사용하려고 합니다.
‘git-credential-osxkeychain’의 인증을 확인할 수 없습니다. 이를 허용하려면, ‘로그인’ 키체인 암호를 입력하십시오.

자꾸 이런 입력창이 떠서 죽는 줄 알았음 ...
[Sourcetree] git-credential-osxkeychain
링크 따라서 했더니 됨. 키체인 삭제해도 안됐고 마지막 $git config --global credential.helper osxkeychain 명령어 치고 push 했더니 됨 ... 키체인 암호 지금도 모르겠음 대체

  • 원격 리포에서 수정 & 커밋 -> 로컬 리포에는 자동 업데이트 안됨 -> pull -> 로컬 폴더에서도 내용 수정됨

  • 원격 리포 깃헙에서 없애는 방법 (에러 시 참고)
    리포 -> 세팅 -> Options -> Dangerzone -> Delete this repository
    삭제하고나면 복원 불가능함

  • 컨플릭트(충돌) 예방
    혼자 깃프로젝트 작업할 때는 pull -> 로컬 repo commit -> push 순서로 하면 좋음

  • 충돌을 피하기 위해서는 아래 순서를 따라주는 게 편해요. 같은 파일을 동시에 수정해버리면 충돌이 나니까 두 repo 의 상태를 똑같이 맞춰준 후에 변경작업을 해주는 거에요.
    1. 원격 repo 와 로컬 repo 의 상태를 똑같이 맞춰주기, 즉 로컬 repo 에 원격 repo 작업내역 가져오기 (pull)
    2. 로컬 repo 의 작업 내용을 저장하고 (commit)
    3. 원격 repo 에 로컬 repo 내용을 반영 (push)

  • 원격 repo 에 변경사항이 생겼다! 하면 먼저 pull 하고 로컬 repo 에서 작업하면 많은 경우 충돌을 피할 수 있어요.

  • clone
    새 프로젝트 세팅 시

    소스트리 -> 새로만들기 -> url -> 원본 url 에 붙여넣기

10. 원격 repo 사용하기 - 정리

  1. 원격 repo 와 로컬 repo 를 연결해서 내용을 반영하고 싶을 땐 어떤 방법을 써야할까?

    Pull -> commit -> push 순서로

    -- 로컬 repo 가 없고 원격 repo 에 있는 내용을 가져오고 싶을 때는 clone 한다.
    -- 원격 repo 와 로컬 repo 둘 다 있고 두 개를 연결하고 싶을 때는 로컬 repo 가 원격 repo를 tracking 하도록 설정한다.

  2. 원격 repo 와 로컬 repo 는 왜 따로 있을까?

    협업 + 백업?

    협업할 때, 혹은 여러 컴퓨터를 사용한다면 하나의 원격 repo 에 여러 로컬 repo 를 연결시킬 수 있다. 하나의 프로젝트를 동시에 작업하는게 가능해진다.

  3. push 와 pull 의 개념을 원격 repo와 로컬 repo 를 포함해 그림으로 그려보세요.

    로컬에서 원격으로 가는게 push, 원격에서 로컬로 땡겨오는게 pull

11. 1주차 배운 개념 지도 그리기

12. 1주차 끝 & 숙제 설명

Today I Learned

https://github.com/sparrowscout/til


profile
프론트엔드 개발자

0개의 댓글