선발대

[스파르타] 협업을 위한 Git 활용 기초 1주차 (완강) 본문

스파르타코딩클럽/강의 정리

[스파르타] 협업을 위한 Git 활용 기초 1주차 (완강)

신선한 스타트 2021. 12. 27. 23:03

1. 수업 후기

 

  • 강의 개수: 12개
  • 총 강의시간: 2시간 22분
  • 수업 목표
  • 1. 나 혼자 사용할 수 있는 Git 프로젝트를 만들어 본다. - commit, pull, push
  • 2. 프로그래밍을 배울 때 마음가짐을 탑재한다.

 

드디어 Git 수업을 들었다. 맨 처음에 기존에 터미널을 이용해서 명령어를 하나씩 입력했을 때는 글씨들이 주르륵 나오는데도 내가 잘하고 있는지 감이 잘 안 잡혔다. 그래서 이번 수업에서 소스 트리를 이용해 간편하게 화면으로 보니 간편해서 곧 익숙해졌다. 강의에서는 맥 화면이 나와서 설치 프로그램 사용할 때는 강의 노트를 참고했는데 중간에 빠진 부분들이 있어서 맥 버전도 참고하면서 진행했다.

 

수업을 다 듣고나니 Git의 버전관리 방식을 이해할 수 있게 되었고, commit, pull, push의 원리도 이해할 수 있었다. 그렇지만 수업에서 가르쳐 준 내용이 아니라 다른 에러가 나올 때는 아직 구글링 속에 한참 빠져야 한다. 특히 왜 push를 할 때 브랜치들이 생겼다가 다시 사라지는지 원인을 알 수 없다. 수업에서의 정석적인 순서로 하면 제대로 된 파일이 생기는데 이것저것 건드리다 보면 어느새 브랜치가 여러 개 생성된다.

 

하지만 Git 수업을 들으면서 느낀점은 역시 코딩은 절대적인 학습량이 중요하다는 것이다. 일단 개념들은 블로그에 정리해두긴 했는데 직접 손으로 클릭하고 타이핑해서 체화시키는 것이 적합한 방법이었다. 어차피 도구를 사용하는 방법을 배우는 거니까 자연스럽게 여러 번 하면 익숙해질 것이다. 그럼 다음 강의도 빠르게 들어야겠다.  

 

2. 수업내용 정리

1-1. Git 수업에서는 무얼 배우나요?
더보기

01. 즐겁게 프로그래밍 학습하기

 

  • 마음껏 실험해봐라!
  • 좋은 개발자는 에러를 찾고 고칠 수 있는 개발자!

 

02. [배웠으면 써먹자] 즐겁게 배우자

 

  • 오답노트: 노션에 에러노트 꾸준히 적어놓는 방법도 좋음.
  • 어떤 행동을 했을 때 에러가 발생하는지
  • 에러를 해결하기 위해 어떤 시도를 했는지
  • 어떤 해결방법이 유효한지, 해결은 어떻게 했는지
  • 에러노트 작성법 (참고)

 

  • 슬랙 수업채널에 질문할 때 3가지 포함하기:
  • 1. 목적 - 내가 하려던 작업
  • 2. 에러 정보 (에러 메시지, 에러가 발생한 화면)
  • 3. 내가 어떤 작업을 시도해봤는지, 참고한 자료는 무엇인지
  • 질문 잘하는 방법 (참고)

 

03. 1주차 ~ 3주차까지 배울 것

 

  • 1주차: 나를 위한 Git / 핵심 키워드: 버전관리, commit, pull, push
  • 2주차: 협업하기 위한 기초 개념을 배운다. / 핵심 키워드: Issue, branch, merge
  • 3주차: 모두의 Git! / 핵심키워드: Github

 

1-2. 필수 프로그램 설치
더보기

01. Github 가입하기

 

  • Username: github에서 사용할 id. 잘 기억해두고 변경할 수 있지만 불편함이 있으니 신중하게 결정.

 

02. Git

 

 

Git

 

git-scm.com

 

03. Sourcetree 설치하기

 

04. Sourcetree 설정하기

 

 

GitHub: Where the world builds software

GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

1-3. Git은 뭐고, Github는 무엇인가요?
더보기

01. 이번주 배우고 나면 할 수 있는 것 먼저 보여드릴게요!

 

02. Git으로 무엇을 할 수 있을까요?

 

  1. 프로젝트의 버전 관리를 할 수 있음: 작업 히스토리도 한 눈에 볼 수 있음.
  2. 작업 단위 나누기: 기능 완성할 때마다 작업 내역을 저장하면, 에러 발생하는 부분 쉽게 파악 가능.
  3. 협업해서 하나의 프로젝트 만들때 유용함: 프로젝트를 나누어 작업하고 하나로 합치는 것이 편리함. 누가, 언제, 어떤 부분을 수정했는지 한 눈에 파악 가능. 같은 파일명끼리 비교할 때 어떤 부분이 다른지 자동으로 비교하고 반영 선택 가능. 기본적으로는 코드, text 파일, markdown파일, CSV 파일 등의 내용이 자동 비교됨. 이미지 파일, word 파일 pdf 파일, 엑셀 파일은 따로 설정해주어야 가능함. 기본 설정은 파일 크기의 변화만 알 수 있음. 

 

03. Github으로 무엇을 할 수 있을까요?

 

  • Git과 Github는 다르다. Github = Git 원격 프로젝트 저장소 + Git으로 할 수 있는 커뮤니티 기능 서비스.
  • 1. 인터넷으로 연결된 프로젝트 저장소: 컴퓨터의 내 Git 프로젝트 저장 가능. 개발할 기능들 관리 가능.
  • 2. 개발자들의 커뮤니티: 다른 사람들의 공개 프로젝트 및 관심주제, 프로젝트 소식 받기. 프로젝트 기여.

 

04. sourcetree는 뭐죠?

 

  • sourcetree: Git을 쉽게 사용할 수 있는 도구. ex) 워드 파일 편집할 때 MS office 사용.
  • sourcetree로 배우는 이유:
  • 1. 전 세계에서 가장 많이 사용되는 Git 도구 중 하나. 덕분에 참고 자료도 많음.
  • 2. 초심자 ~ 중급자까지 사용할 수 있도록 여러 기능 제공함.
  • 3. Git 사용패턴에 집중하기에 적합함. 

 

05. 개발자 / IT 조직에서는 Git과 Github을 이렇게 사용해요.

 

  • Git, Github를 따로 사용하는 경우는 적음. Git + 프로젝트 관리 도구를 조합해서 사용하는 경우가 대부분.
  • 대부분의 회사에서는 버전관리 툴(ex. Git)을 필수적으로 사용함.
  • 프로젝트 작업 내역 관리 및 개발자들의 작업물을 하나로 합칠 때도 사용.
  • 버그 리포트 받고 해결도 가능. 작업 내역을 확인할 수 있기 때문.
  • Github의 저장소를 웹사이트로 만들기

 

06. [배웠으면 써먹자] Github 프로젝트 구경하자

 

1-4. 버전관리와 commit - 개념탑재
더보기

01. Git은 어떻게 버전관리를 할까?

 

  • 사용방법을 외우는 것이 아니라 어떻게 사용하는지 흐름에 집중하도록! (개념탑재 - 실습 - 정리하기)
  • Git 이용하면 버전별로 파일 만들 필요 없음. 중간에 Git을 이용해 프로젝트 상태만 저장해주면 됨.
  • Git이 저장하는 3가지 정보: 누가, 언제, 현재 프로젝트 상태(현재 파일 내용들)
  • commit(커밋): 현재 프로젝트 상태를 저장한 것.

 

02. commit(커밋)은 무엇일까?

 

  • Git은 commit(커밋)을 통해 현재 프로젝트의 상태를 저장하고 조회함.
  • 스냅샷처럼 현재 프로젝트 전체 상태를 포착하는 것.
  • 빨간색: 삭제된 내용. 초록색: 추가된 내용
  • commit history, commit log: commit 자체에 언제 작업했는지 포함되어 있으므로 순서대로 히스토리 됨.

 

03. 개념 중간 정리 - 버전관리, Commit

 

  • 버전 관리: 누가, 언제, 현재 프로젝트의 내용이 어떤지 정보를 남기는 것
  • commit: 현재 프로젝트 상태를 저장함. 누가, 언제, 어떤 부분이 변경되었는지 확인 가능함.
  • commit은 현재 프로젝트의 상태를 저장하는 것! 파일의 변경된 부분을 저장하는 것이 아님.

 

04. [배웠으면 써먹자] commit 페이지 확인하기

 

1-5. 버전관리와 commit - 실습 01
더보기

01. 프로젝트 만들기

 

  • 프로그래밍 시 파일/폴더명:
  • 영어, 특수문자 없이 생성. 단어 연결 시 -, _ 둘 중 하나를 사용함.
  • 내용(데이터)를 잘 나타내는 이름으로 짓기. 데이터를 제대로 관리하는 첫걸음임.

 

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

 

  • window에서 Git 관리 폴더 설정하기: sourcetree 사용.
  • sourcetree - Create - 폴더선택 - 생성 (이미 있는 폴더를 git으로 만들 것인지 알림창)
  • 폴더에 .git 이 생성되었다. (안 나오면 숨김파일 해제하면 됨)
  • .git은 Git이 알아서 관리하는 폴더이므로 우리가 수동으로 수정할 일은 거의 없음.
  • .git이 있으면 Git이 관리하는 것임. 반대로 없으면 그냥 일반 프로젝트 되는 것임.
  • git 초기화(git initialize, init): 컴퓨터 프로젝트를 git 프로젝트로 설정하는 것.

 

03. Git 프로젝트 없애는 방법 - 에러나면 참고!

 

  • New tab 클릭: 삭제하려는 저장소 우클릭 후 삭제 누르면 팝업 등장
  • 북마크를 제거하세요: sourcetree에서만 안 보이게 하기
  • 디스크에 있는 저장소를 삭제하세요: 컴퓨터에서도 전부 삭제됨
  • 프로젝트 파일은 현재 상태로 두고 git 설정만 처음으로 되돌리고 싶다면 .git 폴더만 삭제
  • 그러면 그냥 .git 프로젝트가 아니라 일반 프로젝트가 되므로, 다시 git 초기화부터 하면 됨.

 

04. 첫 commit 하기

 

  • commit: 현재 프로젝트 상태를 포함해서 누가, 언제, 작업내역 메시지 정보를 포함하고 있음.
  • sourcetree 에서 현재 프로젝트 내의 파일 옆 + 버튼 클릭 > 작업 메시지 적고 > commit 클릭.

 

05. commit 한 번 더하기

 

  • 프로젝트의 변경내용이 있어야지 commit을 할 수 있으므로 파일을 수정함.
  • ((팁) window는 우측의 탐색기 누르면 프로젝트 폴더 열림)
  • 파일 클릭하면 빨간색, 초록색으로 변경된 부분 나타남. commit 잘 사용하면 변경 관리에 유용.
  • 위와 마찬가지로 변경된 내용의 파일도 커밋해준다.

 

1-6. 버전관리와 commit - 실습 02
더보기

01. commit 한 번 더! - 여러 파일 수정

 

  • commit 메시지: commit 할 때 적는 메시지. 해당 commit의 내용을 잘 알 수 있도록 적어줘야 함.
  • 여러 개 파일도 commit 하는 방법이 동일함.

 

02. commit 한 번 더! - 파일 중 하나만 수정

 

  • 변경 안 된 파일은 이전 commit과 내용이 변경되지 않았기 때문에 현재 프로젝트 상태 저장하지 않음.

 

03. 마지막 한 번 더 commit! - 수정된 파일 중에 일부만 commit

 

  • add(또는 staging, 스테이징): commit 하기 위한 파일만 선택하는 것.
  • window 버전 sourcetree에 '스테이지'라고 적혀있음.
  • 무대(stage)에 올리는 것처럼 내가 commit 하기 원하는 파일만 선택해 add 하는 과정임.
  • add(staging) 사용하면 기능 A에 관련된 파일만 골라서 commit 할 수 있음.

 

  • 작업 내용을 깔끔하게 관리하기 (중요: 우리는 코드로 의사소통함, 협업에 유용):
  • 1. 내가 기록할 작업 내역이 무엇인지 생각하고
  • 2. 관련된 파일만 add 해서
  • 3. 작업 내역을 나타내는 commit 메시지 적기

 

04. 지금까지 한 commit 내역 보기 - commit history, commit id

 

  • commit history: 현재까지 commit 한 내역 (히스토리 메뉴에서 확인 가능)
  • 가장 위 항목이 최신 commit 임.
  • 설명: 내가 작성한 커밋 메시지
  • 날짜, 작성자: commit 한 일시와 작성자
  • Uncommited changes(커밋되지 않은 변경사항): 아직 커밋되지 않은 변경사항이 있다는 알림.
  • commit id(커밋 아이디): commit을 구분하기 위해 git이 붙여주는 아이디, commit 구분하는 유일한 값.
  • 나중에 커밋을 관리하고 되돌릴 때 사용하는 중요한 정보임. 
  • commit이 포함하는 정보들: commit id, 작업일자, 작업한 사람, 작업내역, 작업내역의 순서

 

1-7. 버전관리와 commit - 정리
더보기

01. [배웠으면 써먹자] - 개념 적어보기

 

  • 1. 버전관리를 한다는 건 어떤 의미인가?
  • 변경된 프로젝트의 정보를 알고 있다는 것.
  • Git은 누가, 언제, 해당 시점의 프로젝트 상태가 기록되기 때문에 버전관리 가능함

 

  • 2. 작업내역 단위인 commit에는 어떤 정보가 포함되어 있어야 버전관리를 잘할 수 있을까?
  • 필요한 정보: 누가, 언제, 무엇을 했는가. 
  • 누가(author), 커밋한 시간, 어떤 작업을 했는지 알려주는 작업 내역인 커밋 메시지

 

  • 3. 지금까지 우리 실습의 순서:
  • (1) git 초기화(git initialize): 기존의 프로젝트를 git 프로젝트로 만든다
  • (2) commit 할 파일들을 add(staging)하고 commit 메시지 작성해서 commit 하기

 

02. [배웠으면 써먹자] - commit 혼자 해보기

 

03. 정리하기

 

  • 버전관리: 변경된 프로젝트 상태정보를 알고 있다는 것. Git은 commit을 사용해서 변경된 버전을 관리함.
  • git 초기화(git initialize): 컴퓨터의 프로젝트를 Git이 관리하는 프로젝트로 만들 수 있게 설정하는 것.
  • commit: 현재 프로젝트의 상태를 찰칵 스냅샷처럼 저장하는 것.
  • commit 포함 정보: 누가, 언제, 프로젝트 변경내용
  • commit 메시지: 작업 내역이 어떤 것인지 알아볼 수 있게 적는 메시지
  • add(혹은 staging, 스테이징): commit에 반영할 파일을 선택하는 것.
  • 현업에서도 굉장히 중요한 스킬. 작업 내용을 정확히 나눠서 커밋할 수 있다는 장점이 있음.
  • commit 한 기록은 history로 볼 수 있음.
  • 지금까지 우리가 한 작업: git 초기화(initialize) - add(staging) - commit
  • git 초기화는 처음 단 한번만 하면 됨. 작업 내역 저장하려면 add - commit 단계만 하면 됨.

 

1-8. 원격 repo 사용하기 - 개념탑재
더보기

01. 원격 repo와 로컬 repo가 뭐예요?

 

  • repo(리포, repository): Git으로 관리되는 프로젝트
  • 로컬 repo(local repository): 내 컴퓨터에 저장된 리포지토리
  • 원격 repo(remote repository): Github 처럼 다른 곳에서 접속할 수 있는 공간에 저장된 것.
  • Github: 원격 repo가 저장됨 + 개발자 커뮤니티 기능하는 서비스

 

02. 원격 repo와 로컬 repo 같이 사용한다는 것은?

 

  • 추적(Tracking, 트랙킹 / branch tracking): 로컬 repo가 원격 repo와 연결하는 것.
  • 로컬 repo만이 어떤 원격 repo와 연결되었는지 알고 있기 때문에, 언제나 로컬 repo 기준으로 동작 이해.
  • 대신 commit 자동으로 반영하지 않음. 어떤 commit 까지 반영할지 수동으로 설정함.
  • push(푸쉬): 로컬 repo의 commit들을 원격 repo에 반영하는 것. commit 밀어넣기.
  • pull(풀): 원격 repo의 commit들을 로컬 repo에 반영하는 것. commit 땡겨오기.
  • clone(클론, 복제): 원격 repo를 내 컴퓨터에서 사용할 수 있도록 가져오는 것. 일종의 초기 다운로드.

 

1-9. 원격 repo 사용하기 - 실습
더보기

01. traking - 로컬 repo와 원격 repo 연결하기

 

  • 1. Github 접속
  • 2. 원격 repo 만들기:  repo 이름, description 은 프로젝트를 잘 나타낼 수 있게 적어야 함.
  • 3. Tracking 하기, Github repository와 내 컴퓨터 repository 연결하기
  • Github 원격 repo, 컴퓨터 로컬 repo 연결하기 → 연결하면 서로 쉽게 동기화 가능.
  • 로컬 repo가 원격 repo를 추적(tracking)하는 것임. 연결되었다는 정보는 로컬 repo에만 존재함.
  • 설정 > 추가 > origin, github url 각각 입력
  • 4. 로컬 repo 설정 바꿔주기, 브랜치 이름 변경하기
  • 브랜치는 2주차에 배움. master 브랜치 이름을 main으로 변경함.

 

02. push - 로컬 repo의 commit들을 원격 repo commit들에 합치기

 

  • sourcetree의 branch나 히스토리에 가서 push 누르면 끝!

 

03. pull - 원격 repo의 commit들을 로컬 repo commit들에 합치기

 

  • pull: 원격 repo의 commit들을 로컬 repo commit들 내역에 합치는 것. commit들 땡겨오기.
  • 1. 원격 repo에 commit 만들기 (그냥 내용 수정하고 커밋해서 저장)
  • 2. sourcetree로 pull 하기 (그냥 단추 누르면 끝!)

 

04. 원격 repo Github에서 없애는 방법 - 에러나면 참고!

 

  • Github repo 페이지 > Settings > options > Delete this repository > 그대로 입력.

 

05. 초심자를 위한 꿀 패턴! pull - commit - push

 

  • 혼자 Git 프로젝트 할 때는 pull - 로컬 repo commit - push 순서로 하면 좋음.
  • 충돌(conflict): 원격 repo와 로컬 repo에서 같은 파일을 수정했을 때 발생. Git에서 최종파일 확인메시지 보냄.

 

  • 충돌 피하는 순서(100% 통하는 패턴은 아니지만 대부분의 경우에 통함):
  • 1. pull: 원격 repo와 로컬 repo 상태 동일하게 맞춰주기. 로컬 repo에 원격 repo 작업내역 가져오기.
  • 2. commit: 로컬 repo에 작업내용 저장
  • 3. push: 원격 repo에 로컬 repo 내용 반영.

 

06. clone - 원격 repo를 내 컴퓨터에 가져오기

 

  • 내 로컬 repo가 없고 원격 repo만 있을 때 사용. 초기 다운로드 같은 느낌.
  • 우리는 url을 통해 원격 repo 접근할 수 있음.
  • 또는 다른 컴퓨터에서 repo를 보고 싶을 때 사용.
  • 공개 repo는 누구나 clone 할 수 있고, 비공개 repo는 접근권한이 있는 경우만 가능. 드라이브와 마찬가지.

 

  • clone 하는 법
  • 1. 원격 repo 내용을 저장할 폴더 생성
  • 2. 복제할 repo의 url 복사해오기
  • 3. sourcetree 를 이용하여 clone 하기
  • window: + 버튼으로 new tab - clone → 첫 번째 칸에 원격 repo url, 두 번째 칸 클릭하면 자동완성, 끝!

 

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

01. [배웠으면 써먹자] 개념 적어보기

 

  • 1. 원격 repo, 로컬 repo를 연결해서 내용을 반영하고 싶을 땐 어떤 방법을 사용해야할까?
  • 로컬 repo가 없고 원격 repo에 있는 내용을 가져오고 싶을 땐 clone 이용.
  • 로컬 repo가 있고 원격 repo도 있다면, 로컬 repo가 원격 repo를 tracking 하도록 설정함.

 

  • 2. 원격 repo와 로컬 repo는 왜 따로 있을까?
  • 컴퓨터 여러 대면, 하나의 원격 repo에 여러 로컬 repo를 연결시켜 하나의 프로젝트를 동시작업할 수 있음.

 

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

 

02. [배웠으면 써먹자] push 하기, pull 스스로 해보기

 

  • 충돌(conflict): 원격 repo와 로컬 repo에서 같은 파일을 수정할 때 발생함. 수정방법은 추후에 배움.
  • push, pull이 잘 안된다면 충돌이 발생했을 수도 있음.

 

03. 정리하기

 

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

01. [배웠으면 써먹자] 1주차 배운 내용 그림으로 그려보기

 

  • 안 보고 키워드의 내용을 그림으로 그려보자. 두 번째는 [정리하기] 참고하고, 세 번째는 빠진 부분 포함.
  • 키워드: 버전관리, git 초기화(initialize, init), add / staging, commit(커밋), commit 내역(history), push, pull, clone, tracking

 

02. 총 정리 개념

 

  • 버전관리: 변경된 프로젝트 상태의 정보를 알고 있는 것. Git은 가장 널리 쓰이는 버전 관리 도구 중 하나로 commit 을 사용해서 버전이 달라지는 것을 관리함.
  • git 초기화(git initialize): 컴퓨터에 있는 프로젝트를 Git이 관리하는 프로젝트로 만드는 것.
  • commit: 현재 프로젝트 상태를 찰칵 저장하는 것. 누가, 언제 commit 했는지, 프로젝트 변경 내용
  • commit 메시지: 작업내역이 어떤 것인지 알아볼 수 있게 적는 메시지
  • add(staging): commit에 반영할 파일을 선택하는 것. 파일 단위로 commit 반영여부 선택할 수 있음.
  • commit history: commit 내역이 순서대로 정리되어 있는 것.
  • 지금까지 우리가 한 작업: git 초기화 - add(staging) - commit
  • repo(리포, repository): Git으로 관리되는 프로젝트
  • 로컬 repo(local repository): 내 컴퓨터에 저장되어 있는 리포지토리
  • 원격 repo(remote repository): Github처럼 다른 곳에서 접속할 수 있는 공간에 저장되어 있는 것.
  • Tracking(추적): 로컬 repo와 원격 repo를 연결함.
  • push: 로컬 repo의 commit들을 원격 repo에 반영하기, 원격 repo에 없는 commit 내역을 한 번에 반영함.
  • pull: 원격 repo의 commit들을 로컬 repo에 반영하기, 로컬 repo에 없는 comiit 내역을 한 번에 반영함.
  • clone: 원격 repo를 내 컴퓨터에 가져와서 초기 repo 세팅하는 것.

 

1-12. 1주차 끝 & 숙제 설명
더보기

01. 나만의 프로그래밍 배움 노트 TIL 만들기

 

  • 완료!

 

Comments