class="hljs-ln-code"> class="hljs-ln-line"> url = file:///remote_dir
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line"> fetch = +refs/heads/*:refs/remotes/origin/*
  • class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

            远程版本库remote origin。url地址为file:///remote_dir, 拉取时,本地分支与远程分支的关系,这里配置了前缀,例如master分支的对应关系为refs/heads/master对应refs/remotes/origin/master。

            第三步,此时,本地可以拉取到远程的数据,但无法推送本地数据,执行git push --set-upstream origin master,

    1. git push,推送数据的指令。
    2. set-upstream,操作类型为与远程分支建立联系。
    3. origin master,远程版本库的名称,远程版本库的分支名称。本地分支是从上下文中获取得到的。

             之后,便可以在local,origin之间进行数据同步。

    远程到本地

            远程数据拉取到本地的指令有三个,clone,fetch,pull。

    3.1 clone

            克隆版本库,指令的格式如下:

    1. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1"> class="hljs-ln-code"> class="hljs-ln-line">git clone [--template=<template_directory>]
    2. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="2"> class="hljs-ln-code"> class="hljs-ln-line"> [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
    3. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line"> [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
    4. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="4"> class="hljs-ln-code"> class="hljs-ln-line"> [--dissociate] [--separate-git-dir <git dir>]
    5. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="5"> class="hljs-ln-code"> class="hljs-ln-line"> [--depth <depth>] [--[no-]single-branch] [--no-tags]
    6. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="6"> class="hljs-ln-code"> class="hljs-ln-line"> [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
    7. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="7"> class="hljs-ln-code"> class="hljs-ln-line"> [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--] <repository>
    8. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="8"> class="hljs-ln-code"> class="hljs-ln-line"> [<directory>]
    class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            -l,--local:表示远程版本库与当前版本库是在同一台电脑上,所以不会拷贝,而是使用硬链接。Windows系统没有硬链接的概念。

            --no-hardlinks:不使用硬链接,会复制所有内容。

            --mirror:创建远程版本库的镜像。它会克隆所有的内容,包括标签,远程ref, 标签,钩子,配置等。默认情况下,克隆只有文件,引用(分支和符号引用)。

            -o, origin:指定远程版本库的名称,默认为origin

            -b,branch:指定远程版本库的分支,默认为所有分支。

            --[no-]single-branch:只克隆branch可达的提交历史。

            --depth :浅克隆,只保留最近N个提交历史。

            --shallow-since=:浅克隆,只保留date之后的提交历史。

            --shallow-exclude=:浅克隆,只保留revision之后的提交历史。

            --no-tags:不克隆标签。

            --template, -s shared,--bare, --sparate-git-dir,不在重复介绍。

            -q,-v是公共选项。

            -n, no-checkout:克隆之后,不切换分支。

            其他略

    3.2 fetch

            Download objects and refs from another repository. 

            从远程版本库中下载objects和refs 

    格式:

    git fetch [<options>] [<repository> [<refspec>…]] class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            options:clone命令中也会拉取远程版本库的数据,所以大部分的选项含义都是相同的。

            repository表示远程版本库的名称.

            refspec表示远程版本库的分支。不指定时,拉取所有

    3.3 pull

            fetch from and integrate with another repository or a local branch. 

            从远程版本库拉取内容,并且本地的远程追踪分支与当前分支整合。

            merge,合并。

      rebase,变基,需要配置remote.name.rebase=true,name为远程版本库的名称。

           它本质是结合fetch命令和merge 或 rebase命令。它的所有选项都来源于这三个命令。

    本地到远程

            本地数据推送到远程的命令只有一个,push 

    4.1 push

            Update remote refs along with associated objects.

            把本地的更新推送到远程版本库中。 

    格式:

    1. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1"> class="hljs-ln-code"> class="hljs-ln-line">git push [--all | --mirror | --tags] [--follow-tags]
    2. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="2"> class="hljs-ln-code"> class="hljs-ln-line">      [--atomic] [-n | --dry-run]
    3. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line">      [--receive-pack=<git-receive-pack>]
    4. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="4"> class="hljs-ln-code"> class="hljs-ln-line"> [--repo=<repository>] [-f | --force] [-d | --delete]
    5. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="5"> class="hljs-ln-code"> class="hljs-ln-line">      [--prune] [-v | --verbose]
    6. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="6"> class="hljs-ln-code"> class="hljs-ln-line"> [-u | --set-upstream]
    7. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="7"> class="hljs-ln-code"> class="hljs-ln-line">      [-o <string> | --push-option=<string>]
    8. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="8"> class="hljs-ln-code"> class="hljs-ln-line"> [--[no-]signed|--signed=(true|false|if-asked)]
    9. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="9"> class="hljs-ln-code"> class="hljs-ln-line"> [--force-with-lease[=<refname>[:<expect>]]]
    10. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="10"> class="hljs-ln-code"> class="hljs-ln-line"> [--no-verify] [<repository> [<refspec>…]]
    class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            --all,推送所有的分支,默认选项。

            --tags,推送所有的标签,默认选项。

            --repo=:指定远程版本库的名称。

            -o, push-option:给远程版本库的post-receive和pre-receive钩子函数传递参数。

            --[no]force-with-lease:默认情况下,本地提交不是远程提交的子提交时,会拒绝推送,例如本地为A,B,C,而远程为A,B,C,D,E。此时推送会失败。强制推送会导致后续的D,E提交被删除。会将远程的DRG更新为本地的DRG。不要在多人协作的版本库上添加此选项,会删除别人的提交。

            -d delete,删除推送关系。即remote.name.pushUrl和push相关选项会被删除

            -p prune,同步引用,删除本地存在,远程不存在的引用。

            -u --set-upstream,在推送时,同时建立推送关系。默认值。

            --[no-]signed:是否提供GPG签名。

            --[no-]verify:推送过程中是否建立校验,本质是否启用pre-push钩子函数。

    其他

    5.1 ls-remote

            查看远程版本库的相关信息

    格式:

    1. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1"> class="hljs-ln-code"> class="hljs-ln-line">git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]
    2. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="2"> class="hljs-ln-code"> class="hljs-ln-line"> [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]
    3. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line"> [--symref] [<repository> [<refs>…]]
    class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            --heads显示本地版本库与远程版本库建立关系的分支HEAD,在refs/heads目录下可以打开查看。运行命令和手动打开文件是等价的。

            --tags显示远程版本库的标签。

            --refs显示commit对象的ID。

            --symref显示commit对象的引用,通常都是HEAD

            --get-url显示远程版本库的URL地址。

            --exit-code:在远程版本库没有找到对应的分支时,返回2,找到时,返回0。

            --sort-key:排序,它的值有两个version:refname, v:refname。

    示例:

            // 查看远程版本库的URL地址

            git ls-remote --get-url

            // 查看远程版本库的tag

            git ls-remote --tags

            // 查看本地版本库与远程版本库的分支映射关系

            git ls-remote,或git remote -v show origin

    5.2 remote

            remote,本地版本库与远程版本库建立关系的命令,

            远程版本库:新增,删除,修改,查看,重命名。

            分支映射关系:建立,删除,同步分支信息。

            版本库的url:新增,删除,修改,查看。

    5.2.1 添加add

    格式: 

    git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            name是远程标识,可以随意取,默认是origin,

            url是远程版本库地址的URL。

            t :只拉取远程版本库中对应分支的内容,不是所有的分支。它体现在配置项的fetch = +refs/heads/:refs/remotes/origin/,*会变为branch的名称

            no-tags:不拉取远程版本库的标签。

            tags:拉取远程版本库的标签。

            f,全称为fetch,在建立关系之后,执行一次fetch(拉取)的步骤。

    示例:

            git remote add origin file:///remote_dir

    5.2.2 查看

            执行git remote -v,显示推送,拉取的远程版本库信息

    1. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1"> class="hljs-ln-code"> class="hljs-ln-line">origin file:///remote_dir (fetch)
    2. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="2"> class="hljs-ln-code"> class="hljs-ln-line">origin file:///remote_dir (push)
    class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    5.2.3 重命名

            重命名远程版本库的名称,不是分支的名称,默认的名称为origin.

    格式:

    git remote rename <oldName> <newName> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            oldName:旧名称

            newName:新名称

    示例:

            git remote rename origin test

    5.2.4 删除

            删除远程版本库信息

    格式:

            git remote remove

    选项:

            name:版本库名称

    示例:

            git remote remove origin

    5.2.5 分支映射

            添加:set-head, set-branches

      删除:set-head

      同步:prune。

      本地版本库origin/branch_name去追踪远程的branch_name分支。

    格式:

    git remote set-head <remote_name> (-a | --auto | -d | --delete | <branch>) class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            a:auto的缩写,根据remote配置项去查找,自动建立这种映射关系。

            d:delete缩写,删除追踪分支。删除之后无法执行push操作。

            branch:分支名称。

            set-head:默认建立当前分支的关系。

            若要指定其他分支,使用set-branches命令。

    格式:

    git remote set-branches [--add] <name> <branch> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            add:是追加的意思,执行之后会出现多个fetch变量。

            name:是远程文件的标识,branch是分支的名称。

    示例:

            git remote set-branches [--add] origin master,打开本地版本库的config文件,会发现多了一行

            fetch = +refs/heads/master:refs/remotes/origin/master

            prune删除在远程版本库中不存在,在本地版本库中存在的分支。

    格式:

    git remote prune --dry-run <name> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    选项:

            dry-run:模拟运行

            name:远程版本库的名称,当只有一个时,无需指定,默认为origin。

    示例:

            git remote prune –dry-run origin

    5.2.6 url地址

            url地址的新增,删除,修改,查看。选项与其他指令选项的含义完全相同。

            新增:git remote set-url --add [--push]

            查看:git remote get-url [--push] [--all]

            修改:git remote set-url [--push] []

            删除:git remote set-url --delete [--push]

    data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/weixin_58869843/article/details/145438333","extend1":"pc","ab":"new"}">>
    注:本文转载自blog.csdn.net的蜗牛旅行1899的文章"https://blog.csdn.net/weixin_58869843/article/details/145438333"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
    复制链接

    评论记录:

    未查询到任何数据!