이 기사에서는 Git에 대한 관련 지식을 제공합니다. 기존 Git 저장소 데이터베이스에서 로컬 디렉토리로 웨어하우스를 복제하는 git clone을 포함하여 git 웨어하우스를 얻기 위한 git init 및 git clone 관련 문제를 주로 소개합니다. 관련 내용을 기다리고 있습니다. 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: "Git Tutorial"
git 저장소를 얻는 방법에는 일반적으로 두 가지가 있습니다.
다음과 같은 로컬 디렉토리를 변환합니다. 버전 관리 대상이 아님 Git 저장소의 경우
git init [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir <git dir>] [--shared[=<permissions>]] [directory]
객체
, refs/heads
, refs/tags
및 템플릿 파일은 .git
디렉터리에 생성됩니다. . 마스터 브랜치의 HEAD를 참조하는 초기 HEAD 파일도 생성됩니다. $GIT_DIR
환경 변수를 지정하면 ./.git
디렉터리가 저장소의 기반으로 사용됩니다. objects
디렉터리가 $GIT_OBJECT_DIRECTORY
환경 변수를 통해 지정되면 sha1 디렉터리가 이 디렉터리에 생성되고, 그렇지 않으면 기본 $입니다. GIT_DIR/objects
디렉토리. git init
를 실행하는 것은 안전합니다. 기존 항목을 덮어쓰지는 않습니다. git init
을 다시 실행하는 주된 이유는 새로 추가된 템플릿을 가져오기 위한 것입니다(또는 --separate-git-dir
옵션의 경우 Git 다른 장소에 저장소). [-q, --quite]
[--bare]
다음과 같이 .git
폴더를 제외한 베어 웨어하우스를 만듭니다..git
目录中创建objects
,refs/heads
,refs/tags
,和模板文件。还会创建一个引用主分支的HEAD的初始HEAD文件。
如果$GIT_DIR
环境变量被指定了,则会替代./.git
目录作为一个存储库的基础。
如果objects
目录是通过$GIT_OBJECT_DIRECTORY
环境变量指定的,那么在此目录下创建sha1目录,否则就是默认的$GIT_DIR/objects
目录。
在已有的Git存储库中运行git init
是安全的,他不会覆盖已存在的东西。重新运行git init
的主要原因是获取新添加的模板(或者如果是--separate-git-dir
选项,则将Git存储库移到另一个地方)。
[-q, --quite]
[--bare]
.git
文件夹,如下:[--template=<template_directory>]
.git
存储数据库中,如果不指定,默认拷贝的是/usr/share/git-core/templates
路径下的模板,里面包括如下内容:$ ls /usr/share/git-core/templates/ branches description hooks info如果指定自己默认路径则初始化的Git存储数据库如下:
--template=<DIR>
设置,$GIT_TEMPLATE_DIR
环境变量设置,init.templateDir
配置设置,并且依次覆盖下一级设置。[--separate-git-dir <git dir>]
git init
会在当前目录下创建一个.git
文件夹来储存Git数据库,此命令可指定一个路径来初始化Git存储数据库,并在本地创建一个.git
文件来链接到指定的目录中去:.git
文件,文件中描述了当前仓库的Git存储数据库具体位置在哪里,并自动链接过去。[--shared[=<permissions>]]
group
权限。感兴趣可以git init --help
查看此选项具体用法。[directory]
git init
命令则会在此目录中运行,如果目录不存在还会创建该目录。git clone [--template=<template_directory>] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>] [--dissociate] [--separate-git-dir <git dir>] [--depth <depth>] [--[no-]single-branch] [--no-tags] [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules] [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--] <repository> [<directory>]
克隆一个仓库到新被创建的目录中,为克隆的Git存储库中每个分支创建远程跟踪分支(通过git branch --remotes
可查看跟踪分支),并创建和检出克隆仓库当前活跃的分支到本地初始分支。
克隆完成后,一个不带参数的git fetch
命令可以更新所有远程跟踪分支,并且不带参数的git pull
命令还会将远程主分支合并到当前分支中。
这个默认配置是通过在refs/remotes/origin
下创建对远程分支头的引用并且初始化remote.origin.url
和remote.origin.fetch
[--template=<template_directory>]
.git
저장소 데이터베이스에 복사됩니다. 지정하지 않으면 기본 복사본은 /usr/share/git-core/templates 경로. 다음 내용이 포함되어 있습니다. fatal: this operation must be run in a work tree
자체 기본 경로를 지정하는 경우 초기화되는 Git 저장소 데이터베이스는 다음과 같습니다.
템플릿은 --template=<DIR>
를 통해 설정할 수 있습니다. $GIT_TEMPLATE_DIR
환경 변수 설정, init.templateDir
구성 설정, 하위 수준 설정을 차례로 재정의합니다. 🎜🎜[--separate-git-dir <git dir>]
git init
는 현재 디렉터리 /code> 폴더를 선택하여 Git 데이터베이스를 저장합니다. 이 명령은 Git 저장소 데이터베이스를 초기화하기 위한 경로를 지정하고 지정된 디렉터리에 연결하기 위한 .git
파일을 생성할 수 있습니다..git
파일이 하나만 있습니다. 🎜🎜[--shared[=<permissions>]]
group
권한입니다. 관심이 있다면 git init --help
를 통해 이 옵션의 구체적인 사용법을 볼 수 있습니다. 🎜🎜[디렉터리]
git init
명령이 실행되고, 지정하지 않으면 디렉토리가 생성됩니다. 존재하다. 🎜🎜🎜🎜2 git clone 기존 Git 저장소 데이터베이스에서 로컬 디렉터리로 저장소를 복제합니다. 🎜🎜rrreee🎜새로 생성된 디렉터리에 저장소를 복제하고 복제된 Git 저장소의 각 분기에 대한 원격 추적 분기를 생성합니다( 추적을 볼 수 있습니다) git Branch --remotes
)를 통해 분기하고, 복제된 웨어하우스의 현재 활성 분기를 로컬 초기 분기로 생성하고 체크아웃합니다. git fetch
명령은 모든 원격 추적 분기를 업데이트할 수 있으며, 매개변수가 없는 git pull
명령은 원격 마스터도 업데이트합니다. 해당 분기가 현재 분기에 병합됩니다. refs/remotes/origin
아래에 원격 분기 헤더에 대한 참조를 생성하고 remote.origin.url
및 remote를 초기화하여 수행됩니다. .Origin.fetch
는 구성 변수에 의해 구현됩니다. 🎜[--template=<template_directory>]
git init
相关选项获取此选项作用。[-l, --local]
refs
,HEAD
等信息到克隆的Git存储数据库,并将.git/objects
通过硬链接形式链接到本地Git存储库以节约本地空间。-l
选项但[url]
是本地路径则还是会默认进行-l
选项的行为,但是如果指定的是--no-local
选项对本地仓库进行克隆则会走默认的git clone
流程:[-s, --shared]
.git/objects
的对象通过硬链接的方式链接到本地的克隆仓库,使用此选项不会再硬链接.git/objects
目录,而是在本地的.git/objects/info
目录中创建一个alternates
文件并在其中描述objects
原先的位置并进行共享使用。git commit
内部可能自动调用git gc --atuo
)删除的,从而导致仓库被破坏。-s
选项克隆的存储库中运行git repack
时,如果没有指定--local,-l
选项,则会将源存储库中的objects
复制到克隆存储库中的一个包里面,从而消除了--shared
选项带来的共享效果和节省的空间。直接运行git gc
是安全的,因为默认使用的--local,-l
选项。-s
选项指定的仓库中打破对共享的依赖,则可以使用git repack -a
命令将源存储库中的所有对象复制到克隆的存储库的一个包中。[--no-hardlinks]
.git/objects
中的内容而不是使用硬链接的形式,在进行Git存储库备份时这个选项就很有用。[-q, --quite]
[-n, --no-checkout]
[--bare]
<directory>/.git
目录也不会将管理文件放到<directory>/.git
中,而是为自己创建一个<directory>
或者<directory>.git
目录,里面保存的就是实际的Git数据库。这个选项也默认是--no-checkout
的,不会检出任何HEAD,也不会自动跟踪任何远程分支,也不会创建相关的配置变量。[--mirror]
--bare
,对比--bare
,--mirror
不仅仅映射源的本地分支到目标的本地分支,它还映射所有引用(包括远程跟踪分支,笔记等),并设置refspec配置,以便所有这些引用都被目标存储库中的git远程更新覆盖。--bare
和--mirror
都是针对服务器使用,因为服务器只需要保存Git存储数据库而不需要实际操作git命令,所以当你在这两个选项创建的存储库执行Git命令会得到下面的打印:fatal: this operation must be run in a work tree
[-o <name>, --origin <name>]
<name>
来跟踪远程仓库。[-b <name>, --branch <name>]
<name>
分支。[-u <upload-pack>, --upload-pack <upload-pack>]
/usr/bin/git-upload-pack
,当服务器的git运行时会自动找到此路径的程序。[--reference[-if-able] <repository>]
.git/objects/info/alternates
文件来从引用源存储库来获取objects
,使用已经存在的Git存储库作为替代将会需要更少的objects
被从源存储库拷贝过来,从而降低网络和本地存储成本。当使用--reference-if-able
时,会跳过不存在的目录,并发出警告,而不是中止克隆。[--dissociate]
--reference
引用的Git存储库借用objects
对象仅减少网络传输,并且在通过对借用objects
进行必要的本地复制来进行克隆后,停止从引用库中借用对象。当本地克隆已经从另一个存储库借用objects
时,可以使用此选项来停止新存储库从相同的存储库借用objects
。此选项也主要用于Git服务器。[--separate-git-dir <git dir>]
git init
相关选项获取此选项作用。[--depth <depth>]
<depth>
指定,并获取所有分支顶部提交往后<depth>
提交数量克隆到本地。如果也想简单克隆子模块也可以传递--shallow-submodules
选项。[--[no-]single-branch]
--single-branch
只会克隆Git存储库中指定的一个分支,远程Git存储库中其他分支不会在本地被克隆下来,也不会在本地跟踪其他远程分支,只会跟踪单个远程分支。[--no-tags]
remote.<remote>.tarOpt=--no-tags
,以确保后续git pull
和git fetch
也不会操作到标签,除非显式的操作标签。--single-branch
一起使用,以维护单个分支,在只维护某个缺省分支时很有用。[--recurse-submodules[=<pathspec>]]
<pathspec>
初始化并克隆子模块,如果没有指定<pathspec>
则所有子模块都被初始化和克隆。对于有多个条目的<parhspec>
可以多次给出此选项。git submodule update --init --recursive <pathspec>
。[--[no-]shallow-submodules]
[--[no-]remote-submodules]
--remote
选项传递给git submodule update
。[-j <n>, --jobs <n>]
submodule.fetchJobs
。[--sparse]
[--]
<repository>
https
协议也可以是ssh
协议或者git
协议等等。[<directory>]
-v, --verbose
[-c <key>=<value>, --config <key>=<value]
권장 학습: " Git 튜토리얼 》
위 내용은 git Warehouse를 얻기 위한 git init 및 git clone의 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!