> 개발 도구 > 자식 > Git의 기본 작동 원리에 대한 심층 분석

Git의 기본 작동 원리에 대한 심층 분석

WBOY
풀어 주다: 2022-04-07 13:31:33
앞으로
3804명이 탐색했습니다.

이 글은 git의 기본 작동 원리, 입문용 튜토리얼을 중심으로 Git에 대한 관련 지식을 제공하고, Git 로컬 웨어하우스를 가지고 놀면서 초보자가 Git을 빠르게 시작할 수 있도록 도와줍니다. 모두에게 도움이 되기를 바랍니다. .

Git의 기본 작동 원리에 대한 심층 분석

추천 학습: "Git 학습 튜토리얼"

1. 파티션 및 작업 흐름

1. Git 파티션

Git 파티션에는 작업 공간, 준비 영역, 로컬 창고(로컬 버전 라이브러리)가 포함됩니다. 원격 창고(원격 버전 라이브러리).

  1. Workspace
    작업 공간은 로컬 코드가 위치한 디렉터리이자, .git/(로컬 웨어하우스)이 저장되는 디렉터리이기도 합니다.

  2. Staging Area
    Staging Area(Index/Stage)는 워크스페이스와 로컬 웨어하우스의 캐시 공간으로, 로컬 웨어하우스(버전 라이브러리)에 제출될 파일 수정 정보를 기록하는 공간입니다. .git/ 디렉토리 인덱스 파일은 임시 저장 영역입니다.

  3. 로컬 웨어하우스
    로컬 웨어하우스(Repository)는 로컬 라이브러리 또는 버전 라이브러리라고도 합니다. 로컬 웨어하우스의 파일은 모두 .git/ 디렉터리에 저장됩니다.

  4. 원격 창고
    원격 창고(원격) 인터넷에서 GitHub, Gitee 및 GitLab은 로컬 창고와 마찬가지로 원격 창고도 다양한 코드 버전을 저장할 수 있지만 이러한 버전은 여러 소스에서 나올 수 있습니다. 지역 창고.

2. 작업 흐름

---------------------------- ----- ---------------아래 사진은 인터넷에서 퍼온 것입니다------------ ----------- -------------
Git의 기본 작동 원리에 대한 심층 분석

위 그림은 동작 명령을 생생하게 표현하고 있습니다. 서로 다른 Git 파티션 사이.

  • 코드 업로드 기능을 구현하려면 작업 공간에서 추가를 사용하여 임시 저장 영역에 파일을 추가한 다음 커밋을 통해 로컬 웨어하우스에 버전을 제출합니다.
  • 작업 공간 수정 작업 공간에 있는 지점의 코드를 원격 창고의 최신 버전으로 업데이트하려는 경우 체크아웃 명령을 통해 로컬 창고 또는 준비 영역에서 파일을 복원할 수 있습니다.
  • 원격 웨어하우스에서 복제를 사용하여 원격 웨어하우스의 기본 분기를 로컬 저장소에 복사하는 경우 가져오기 명령은 가져오기가 로컬 코드를 병합하는 반면 가져오기는 가져오기와 유사합니다. 로컬 저장소에 새로운 항목이 추가되었는지 여부에 관계없이 최신 버전만 로컬 저장소에 가져옵니다.

2. 로컬 웨어하우스 초기화

1.git init

로컬 웨어하우스(버전 라이브러리)는 git init 명령을 사용하여 생성해야 합니다. (나중에 소개할 원격 웨어하우스에서 직접 복제할 수도 있습니다.) .
작업 공간(코드 저장 디렉터리)에 들어가서 git init를 입력하면 git이 작업 공간에 새 .git/ 디렉터리를 만듭니다.
Git의 기본 작동 원리에 대한 심층 분석

2.git/ 디렉터리에 대한 간략한 소개

Git의 기본 작동 원리에 대한 심층 분석
.git/ 디렉토리에는 3개의 텍스트 파일이 있습니다.

  • config는 로컬 웨어하우스의 구성 정보를 저장합니다.
  • description은 웨어하우스의 이름을 설명하는 데 사용됩니다.
  • HEAD는 로컬 웨어하우스의 현재 지점입니다. 기본값은 master이고 refs/heads/master를 가리킵니다. refs/ 디렉토리는 주로 일부 브랜치 정보를 저장하는 것을 볼 수 있습니다.

나중에 로컬 웨어하우스를 운영할 때 log/와 같은 다른 파일이 생성됩니다. 제출된 기록, 색인 - 임시 저장 영역.

【참고】 .git/의 파일을 수동으로 변경하지 마세요. 로컬 창고의 구조를 손상시키고 부정적인 결과를 초래할 수 있습니다.

3. 사용자 정보 구성

1. 사용자 이름 및 이메일 구성 소개

로컬 창고를 초기화한 후 가장 먼저 할 일은 사용자 이름과 이메일 주소를 포함한 사용자 구성 정보를 로컬 창고에 추가하는 것입니다. 여기에 이메일 주소는 호스팅 플랫폼(예: gitee)의 계정과 직접적인 관계가 없습니다. 유일한 기능은 다른 사용자나 호스팅 플랫폼에 이메일 주소를 입력하는 것입니다. 코드를 업로드할 수 없게 됩니다.

예를 들어 아래에서는 "Zhang San"과 "Li Si"를 사용하여 코드를 업로드했습니다. 이메일 주소는 실제가 아니지만 업로드는 성공할 수 있습니다. (커밋 정보에 사고가 있었습니다.)
Git의 기본 작동 원리에 대한 심층 분석
Li Si의 이메일 주소는 분명히 진짜가 아닙니다.
Git의 기본 작동 원리에 대한 심층 분석
"Zhang San"과 "Li Si"의 이메일 주소는 gitee 계정에 연결되어 있지 않기 때문에 해당 아바타를 클릭하면 gitee 계정의 제출 이메일 주소가 채워져 있으면 사용자 정보가 표시되지 않습니다. 사용자 구성에서 gitee를 클릭하면 업로더의 계정 정보를 볼 수 있습니다.
Git의 기본 작동 원리에 대한 심층 분석
gitee 사용자의 제출 이메일 주소는 gitee->개인 홈페이지->개인 설정->메일함 관리에서 설정하고 볼 수 있습니다:
Git의 기본 작동 원리에 대한 심층 분석

2 git config를 사용하여 사용자 정보를 구성하세요

사용자 이름과 이메일 주소에 관해 주의할 점은 사실 사용자 정보 구성은 매우 간단합니다.

git config --global user.name "your name"git config --global user.email "your email"
로그인 후 복사

user.name 다음에 사용자 이름을 입력하고 원하는 내용을 입력하세요.
user.email 다음에 사용자의 이메일 주소를 입력하고 원하는 내용을 입력하세요.
–global은 전역 속성을 구성하는 데 사용됩니다
Git의 기본 작동 원리에 대한 심층 분석
로컬 웨어하우스에 코드를 제출할 때 git은 먼저 로컬 웨어하우스의 .git/config 파일을 검색합니다. 사용자 정보가 없으면 전역 구성 파일이 사용됩니다( 근접성 원리에 따라).

전역 구성 파일은 사용자 속성만 포함하는 시스템 사용자 디렉터리/username/.gitconfig에 저장됩니다.
Git의 기본 작동 원리에 대한 심층 분석

–global을 추가하지 않으면 로컬 웨어하우스의 사용자 구성만 설정됩니다. 로컬 웨어하우스 사용자 구성 정보는 .git/config
Git의 기본 작동 원리에 대한 심층 분석
에 저장됩니다. 위 그림에서는 사용자 이름만 설정했습니다. 이때 수정 사항을 제출하면 로컬 창고로 이동하여 제출 기록에 있는 사용자 이름에 대한 로컬 구성을 사용합니다(아래 그림). 사용자 사서함이 로컬로 구성되지 않았기 때문에 사서함은 계속해서 로컬 구성을 사용합니다. 전역 구성에 지정된 사서함입니다.
Git의 기본 작동 원리에 대한 심층 분석

4. 준비 영역 파일 관리

사용자 정보를 구성한 후 코드 제출을 고려할 수 있지만 때로는 전체 작업 공간 파일을 로컬 웨어하우스(버전 라이브러리)에 제출하고 싶지 않을 수도 있습니다. 임시 저장 영역(인덱스/스테이지)이 있으면 이 문제가 해결됩니다. 변경이 필요하다고 생각되면 임시 저장 영역에 먼저 코드 파일을 추가하면 됩니다. 거의 완료되면 다음 단계(현지 창고에 제출)로 진행하세요.

1. Git 파일 상태

스테이징 영역을 관리하기 전에 작업 영역 파일의 여러 상태도 알아야 합니다.

  • Untracked 추적되지 않음, 스테이징 영역의 파일이 작업 영역에 추가되지 않았습니다. 버전 관리에서
  • Unmodified 수정되지 않았으며 버전 관리에 추가되었지만 저장소에 있는 파일의 스냅샷과 동일합니다.
  • Modified 수정되었으며 버전 관리에 추가되었으며 마지막 스냅샷과 다릅니다.
  • Staged이 준비되었으며 다음 단계에서 로컬 창고(버전 라이브러리)에 제출할 수 있습니다.

----------------------------------------------- --- --------아래 사진은 인터넷에서 퍼온 것입니다------ --------- ------
Git의 기본 작동 원리에 대한 심층 분석
git status 명령을 사용하여 작업공간 파일의 현재 상태를 확인할 수 있습니다:

#查看特定文件的状态
git status [filename]#查看所有文件状态
git status

#精简的方式显示文件状态
git status -s
로그인 후 복사

2. 준비 영역에 파일 추가

먼저 작업 공간에 있는 모든 파일의 상태를 확인하고 아직 파일이 없는지 확인하세요.
Git의 기본 작동 원리에 대한 심층 분석

现在创建3个文件,再次使用git status(-s表示精简显示),3个文件的状态为Untracked,??为精简显示下Untracked的标志,意思是新创的文件没有被本地仓库(版本库)跟踪。
Git의 기본 작동 원리에 대한 심층 분석
git add [文件…] 可以添加一个或多个文件到暂存区,使文件状态变为Staged,A表示该文件被add到暂存区。
Git의 기본 작동 원리에 대한 심층 분석
也可以使用 git add . 或 git add -A 将工作区所有文件添加到暂存库(除了.gitignore里声明的文件,本文暂不介绍)。
Git의 기본 작동 원리에 대한 심층 분석

3. 删除暂存区的文件

既然可以向暂存区添加文件,那么反向操作必然也不能少,git rm --cached [文件…] 命令可以将暂存区的文件移除,使其恢复到Untracked状态。
Git의 기본 작동 원리에 대한 심층 분석

4. 文件修改管理

如果已经存入暂存区,但在文件提交到本地仓库前,我们对其进行了修改,那么它的状态将变为Modified。
Git의 기본 작동 원리에 대한 심층 분석
对于Modified状态的文件,我们可以使用git add将修改后的版本加入到暂存区,也可以使用git checkout -- [file...]将工作区的该文件恢复到暂存区的版本。

git add a.c重新添加a.c到暂存区:
Git의 기본 작동 원리에 대한 심층 분석
下图为使用git checkout -- a.c从暂存区恢复a.c文件,下图中我没有加 “ --”,它的作用是让checkout不检测任何其他选项参数,目的是防止该命令把a.c当做一个分支(checkout 还有一个作用是切换分支)。
Git의 기본 작동 원리에 대한 심층 분석
对Modified状态下的文件使用 git diff 可以得出文件修改的详细记录,git diff和diff命令虽然作用都是对比文件,但git diff的作用是对比不同的状态下的同一文件,而diff用来对比两个不同的文件。
Git의 기본 작동 원리에 대한 심층 분석

五、提交文件到本地仓库

文件添加到暂存区的目的就是将其提交到本地仓库(版本库),提交命令为git commit -m “message”

我们可以在commit 后面添加文件,这样能指定提交的文件:
Git의 기본 작동 원리에 대한 심층 분석
通过git log 可以查看提交记录,HEAD为本地仓库当前分支,指向主分支master:
Git의 기본 작동 원리에 대한 심층 분석
直接使用 git commit -m “message” 可以将整个暂存区都提交到本地仓库:

Git의 기본 작동 원리에 대한 심층 분석

#以一行的形式显示所有提交版本:
git log --pretty=oneline
로그인 후 복사

Git의 기본 작동 원리에 대한 심층 분석

#一行显示,只显示哈希值的前7位:
git log --oneline
로그인 후 복사

Git의 기본 작동 원리에 대한 심층 분석

#显示历史提交版本与当前版本的间隔数:
git reflog
로그인 후 복사

Git의 기본 작동 원리에 대한 심층 분석

六、推送到远程仓库

代码文件提交到本地仓库后,还需要推送到远程仓库进行托管。

1. 创建远程仓库

我以码云为例,远程仓库的创建可以通过以下三步实现:
Git의 기본 작동 원리에 대한 심층 분석

2. 添加远程仓库地址

git remote add 命令可以添加远程仓库,name为远程仓库地址的别名,自定义,url为仓库网络地址。
如果要用https的方式上传代码,需要添加远程仓库https地址;用ssh上传代码,则url填远程仓库ssh地址。

먼저 코드 클라우드 웨어하우스 홈페이지에서 웨어하우스 주소를 복사하세요.
Git의 기본 작동 원리에 대한 심층 분석

원격 창고 원본의 로컬 별칭을 지정했습니다:
Git의 기본 작동 원리에 대한 심층 분석
로컬 별칭이 충돌하지 않는 한 여러 원격 창고를 설정할 수 있습니다.

3. 원격 창고 주소 보기

git remote -v 이 명령은 원격 창고 주소를 보거나 git config -l
Git의 기본 작동 원리에 대한 심층 분석

4를 통해 볼 수 있습니다. git 원격 제거 로컬 별칭 이름을 사용하여 원격 주소를 삭제할 수 있습니다:


5. 원격 창고로 푸시 Git의 기본 작동 원리에 대한 심층 분석

먼저 https 프로토콜 주소에 해당하는 별칭을 확인하세요. 현재 설정한 원격 웨어하우스의 주소는 https이고 ssh 프로토콜 주소가 해당합니다. 별칭은 ssh입니다. 이 두 주소는 실제로 웨어하우스이지만 프로토콜이 다릅니다.


https uploadGit의 기본 작동 원리에 대한 심층 분석

git push name

은 로컬 창고의 업로드를 인식할 수 있습니다. 이름은 구성 파일에 있는 원격 창고의 별칭입니다. 업로드하려면 계정과 비밀번호를 입력해야 합니다. Window 시스템은 자동으로 계정과 비밀번호를 저장합니다. Window가 저장한 사용자 이름과 비밀번호를 수정하려면 Gitee 로그인 자격 증명 수정을 참조하세요.

때때로 첫 번째 업로드가 실패할 수 있습니다. git push -u name master를 사용해 보세요. 이 명령의 기능은 이름 웨어하우스의 기본 분기를 -u 및 –set-upstream으로 사용하는 것입니다. 같은 효과.

Git의 기본 작동 원리에 대한 심층 분석
Git의 기본 작동 원리에 대한 심층 분석
ssh uploadGit의 기본 작동 원리에 대한 심층 분석

Ssh를 사용하여 업로드하려면 먼저 SSH 키를 생성하고 해당 공개 키를 gitee 개인 설정의 SSH 공개 키 설정에 저장해야 합니다. , 다음을 참조하세요. 코드 업로드를 구현하기 위한 SSH 키 키 생성

때때로 첫 번째 업로드가 실패할 수 있습니다. git push -u name master를 사용해 보세요. 이 명령의 기능은 이름 창고의 기본 분기를 사용하는 것입니다. -u 및 –set-upstream은 동일한 효과를 갖습니다.



Git의 기본 작동 원리에 대한 심층 분석
7. 원격 창고에서 복제, 가져오기 또는 가져오기 Git의 기본 작동 원리에 대한 심층 분석

1. 원격 창고를 로컬에 복제

git의 복제는 원격 창고를 로컬에 복사하고 로컬 창고를 자동으로 초기화할 수 있습니다. 같은 시간.

임의의 디렉터리에서 Git bash를 열고 git clone []를 입력합니다. repo는 원격 웨어하우스 URL이고 dir은 복제 웨어하우스의 저장 경로입니다(미리 만들 필요가 없습니다). , 입력하지 않은 경우 기본값은 원격 저장소의 이름(로컬 별칭 아님)입니다.

[참고]
: 복제에는 푸시와 마찬가지로 비밀번호가 필요합니다.
복제가 성공적으로 완료되면 업로드 시 작업공간과 완전히 동일한 웨어하우스 디렉토리에 들어가고, 제출 로그도 동일합니다.
Git의 기본 작동 원리에 대한 심층 분석

2.원격 웨어하우스 가져오기(fetch)Git의 기본 작동 원리에 대한 심층 분석

git fetch의 기능은 원격 웨어하우스 브랜치를 로컬 웨어하우스에 복사하고 최신 버전을 FETCH_HEAD 브랜치에 저장하는 것입니다. 현재 분기에 수동으로 병합해야 합니다.

명령 형식: git fetch [], 저장소는 원격 창고의 네트워크 주소입니다.

git merge 은 브랜치를 병합하는 데 사용됩니다.




3. 원격 웨어하우스 가져오기(pull) Git의 기본 작동 원리에 대한 심층 분석

git pull은 git fetch와 유사하지만 git pull은 원격 웨어하우스의 브랜치를 자동으로 병합합니다. 지역 현재 하나의 지점.


Git의 기본 작동 원리에 대한 심층 분석추천 학습: "
Git 비디오 튜토리얼

"

위 내용은 Git의 기본 작동 원리에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
git
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿