버전관리란?
: 누가, 언제, 현재 프로젝트의 내용이 어떤지 정보를 남긴다는 것
Git 초기화란?
: 컴퓨터에 있는 프로젝트를 Git 이 관리하는 프로젝트로 설정하는 것(처음에 한번만 하면됨)
commit이란?
: 현재 프로젝트의 상태를 저장한다. Git 이 이전 commit(이전에 저장한 프로젝트의 상태)를 알고 있으므로 자동으로 어떤 부분이 바뀌었는지 알려준다. 누가, 언제, 어떤 부분을 바꾸었는지 확인해볼 수 있다.
staging(add)이란?
: commit 에 반영할 파일을 선택하는 것(파일단위로 선택 가능)
commit history이란?
: commit 한 순서대로 리스트. 역사!
repo란?
: Git으로 관리되는 프로젝트
로컬 repo : 내 컴퓨터에 저장되어있는 리포지토리
원격 repo : 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것
Tracking 이란?
: 로컬 repo와 원격 repo의 특정 브랜치를 연결해주는 것
pull과 push는 기본적으로 트래킹(추적)되고있는 브랜치를 기준으로 commit 내역을 반영한다.
push이란?
: 로컬 repo 의 새로운 commit 들을 원격 repo 에 반영하기(밀어넣기)
pull이란?
: 원격 repo 의 새로운 commit 들을 로컬 repo 로 반영하기(땡겨오기)
clone이란?
: 원격 repo 를 내 컴퓨터에 가져오기
<협업의 단계>
1. 누가 이 작업을 맡을 것인지! -> Issue
2. 각자 맡은것을 작업 공간을 나누어서 작업! -> Branch
3. 각자 작업을 메인 프로젝트에 합치기! -> Merge
(경우에 따라 작업한 내용을 바로 합치기지 않고 작업한 내용을 리뷰한 후 최종적으로 메인 프로젝트에 반영) -> PR 후 Merge
Issue란?
: 내가 할 작업, 기능추가, 버그 리포트 등 여러 방식으로 사용 가능
협업을 하기 위해 issue를 만들어 누가 작업할지 정하고, 브랜치를 만들어 작업할 공간을 나눔
Branch란?
: 특정 commit에서 갈라져나와서 작업하는 것, 보통 기능별로 이름을 만들고 Branch로 나누어 작업
작업할 브랜치로 바꾸는 것을 Check Out(체크아웃)이라고 한다.
현재 체크아웃된 브랜치에만 commit이 반영된다.
브랜치 명은 규칙을 가지고 지어야 관리가 쉬워진다.
작업이 완료된 후에는 삭제해줘야 오류가 나지 않는다.
Merge란?
: 브랜치의 작업 내역 commit을 다른 브랜치로 합치는 것, 보통 기준(메인) 브랜치를 정하고 해당 브랜치에 합친다.
Merge Conflict(병합충돌) 란?
: Merge를 하는 과정에서 같은 파일의 동일한 부분이 수정된 것이 발견되면 발생
원하는대로 수정 후 <, >, = 표시부분을 삭제한 후 merge commit 하면 된다.
Git 사용 flow
: https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/
인터넷으로 정보 얻는 법
- stackoverflow(개발Q&A 사이트)
https://stackoverflow.com/questions/927358/how-do-i-undo-the-most-recent-local-commits-in-git
- 구글링
- 신뢰할 수 있는 블로그(tech 회사의 기술 블로그, IT 전문 매거진)
- 기술 공식 문서
https://git-scm.com/doc
PR(Pull Request, 풀리퀘스트)이란?
: 내 작업내역을 바로 merge 하지 않고, 참여하고 있는 프로젝트에 내 작업(branch)를 merge해달라고 요청(Request) 를 먼저 보내는 것이다.
❗ PR 이 완료되기 전까진 PR 요청을 한 로컬 브랜치(우리 수업에서는 feature/jjim) 를 삭제하지 않아야 한다.
fork이란?
: 원본 소스코드를 복사해서 새로운 독립적인 소프트웨어로 개발하는 것(다른사람 repo에 pr할때 사용, repository 의 사용권한이 다른 사람에게 있을 때)
amend이란?
: 가장 최신의 commit을 수정
push를 한 이후에 수정하는 경우 강제푸시 해야한다.(강제푸시는 되도록 안하는 것이 좋다.)
revert이란?
: commit 이 변경되었다는 거 알리면서 되돌리기
원하는 commit에 마우스 오른쪽 누르고 되돌리기 하면 된다.
reset이란?
: commit 했던 작업내역을 말 그대로 리셋시키는 것
- soft : 저장소로 커밋한 사실만 없어진다.
- mixed : 저장소로 커밋한 사실과 스테이지로 추가한 사실이 없어진다.(다시 유지보수 하고 싶을 때 사용)
- hard : commit 들을 되돌리고 그동안 작업했던 모든 것도 없애버린다. 즉, 🚫 작업내역을 복원할 수 없다.(애초에 작업을 잘못했을 때 사용)
commit 메시지 컨벤션이란?
: commit 메시지를 어떻게 작성해야하는지 정한 것
- 좋은 커밋 메시지 작성하는 법!
https://meetup.toast.com/posts/106
- 좋은 git commit 메시지를 위한 영어 사전
https://blog.ull.im/engineering/2019/03/10/logs-on-git.html
코드리뷰란?
: 작성된 코드나 PR 한 내역에서 댓글을 달면서 리뷰를 남기는 것
- Google 코드 리뷰 가이드 한글 번역
https://soojin.ro/review/
.Gitignore이란?
: Github repo 에 올라가면 안되는 파일들을 없는 것처럼 무시하게 하는 설정
파일명을 .gitignore 로 만들고 여기에 Git 이 무시해야할 파일 또는 폴더이름을 적어주면 된다. 그리고 나서 내 프로젝트의 최상위 폴더에 저장하면 끝!
- gitignore 검색 사이트
https://gitignore.io
Readme란?
: 프로젝트나 소프트웨어 사용할 때 먼저 읽어야하는 정보를 적어두는 파일
- README 양식 repo
https://github.com/ohahohah/readme-template
Marktown이란?
: 서식이 적용된 텍스트 파일, 이걸로 readme 작성
- 마크타운 문법 예시
Github에서 정보얻는 법, 심화 사용법
- Github Trending User
https://github.com/trending/developers
- 한국 오픈소스 활동 랭킹
http://rankedin.kr/users
- User 프로필 보기
https://github.com/PySimpleGUI
- Github active user list
https://gist.github.com/paulmillr/2657075
- React 소스코드
https://github.com/facebook/react/blame/master/packages/react/src/React.js
- React repo
https://github.com/facebook/react
- 오픈소스 기여 가이드 by Github
https://opensource.guide/ko/how-to-contribute/
- 컨트리뷰터에 첫 도전하는 사람들을 위한 프로젝트 by Github
https://github.com/showcases/great-for-new-contributors
- 간단하게 보는 Git CLI 명령어
https://rogerdudler.github.io/git-guide/index.ko.html
💜 오늘 느끼고 배운 점
오늘은 주말에 교육 기간에 다 듣지 못한 Git강의를 공부했다. Git이라는 것이 어떤 곳에 사용되는 것인지 그리고 굉장히 다양한 사용방식이 있다는 것을 알게되었다. 아직은 기초적인 방식으로만 사용 가능하지만 강의에서 말씀해주신 것처럼 알려주신 자료들과 다른 사람들의 페이지를 보며 pr도 시도해 보고 내 코드를 정리해서 올리는 것도 해봐야겠다.