Git and GitHub : Introducing a powerful Version Control System(VCS)


Git과 Command Line 사용한 Version Control

1


  • cd Desktop : Desktop으로 이동
  • mkdir 디렉토리명 : 디렉토리 생성
  • cd 디렉토리명 : 디렉토리로 이동
  • ls : 위치한 디렉토리에 있는 파일과 하위 디렉토리 목록을 보여줌
  • touch 파일명 : 파일 생성
  • open -a 파일경로 : 파일 열기

  • git init : 디렉토리에 빈 Git저장소 초기화
  • ls -a : 숨겨진 파일과 디렉토리를 포함하여 모든 파일을 나열
  • git status : 스테이지 확인

2


  • git add : 파일의 변경 사항을 추적하기 위해 스테이징 영역에 추가

3


  • 메시지는 현재형으로 작성하는 것이 관례임
  • git commit -m “메시지” : 로컬 저장소에 파일의 버전이 저장되며 커밋 메시지를 통해 버전에 이름을 부여. 파일을 복구할 수 없는 경우 관리된 지난 버전의 파일을 가져올 수 있다.
  • git log : 커밋 내용 확인
  • git add . : 현재 디렉토리 내 모든 파일을 추가
  • git checkout : 로컬 저장소에 있는 지난 버전으로 롤백 할 수 있다.
  • git diff 파일명 : 다른 버전의 파일들을 비교할 수 있음

4


  • git checkout 파일명 : 새 파일은 버리고 커밋된 이전 버전으로 롤백

5



Create and push to a remote repository using Github

  • GitHub : 타인의 서버 또는 컴퓨터에 호스팅되는 저장소

  • New repository 생성시 Set up in Desktop 클라이언트 설정은 선호하지 않음

6


  • remote 저장소 설정

7


  • git push -u origin main : 원격 저장소에 로컬 저장소를 푸시하는 명령어.
    -u플래그를 사용하면 원격 저장소와 로컬 저장소를 연결함(원격 저장소의 origin의 main이라는 브랜치에 푸시)

8


9


  • 커밋을 여러 번 하면 다양한 커밋의 타임라인이 생성되는데 이것을 main branch라고 함



Choose which files not to track

  • 민감한 정보들이 GitHub에 업로드 되지 않도록 설정해야 함(password, API Keys, 로컬설정, 사용자 설정 등)
  • .DS_Store file : 프로젝트 폴더의 아이콘 배치와 같은 설정을 저장하는 파일. 숨겨진 파일이므로 ls -a명령어로 확인

  • gitignore파일 생성

10


  • git rm --cached -r . : 현재 디렉토리 내 모든 파일을 스테이징 영역에서 제거

11


  • ignore 파일 안에 *.txt : 확장자가 txt인 모든 파일을 무시

12



Git practice with Flask

  • VS Code에서 파일 열고 새 가상 환경 생성
  • reauirements.txt파일의 모든 모듈을 설치
  • 터미널을 열어 .gitignore파일 생성
  • .gitignore파일 열고 무시할 파일 추가


GitHub팀의 저장소인 github.com/github에 다양한 gitignore템플릿을 제공

  • 복사해 생성한 .gitignore파일에 붙여 넣으면 됨

13



Git Clone

  • 원격 저장소를 클론해서 기기의 로컬 저장소에 풀하는 방법
  • 원격 저장소에 저장된 시점에서 작업을 이어갈 수 있다.
  • 일반적으로 개발할 때는 이후에 다시 클론하는 일 없이 나만의 브랜치에서 프로젝트를 계속 진행함
  • 다른 사람의 프로젝트를 클론하는 이유 : 사본을 저장하기 위함
    내가 원하는 대로 프로그램을 수정하거나, 현재 지원하지 않는 기능을 추가하거나, 버그를 발견해 고칠 수 있음



Quake게임 클론

14


  • 가상 파이썬 환경 설정

15


  • source /Users/dana/Desktop/Project/Wordle-Game/.venv/bin/activate : 가상환경 활성화. 프로젝트에 필요한 패키지를 격리된 환경에 설치할 수 있다.

16



🌟오픈 소스에 기여하려는 사람들을 위해 추천하는 프로젝트 목록 README파일 참고



Branching and Merging

  • branch : 사용 예) 새로운 기능을 구현하거나 새로운 개념을 도입하는 등 새로운 시도를 하려고 할 때 별도의 브랜치를 생성해서 작업
    주 프로젝트에 문제가 발생할 수 있기 때문에 별도의 브랜치에서 작업 후 모든 기능이 정상적으로 작동하는 것을 확인 후 main코드에 가져와 배포할 준비를 함

17


  • git checkout 브랜치명 : 브랜치 전환
  • git branch : 브랜치 확인
  • main 브랜치로 병합하기 :
    main 브랜치로 전환 ⇨ git merge 브랜치명
    텍스트 편집기 “vim”이 열림 ⇨ 병합 메시지 작성하면 됨 ⇨ :q! 입력해 저장 후 닫기
    병합하더라도 브랜치는 그대로 유지됨

  • git push origin main -u-u플래그란

18



Forking and Pull Requests

  • git clone은 저장소 전체를 로컬 환경에 클론해 가져오는 기능
  • git forking : GitHib계정 자신의 저장소에 소유하는 것. 저장소의 사본에 무슨 작업이든 할 수 있는 권한이 있다.
  • Pull request : 포크한 계정에서 원래 계정에 변경 사항을 적용해 달라고 요청.
    포크한 입장에서는 push 권한이 없다.
    New pull request로 기존 작성자에게 변경 사항을 기존 저장소에 병합해야 하는 이유를 설명하고 요청