Skip to content

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.

Administration

Git의 운영과 복구에 대한 내용을 정리한다.

Git Hook

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을 사용:

winget install --id Git.Git -e --source winget

리눅스 계열

sudo apt install git

Git Server

Tools

  • GitHub 을 사용중이라면 GitGuardian 서비스를 한번 살펴 볼 것
  • GitLab 을 사용중이라면 Gold/Ultimate 업그레이드를 고려
  • 유출을 사전에 막으려면 Talisman (Pre-Commit Hook)을 이용할 것
  • 유출되었는지 사후에 확인하는건 GitLeaks 를 도입 고려
  • GitOps를 위한 Flux

임시로 사용자 정보를 적용하는 방법

git -c user.name=사용자명 -c user.email=이메일주소 ...

Change Working Directory

git pull과 같은 명령을 사용할 때 cd로 작업 디렉토리를 변경하지 않고 make -C /dir과 같이 작업 경로를 바꿀 수 있다:

git --work-tree=/X/Y --git-dir=/X/Y/.git pull origin branch

Pull Request vs Merge Request

병합 또는 끌어오기 요청은 Git 관리 애플리케이션에서 생성됩니다. <- (git 자체로 그런 기능은 없다. github/gitlab 과 같은 도구에서 만들어낸 이름이다.)

그들은 할당된 사람에게 두 지점을 병합하도록 요청합니다.

  • GitHubBitbucket과 같은 도구는 첫 번째 수동 작업이 기능 분기를 가져오는 것이기 때문에 "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)
  • reset - 특정 커밋으로 되돌아갈 수 있습니다. 대신 reset의 이름에 걸맞게 이후의 커밋들은 모두 초기화되어 히스토리에서 사라집니다.
  • revert - 특정 커밋만 취소한다. 히스토리가 날라가는건 아니고 해당 커밋이 수정 내용이 취소되는 내용으로 다시 커밋된다.

Troubleshooting

Git 사용중 발생할 수 있는 문제점에 대하여 정리한다.

See also

Favorite site

Developers

Migration

Tip

References


  1. Git_simple_guide_ko.pdf 

  2. Ndpsoftware.com-git-cheatsheet.zip 

  3. Open_source_-VCS-_Git_command_list.pdf 

  4. Dogfeet-git_secrets.pdf 

  5. Backlogtool_com_git-guide_kr.zip 

  6. Fixing_broken_commit_messages.pdf 

  7. Rogerdudler-git-guide.zip 

  8. Introduction_tortoisegit.zip 

  9. Visual-git-guide.zip 

  10. Using_git_with_dropbox.pdf 

  11. Rogerdudler.github.com-git_cheat_sheet.pdf 

  12. Salesforce_git_developer_cheatsheet.pdf 

  13. Namhyung.springnote.com-git_users_guide.pdf 

  14. Git-tutorial_vogella.com_kor.pdf 

  15. How_to_Write_a_Git_Commit_Message_-_item4_Dev_Story.pdf 

  16. Appkr-git-comparing_workflows.pdf