Git
Git(깃)은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다. 빠른 수행 속도에 중점을 두고 있는 것이 특징이다. 최초에는 리누스 토발츠가 리눅스 커널 개발에 이용하려고 개발하였으나, 현재는 널리 사용되고 있다. Git의 작업 폴더는 모두, 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있으며, 완전한 형태의 저장소이다. 네트워크에 접근하거나 중앙 서버에 의존하지 않는다. 현재 주니오 하마노(Junio Hamano)가 소프트웨어 관리를 감독하고 있다. Git은 GNU 일반 공중 사용 허가서 v2 하에 배포되는 자유 소프트웨어이다.
git에 대해서 사전에 알아야 될 부분은 아래와 같습니다.
- git의 저장소는 3가지 단계로 나누어 집니다. 커밋한 소스가 보관되는 저장소와 현재 프로젝트 파일들이 있는 작업트리, 저장소와 작업트리사이의 버퍼영역으로 커밋될 대상이 저장되는 스테이징 영역입니다.
- git은 빈 디렉토리는 추적하지 않습니다.
- 형상관리를 하지 않을 파일은 .gitignore 파일 에 추가합니다.
- HEAD는 현재 브랜치의 가장 최신커밋을 의미한다.
- 기본원격 저장소를 origin이라고 부릅니다.
작업 공간
- Stash
Workspace
Index
Local Repository
Upstream Repository
Categories
git-flow branch example
Git 사용방법에 대한 References.
- Git:CreateRepository - Git 저장소 생성방법
- Git:Config - Git configure
- Git:Config#Proxy setting - 프록시 설정 방법
- Git:Push#Amending the message of the most recently pushed commit: 리모트 저장소의 히스토리 수정방법
- Git:Commit#Message Rule: 좋은 git commit 메시지를 위한 영어 사전
cherry-pick
- 특정 커밋을 선택하여 적용. Administration
Git의 운영과 복구에 대한 내용을 정리한다.
Git Hook
- husky - git hook for node.js
- lint-staged - git hook for eslint
Security
- git-secrets - AWS에서 만든 민감 정보 유출 방지
- gitleaks - Find secrets with Gitleaks
ETC
- Git:DefaultTemplate: Git project default template.
- bit - 자동완성 지원하는 Git 클라이언트
- git-split-diffs - GitHub style split diffs in your terminal
- ToolGit - Git 생산성 툴킷
- Gitpod - 오픈소스 원격 개발 플랫폼이다.
- gitu - TUI Git Client
- Tig - text-mode interface for Git
- GitDiagram - GitHub Repo를 인터랙티브 다이어그램으로 시각화 (프로젝트 분석 할 때 유용함)
- Gitingest - Git 리포지토리를 AI 친화적인 텍스트로 변환하는 도구
- Repomix - 자신의 코드베이스를 AI친화적인 형식으로 변환하는 도구
- git-who - 이 코드 누가 작성했어?!
Flows
Install
윈도우의 경우 winget을 사용:
리눅스 계열
Git Server
- Git Server (Daemon, GitWeb, Gitosis, Gitolite)
- GitLabHQ
Tools
- GitHub 을 사용중이라면 GitGuardian 서비스를 한번 살펴 볼 것
- GitLab 을 사용중이라면 Gold/Ultimate 업그레이드를 고려
- 유출을 사전에 막으려면 Talisman (Pre-Commit Hook)을 이용할 것
- 유출되었는지 사후에 확인하는건 GitLeaks 를 도입 고려
- GitOps를 위한 Flux
임시로 사용자 정보를 적용하는 방법
Change Working Directory
git pull
과 같은 명령을 사용할 때 cd로 작업 디렉토리를 변경하지 않고 make -C /dir
과 같이 작업 경로를 바꿀 수 있다:
Pull Request vs Merge Request
병합 또는 끌어오기 요청은 Git 관리 애플리케이션에서 생성됩니다. <- (git 자체로 그런 기능은 없다. github/gitlab 과 같은 도구에서 만들어낸 이름이다.)
그들은 할당된 사람에게 두 지점을 병합하도록 요청합니다.
- GitHub 및 Bitbucket과 같은 도구는 첫 번째 수동 작업이 기능 분기를 가져오는 것이기 때문에 "pull request"라는 이름을 선택합니다.
- GitLab 및 기타 도구와 같은 도구는 최종 작업이 기능 분기를 병합하는 것이기 때문에 "merge request"이라는 이름을 선택합니다.
원문:
Merge or pull requests are created in a Git management application. They ask an assigned person to merge two branches. Tools such as GitHub and Bitbucket choose the name “pull request”, because the first manual action is to pull the feature branch. Tools such as GitLab and others choose the name “merge request”, because the final action is to merge the feature branch. This article refers to them as merge requests.
따라서 두 용어는 의미가 동일하다.
윈도우에서 자동 업데이트 끄는 방법
"작업 스케줄러" (서비스랑 다르다 서비스랑은)에서 "Git for Windows Updater" 를 중지하면 된다.
mmc 명령으로 실행할 수 있다.
실수를 되돌리는 방법들
- 실수를 되돌리는 방법들 (restore, reset, revert)
- restore - 복구를 위한 명령. 대표적으로,
git add
명령으로 Staging Area에 올라간 파일들을 다시 Working Directory로 되돌릴 수도 있습니다. 이 때git restore --staged ...
를 사용.- 또는 예전에 올렸던 파일을 복구할 때 사용한다 (e.g.
git restore --source=8d9bb2c cloud-torrent
)
- 또는 예전에 올렸던 파일을 복구할 때 사용한다 (e.g.
Troubleshooting
Git 사용중 발생할 수 있는 문제점에 대하여 정리한다.
- Git:Troubleshooting
- Git:Troubleshooting:Push: Push명령 도중 발생되는 문제점에 대한 정리
- Git:Troubleshooting:Clone: Clone명령 도중 발생되는 문제점에 대한 정리
- Git:RemoveSensitiveData: Remove sensitive data
- Git:RejectedNonFastForward: rejected master -> master (non-fast-forward)
- Git:Index.lock:
fatal: Unable to create '/path/my_proj/.git/index.lock': File exists
- Git:InternalAPIUnreachable: GitLab: Failed to authorize your Git request: internal API unreachable
See also
- Gitolite
- GitLab
- Git Large File Storage (Git LFS)
- git-annex
- libgit2
- Webhook
- EGit (Eclipse Plugin)
- svn
- Mercurial
- Snowtrack (SnowFS)
- VCS
- gitui - Blazing 💥 fast terminal-ui for git written in rust 🦀
- Sourcetree - Free Git GUI for Mac and Windows
- Relagit - 자동화 기능을 내장한 GUI Git 클라이언트
- DVC (Data Version Control)
Favorite site
- [추천] Git How To
- [추천] Pro Git 한글 매뉴얼
- [추천] git을 시작하기 위한 간편 안내서 1
- [추천] Git Cheatsheet 2 (작업 공간별 명령의 흐름을 그림으로 나타냄) -> (Stash/Workspace/Index/LocalRepository/UpstreamRepository)
- GUI Clients
- Git 초보자를 위한 유용한 7개의 팁
- GIT에 대한 내용정리
-
오픈소스 - 소스 관리 시스템 - Git 명령어 정리3 - Git 명령어 정리
- Git: git secrets 4
- Git: GitHub secrets
- [추천] 누구나 쉽게 이해할 수 있는 Git 입문 5
- 깨진 커밋 메시지 고치기 6
- 깃허브(Github) 후크 API와 슬랙(Slack)에 알림 전달하기
- MSysGit:InstallMSysGit
- Git 간편 안내서 7
- Windows에서 TortoiseGit으로 GIT입문하기 8
- A Visual Git Reference 9
- Github help: Caching your GitHub password in Git (Git 비밀번호 캐싱에 관련된 내용)
- Git을 이용한 Patch 방법
- Using Git with Dropbox 10
- SVN사용자를 위한 Git 사용설명서
- SVN사용자를 위한 Git 가이드
- Git 사용방법
- Git Cheat Sheet 11
- Salesforce git developer cheatsheet 12
- Git 사용자 설명서 13
- Git Tutorial (ko) 14
- Git 명령어 정리
- [추천] Git,분산 버전 관리 시스템 (1장 정리)
- Git 사용 예제
- Git의 작업 취소 방법에 대한 설명
Developers
Migration
Tip
References
-
Git_simple_guide_ko.pdf ↩
-
Ndpsoftware.com-git-cheatsheet.zip ↩
-
Open_source_-VCS-_Git_command_list.pdf ↩
-
Dogfeet-git_secrets.pdf ↩
-
Backlogtool_com_git-guide_kr.zip ↩
-
Fixing_broken_commit_messages.pdf ↩
-
Rogerdudler-git-guide.zip ↩
-
Introduction_tortoisegit.zip ↩
-
Visual-git-guide.zip ↩
-
Using_git_with_dropbox.pdf ↩
-
Rogerdudler.github.com-git_cheat_sheet.pdf ↩
-
Salesforce_git_developer_cheatsheet.pdf ↩
-
Namhyung.springnote.com-git_users_guide.pdf ↩
-
Git-tutorial_vogella.com_kor.pdf ↩
-
How_to_Write_a_Git_Commit_Message_-_item4_Dev_Story.pdf ↩
-
Appkr-git-comparing_workflows.pdf ↩