📘 1. 나 혼자 사용할 수 있는 Git 프로젝트를 만들어 보기
Git
- 버전 관리 도구
: 히스토리 확인가능
- 작업 단위 나누기
- 협업해서 하나의 프로젝트를 만드는데 유용하다.
: 같은 파일명의 내용이 어떤 부분이 다른지를 자동으로 비교하고, 어떤 것을 반영할지 선택 할 수 있다.
GitHub
- git 프로젝트를 원격으로 올릴 수 있는 저장소기능과 커뮤니티기능을 제공하는 서비스
Sourcetree
버전관리와 commit
Git에서는 버전별로 파일을 만들어줄 필요없이 중간중간 Git을 사용해 현재 프로젝트의 상태만 저장해주면 된다.
- 버전관리 : 누가, 언제, 현재 프로젝트 내용 어떤지 정보 남기는 것
- commit : 현재 프로젝트 상태를 📸찰칵 사진찍어서 저장하는 것
Git 초기화(Git initialize)
- 컴퓨터에 있는 프로젝트를 git이 관리하는 프로젝트로 만들 수 있다.(소스트리를 이용해서 git폴더 만들어주기)
Sourcetree에서 commit방법
- 파일을 선택 후 오른쪽 + 버튼을 클릭하면 상단으로 이동됨
- 아래에 작업내용을 적어주고 커밋클릭 후 커밋할 내용 없음이 뜨면 커밋완료!
📌 add(staging)
- add(staging)를 사용하면, 컴퓨터에서 여러 파일을 수정했어도 '기능 A 수정' 에 관련된 파일만 골라서 commit 할 수 있다.
작업내역을 깔끔하게 관리하기 위해서는 꼭 아래처럼 commit 해주기
- 내가 기록할 작업 내역이 무엇인지 생각하고,
- 관련된 파일만 add 해서
- 작업내역을 나타내는 commit 메시지 적기!
repo
- Git으로 관리되는 프로젝트를 Git에서는 repo(리포)라고 부른다.
- 내 컴퓨터에 저장되어있는 리포지토리를 로컬 repo(local repository)라고 하고, GitHub 처럼 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것을 원격 repo(remote repository)라고 합니다.
- repo는 commit을 수동으로 반영해야한다.
📌 Tracking
- 로컬 repo가 원격 repo를 연결하는 것을 추적(Tracking, 트랙킹 / branch tracing) 이라고 한다.
Push / Pull
- Push
: 로컬 repo의 commit들을 원격 repo에 반영하는 것. commit들을 밀어넣기
- Pull
: 원격 repo의 commit들을 로컬 repo에 반영하는 것.
commit들을 가져오기
Clone
- 원격 repo 를 내 컴퓨터에서도 사용할 수 있도록 가져올 수 있다. 일종의 초기 다운로드라고 생각하면 된다.
💡 Q. 원격repo 생성시 원격 이름을 왜 origin으로 사용하지? 찾아보기.
- 구글링해서 찾아본결과 : 'origin이 깃허브에 존재하는 repository 즉, remote를 뜻하는 단어입니다. 다만 remote에 origin이라는 이름을 붙인 것뿐이랍니다.'
혼자 Git을 사용할 때 유용한 패턴
- pull -> 로컬 repo commit -> push 순서로 진행하면 충돌(conflict)을 피할 수 있다.
✅ 2022.11.08.(화)
Git과 GitHub의 차이점을 잘 알지못했었는데 드디어 강의를 보며 배워서 막혔던 속이 뚫리는 기분이다. 설치부터 add, commit, tracking, push, pull, clone까지 이해했다!👏👏👏
📘 2. 협업을 위한 Git
충돌(conflict)이 일어났을 때 작업방식
- 누가 이 작업을 할 것인지 정한다. - Issue
- 각자 맡은 것을 작업한다. - Branch
- 각자 작업을 프로젝트에 합칠 수 있게 공유한다. - merge
- 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge
Issue 할당
- 프로젝트에서 이슈는 해결해야하는 문제로 아래와 같은 것이 있다.
- 버그(프로그램이 원하는 대로 동작하지 않는 것)를 신고 (Bug report, 버그 리포트)
- 기능 추가 등의 프로젝트 개선 제안 (enhancement)
- 위 문제들을 해결하기 위한 작업단위
이슈 트래커(Issue Tracker) 종류
- Github, Jira, Trello, YouTrack 등
📌 commit내용 #이슈번호
- 이슈에 있는 내용을 수정 후 commit시 commit내용을 적고 끝에 #이슈번호를 적어준다.
🔗 Github를 활용한 이슈 관리
🔗 Github 공식 이슈 관리 소개
Branch
- 브랜치를 사용하게 되면 나뭇가지가 뻗어나오듯 기능에 맞게 나누어 작업할 수 있다.
브랜치를 사용하지 않았을 때의 예시 :
브랜치를 사용할 때의 예시 :
새 Branch이름을 정할 때
- ex) feature/이슈번호_관리하기쉬운이름 : feature은 기능 개발하는 브랜치에 관행적으로 붙여주는 이름이다.
체크아웃(checkout)
Branch 삭제하기
- 브랜치를 삭제한다는 것은 그동안 브랜치에 했던 작업 내역 즉, commit이 모두 사라진다는 의미이다.
- 브랜치를 삭제하면 기본 브랜치인 main 브랜치로 체크아웃(checkout) 즉 작업 브랜치가 변경된다.
- 브랜치를 삭제할 때 다른브랜치에 체크아웃 한 뒤에 삭제가 가능하다.
Merge(병합)
- 브랜치를 다른 브랜치에 합치는 것이다. 특정 브랜치의 commit들을 다른 브랜치의 commit 내역에 모두 반영하는 것이다.
❗ 병합하기 전 commit시 branch 체크아웃이 잘 돼있는지 확인하기
🔗 Github flow
Merge conflict
- 하나의 파일을 여러 브랜치에서 수정하고 하나의 branch에 merge 하려고 할 때 merge conflict(병합 충돌) 가 발생한다. 양 쪽에서 내용이 수정되었는데 어떤 내용을 반영해야할지 물어보는 것
- <<<<<<< 에서 >>>>>>> 까지가 충돌이 나는 부분
- 충돌을 수정하려면 반영할 내용만 남기고
<<<<<<< HEAD
와 >>>>>>> feature/jjigae_rtan
을 지워준다.
- 위의 충돌난 파일을 수정하고나서 sourcetree를 켜고 하단 commit메세지 적는 창을 보면 어떤 파일이 conflict(충돌)났는지의 정보가 적혀있다.
✅ 2022.11.12.(토)
2주차에는 Git으로 협업할 때 사용하는 작업들을 배웠다. branch생성과 merge, merge를 할 때 merge conflict를 만나면 어떻게 수정해야하는지와 원격repo에 push하는 법까지!
중간중간에 팁과 사이트를 알려주시는데 도움이 많이 된다.
📘 3. 모두를 위한 Git