Git and GitHub : Introducing a powerful Version Control System(VCS)
Git과 Command Line 사용한 Version Control
- cd Desktop : Desktop으로 이동
- mkdir 디렉토리명 : 디렉토리 생성
- cd 디렉토리명 : 디렉토리로 이동
- ls : 위치한 디렉토리에 있는 파일과 하위 디렉토리 목록을 보여줌
- touch 파일명 : 파일 생성
-
open -a 파일경로 : 파일 열기
- git init : 디렉토리에 빈 Git저장소 초기화
- ls -a : 숨겨진 파일과 디렉토리를 포함하여 모든 파일을 나열
- git status : 스테이지 확인
- git add : 파일의 변경 사항을 추적하기 위해 스테이징 영역에 추가
- 메시지는 현재형으로 작성하는 것이 관례임
- git commit -m “메시지” : 로컬 저장소에 파일의 버전이 저장되며 커밋 메시지를 통해 버전에 이름을 부여. 파일을 복구할 수 없는 경우 관리된 지난 버전의 파일을 가져올 수 있다.
- git log : 커밋 내용 확인
- git add . : 현재 디렉토리 내 모든 파일을 추가
- git checkout : 로컬 저장소에 있는 지난 버전으로 롤백 할 수 있다.
- git diff 파일명 : 다른 버전의 파일들을 비교할 수 있음
- git checkout 파일명 : 새 파일은 버리고 커밋된 이전 버전으로 롤백
Create and push to a remote repository using Github
-
GitHub : 타인의 서버 또는 컴퓨터에 호스팅되는 저장소
-
New repository 생성시 Set up in Desktop 클라이언트 설정은 선호하지 않음
- remote 저장소 설정
- git push -u origin main : 원격 저장소에 로컬 저장소를 푸시하는 명령어.
-u플래그를 사용하면 원격 저장소와 로컬 저장소를 연결함(원격 저장소의 origin의 main이라는 브랜치에 푸시)
- 커밋을 여러 번 하면 다양한 커밋의 타임라인이 생성되는데 이것을 main branch라고 함
Choose which files not to track
- 민감한 정보들이 GitHub에 업로드 되지 않도록 설정해야 함(password, API Keys, 로컬설정, 사용자 설정 등)
-
.DS_Store file : 프로젝트 폴더의 아이콘 배치와 같은 설정을 저장하는 파일. 숨겨진 파일이므로
ls -a
명령어로 확인 - gitignore파일 생성
git rm --cached -r .
: 현재 디렉토리 내 모든 파일을 스테이징 영역에서 제거
- ignore 파일 안에
*.txt
: 확장자가 txt인 모든 파일을 무시
Git practice with Flask
- VS Code에서 파일 열고 새 가상 환경 생성
- reauirements.txt파일의 모든 모듈을 설치
- 터미널을 열어 .gitignore파일 생성
- .gitignore파일 열고 무시할 파일 추가
GitHub팀의 저장소인 github.com/github에 다양한 gitignore템플릿을 제공
- 복사해 생성한 .gitignore파일에 붙여 넣으면 됨
Git Clone
- 원격 저장소를 클론해서 기기의 로컬 저장소에 풀하는 방법
- 원격 저장소에 저장된 시점에서 작업을 이어갈 수 있다.
- 일반적으로 개발할 때는 이후에 다시 클론하는 일 없이 나만의 브랜치에서 프로젝트를 계속 진행함
- 다른 사람의 프로젝트를 클론하는 이유 : 사본을 저장하기 위함
내가 원하는 대로 프로그램을 수정하거나, 현재 지원하지 않는 기능을 추가하거나, 버그를 발견해 고칠 수 있음
Quake게임 클론
- 가상 파이썬 환경 설정
source /Users/dana/Desktop/Project/Wordle-Game/.venv/bin/activate
: 가상환경 활성화. 프로젝트에 필요한 패키지를 격리된 환경에 설치할 수 있다.
🌟오픈 소스에 기여하려는 사람들을 위해 추천하는 프로젝트 목록 README파일 참고
Branching and Merging
- branch : 사용 예) 새로운 기능을 구현하거나 새로운 개념을 도입하는 등 새로운 시도를 하려고 할 때 별도의 브랜치를 생성해서 작업
주 프로젝트에 문제가 발생할 수 있기 때문에 별도의 브랜치에서 작업 후 모든 기능이 정상적으로 작동하는 것을 확인 후 main코드에 가져와 배포할 준비를 함
git checkout 브랜치명
: 브랜치 전환git branch
: 브랜치 확인-
main 브랜치로 병합하기 :
main 브랜치로 전환 ⇨git merge 브랜치명
텍스트 편집기 “vim”이 열림 ⇨ 병합 메시지 작성하면 됨 ⇨:q!
입력해 저장 후 닫기
병합하더라도 브랜치는 그대로 유지됨 git push origin main -u
의-u
플래그란
Forking and Pull Requests
- git clone은 저장소 전체를 로컬 환경에 클론해 가져오는 기능
- git forking : GitHib계정 자신의 저장소에 소유하는 것. 저장소의 사본에 무슨 작업이든 할 수 있는 권한이 있다.
- Pull request : 포크한 계정에서 원래 계정에 변경 사항을 적용해 달라고 요청.
포크한 입장에서는 push 권한이 없다.
New pull request로 기존 작성자에게 변경 사항을 기존 저장소에 병합해야 하는 이유를 설명하고 요청