Git으로 버전제어: Git Cheatsheets for Quick Reference

Key Points

자동화된 버젼제어
  • 버전 제어는 무한정 ‘실행취소(undo)’하는 것과 같다.

  • 버전 제어는 많은 분들이 병렬로 작업하는 것도 가능하게 한다.

Git 구축 및 설정
  • --global 선택옵션을 git config에 적용하여 사용자명(user name), 전자우편, 편집기 등 선호사항을 컴퓨터에 적용한다.

저장소 생성
  • git init 명령어는 저장소를 초기화한다.

  • Git은 저장소의 모든 데이터를 .git 디렉토리에 저장한다.

변경사항 추적
  • git status 명령어는 저장소 상태를 보여준다.

  • 파일은 (사용자가 볼수 있는) 프로젝트 작업 디렉토리에 저장될 수 있고, (다음 커밋이 생성되는) 준비영역(staging area)에 있을 수 있고, (커밋이 영구적으로 기록되는) 로컬 저장소에 저장될 수 있다.

  • git add 명령어른 파일을 준비영역(staging area)에 위치시킨다.

  • git commit 명령어는 준비영역에 있는 파일을 새로운 커밋으로 로컬 저장소에 저장시킨다.

  • 정확하게 변경사항을 기술하는 커밋 메시지를 작성한다.

이력 탐색
  • git diff 명령어는 커밋 사이 차이나는 바를 출력한다.

  • git checkout 명령어는 파일 이전 버전을 복구해낸다.

추적대상에서 제외
  • .gitignore 파일에 Git 추적대상에서 제외할 목록을 기록한다.

GitHub 원격작업
  • 로컬 Git 저장소를 하나 이상 원격 저장소에 연결시킬 수 있다.

  • SSH 설정법을 배우기 전까지 HTTPS 프로토콜을 사용해서 원격 저장소에 연결한다.

  • git push 명령어는 로컬 저장소의 변경사항을 원격 저장소로 복제한다.

  • git pull 명령어는 원격 저장소의 변경사항을 로컬 저장소로 복제한다.

협업 (Collaborating)
  • git clone 명령어는 원격 저장소를 복제해서 로컬 저장소를 생성하는데 origin 이라는 원격저장소도 자동으로 설정해준다.

충돌 (Conflicts)
  • 충돌은 2명 혹은 그 이상의 사람들이 동시에 동일한 파일에 변경사항을 가할 때 발생된다.

  • 버전제어 시스템은 다른 사람의 변경사항을 그냥 덮어쓰게 하는 것을 허락하지 않고, 충돌나는 곳을 강조해서 해결될 수 있도록 한다.

공개 과학 (Open Science)
  • 공개 과학 작업은 폐쇄적인 과학 작업보다 더 유용하고 더 많이 인용된다.

라이선싱 (Licensing)
  • GPL 소프트웨어를 차용한 사람은 본인 소프트웨어도 GPL 라이선으로 공개하여야 한다; 다른 공개 소프트웨어 대부분은 이러한 요구를 하지는 않는다.

  • 크리이에티브 커먼즈 라이선스는 출처표시, 파생 저작물, 공유, 상업화에 대한 요건과 제약사항을 명세하고 있다.

  • 변호사가 아닌 분은 맨땅에서 라이선스 저작을 시도하지 말아야 한다.

Citation
  • Add a CITATION file to a repository to explain how you want your work cited.

호스팅 (Hosting)
  • 프로젝트를 대학 서버, 개인 도메인, 혹은 공공 대장간(public force)에 올릴 수 있다.

  • 코드와 데이터가 어디에 올라오든 관계없이, 지적 재산과 민감정보 저장에 대한 규정이 적용된다.

Supplemental: Using Git from RStudio
  • Create an RStudio project

Git 추가설정
  • 아주 가끔 사용하는 Git/GitHub 설정사항을 이해한다.

Git Cheatsheets for Quick Reference

Glossary

changeset
A group of changes to one or more files that are or will be added to a single commit in a version control repository.
commit
To record the current state of a set of files (a changeset) in a version control repository. As a noun, the result of committing, i.e. a recorded changeset in a repository. If a commit contains changes to multiple files, all of the changes are recorded together.
conflict
A change made by one user of a version control system that is incompatible with changes made by other users. Helping users resolve conflicts is one of version control’s major tasks.
HTTP
The Hypertext Transfer Protocol used for sharing web pages and other data on the World Wide Web.
merge
(a repository): To reconcile two sets of changes to a repository.
protocol
A set of rules that define how one computer communicates with another. Common protocols on the Internet include HTTP and SSH.
remote
(of a repository) A version control repository connected to another, in such way that both can be kept in sync exchanging commits.
repository
A storage area where a version control system stores the full history of commits of a project and information about who changed what, when.
resolve
To eliminate the conflicts between two or more incompatible changes to a file or set of files being managed by a version control system.
revision
A synonym for commit.
SHA-1
SHA-1 hashes is what Git uses to compute identifiers, including for commits. To compute these, Git uses not only the actual change of a commit, but also its metadata (such as date, author, message), including the identifiers of all commits of preceding changes. This makes Git commit IDs virtually unique. I.e., the likelihood that two commits made independently, even of the same change, receive the same ID is exceedingly small.
SSH
The Secure Shell protocol used for secure communication between computers.
timestamp
A record of when a particular event occurred.
version control
A tool for managing changes to a set of files. Each set of changes creates a new commit of the files; the version control system allows users to recover old commits reliably, and helps manage conflicting changes made by different users.