GIT命令

获取和创建命令

init

init主要是用来创建一个git库或者重新初始化一个已经存在的库。这个命令会 创建一个.git目录,其中会包含objects、refs/heads、refs/tags子目录以及一些模版文件,并且一个指向主分支HEAD的初始的HEAD文件也同时被创建了。在一个已经存在的库上进行git init命令是安全的,不用担心会对该库的文件进行重写覆盖。
1、命令格式
git init [-q | --quiet] [--bare] [--template=<template_directory>]
[--separate-git-dir <git dir>]
[--shared[=<permissions>]] [directory]
2、参数选项
1) -q  --quiet
只输出错误和警告信息,其他输出会被禁止。
2) --bare
创建一个的裸库,如果GIT_DIR环境变量没有设置,就会将当前目录设置为该环境变量。
3) --template=<template_directory>
指明使用的模版目录。
4) --separate-git-dir=<git dir>
创建一个文本文件包含了真正库的路径代替在指定的路径($GIT_DIR 或者 ./.git)中初始化仓库。如果是重新初始化,则会将库转移至新的路径下。
5) --shared[=(false|true|umask|group|all|world|everybody|0xxx)]
指明该库被多个用户共享。这样就可以让同一个工作组的人员向库提交文件。之后的参数指明了权限要求。

clone

clone主要用来克隆一个库到新的目录下,对被克隆的库的各个分支创建远程追踪(remote-tracking)分支,创建并检验从被克隆库的存活分支所分过来的初始分支。克隆之后:不带参数的简单命令(git fetch)就能更新所有追踪的分支;不带参数的命令(git pull)就能将远程的主分支(master branch)合并到本地的主分支。这些默认的配置需要通过 在 refs/remotes/origin 下引用远程分支的heads 或者初始化 remote.origin.url 和 remote.origin.fetch 两个配置变量。
1、命令格式
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][--recursive | --recurse-submodules] [--[no-]shallow-submodules][--jobs <n>] [--] <repository> [<directory>]

2、参数选项

1) --local -l
当被克隆的库在本地的机器上时, 通过复制HEAD文件以及objects、refs两个目录下的文件来克隆库(repository)。如果repo被指明为本地路径,--local本质上是一个无效的操作符。如果repo被指定为一个URL,这个参数会被忽略。当 指明为本地路径时 --no-local会被常规的Git 传输方法重载。
2) --no-hardlinks
强制将克隆进程由利用hardlinks转换到复制 .git/objects目录下的所有文件。
3) --shared  -s
当不利用hard links 克隆本地repo时,自动建立 .git/objects/info/alternates 来共享源repo。这会导致repo没有自己的对象。
4) --reference[-if-able] <repository>
如果引用的repo在本地机器上,自动的建立.git/objects/info/alternates 来从引用的repo获取对象。利用一个已经存在的repo作为可以替换的repo,可以减少对克隆对象的文件复制以减少网络和本地存储消耗。当使用--reference-if-able,会对不存在的目录弹出警告并跳过而不是终止克隆。
5) --dissociate
借用由--reference之命的引用对象来减少网络传输,当克隆的是本地的借用对象时该借用会被终止。
6) --quiet -q
只输出错误和警告信息,其他输出会被禁止。
7) --verbose   -v
完整运行,不影响输出。
8) --progress
操作执行状态会被默认地输出到终端,除非设置了 -q 。这个标志在标准错误流没有被定向时也会强制的将执行状态输出到终端。
9) --no-checkout  -no
在clone完成后不检测HEAD。
10) --bare
创建一个裸repo。
11)--mirror
创建一个源repo的镜像,暗含了 --bare。相比于 -- bare,--mirror不仅将源的本地分支映射到目标本地分支,也会映射其所有的refs(包括远程追踪分支、notes等)并建立一个引用说明配置(refs configuration)使得所有的refs都会通过目的repo中的 git remote update 重写。
12) --origin <name>   -o <name>
利用 <name> 代替 远程名字 origin 来保持对上游repo的追踪
13) --branch <name>   -b <name>
新建的HEAD指向名为<name>的分支,而不是指向被克隆repo的HEAD指向的分支。在非裸repo中,这个分支将会被check out。
14) --upload-pack <upload-pack>    -u <upload-pack>
通过ssh获取需要克隆的repo,需要指明一个非默认路径给另一端的命令。
15) --template=<template_directory>
指明所使用的模版目录。
16) --config <key>=<value>  -c <key>=<value>
对新建的repo进行变量配置,在库被初始化后直接生效。
17) --depth <depth>
根据给出的历史中的提交编号来创建一个浅层的克隆。
18) --shallow-since=<date>
根据指明的历史时间来创建一个浅层的clone。
19) --shallow-exclude=<revision>
根据排除某些分支或者标签来创建浅层的clone。
20) --[no-]single-branch
克隆由 --branch 选项或者 基础分支的远程HEAD所指向的单个分支。
21) --recursive  --recurse-submodules
克隆结束之后利用默认设置初始化所有子模块。等价于:git submodule update --init --recursive
22) --[no-]shallow-submodules
所有的子模块都是以depth为1的浅层clone。
23) --separate-git-dir=<git dir>
在指定的目录下放置克隆的库,然后设置一个与文件系无关的git符号指向它。
24)-j <n>  --jobs <n>
设置同时获取的子模块数量。
25)<repository>
设定被克隆的repo。通常利用git urls 来指定。
26)<directory>
克隆repo所安放的目录。

关于GIT URLS

通常情况下,URLs中都包含了所指定的传输协议、远程服务器地址、repo的路径。根据不同的协议,有些部分可以省去。Git支持ssh、git、http、https协议(ftp、ftps可用于 fetch但是低效,不建议使用)。git协议并不包含验证,因此使用时注意安全性。
各种协议的格式如下:
ssh://[user@]host.xz[:port]/path/to/repo.git/
[user@]host.xz:path/to/repo.git/    (基于ssh协议的一种可选方式)git://host.xz[:port]/path/to/repo.git/http[s]://host.xz[:port]/path/to/repo.git/ftp[s]://host.xz[:port]/path/to/repo.git/

ssh和git协议支持额外的 ~username 扩展:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/git://host.xz[:port]/~[user]/path/to/repo.git/[user@]host.xz:/~[user]/path/to/repo.git/
对于本地repo:
/path/to/repo.git/file:///path/to/repo.git/

Git本身并不会处理传输协议,都是利用 remote <transport> 的远程助手(remote helper)。如果远程助手不存在,需要用相关语句提前指明:  <transport> :: <address>   其中,<address> 可以是本地路径、服务器路径等。

如果在存在多个相似命名的远程repo而你又想用个不同的形式保存,可以使用urls替换语法配置来进行clone。
[url "<actual url base>"]insteadOf = <other url base>

如果仅仅是想在push时采用rewrite URLs:

[url "<actual url base>"]pushInsteadOf = <other url base>

GIT 命令学习:获取与创建项目相关推荐

  1. externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目

    前言 在我们日常工作开发中,Git是必不可少的版本控制软件,很多时候我们都用Git来管理我们的项目. 比较常用的有Github,Gitlab,Stash等. 因此对于Git命令的掌握是我们工作必备的能 ...

  2. Idea和使用git命令上传本地新项目到gitee上

    idea 第一步:创建本地仓库 第二步:正常add代码,提交到本地,然后到远程仓库 第三步:执行第一次提交的时候会失败 Push rejected:Push to origin/master was ...

  3. GIT的使用总结/GIT如和获取历史版本项目

    GIT 是一个多人同时开发的工具,团队之间互助开发. git只是一个版本控制软件,负责记录本地的代码版本,并且建立本地仓库存储. 负责存储的是云端代码记录网址 GitHub或者码云 GitHub是li ...

  4. Git命令学习总结(-)

    入职的第一天,让git命令直接给难住了,汗!使用习惯可视化的工具对于命令行早就忘记的一干二净.还好,回家自己练习一下,总会没有错的.git就不做简介了,版本管理除了svn就是git了,其他的都无所谓了 ...

  5. 史上最全Git命令学习:从基础出发,Java中高级面试题总结(全面)

    将暂存区的文件提交本地仓库: 将本地仓库的文件推送到远程仓库: Git文件的四种状态 根据一个文件是否已加入版本控制,可以把文件状态分为:Tracked(已跟踪)和Untracked(未跟踪),而tr ...

  6. git命令学习笔记2(路飞学城)

    新建一个代码仓库,下面适合个人用,邀请别人参加,一般不适合公司. 若是公司的话,应该创建的是一个组织,然后其他成员就可以申请读写权限了.一个组织中可以创建好多项目,然后分别对不同成员之间的权限分配. ...

  7. 简单git命令学习整理

    抽了空学习了廖雪峰老师git教程,然后对自己学习的几个命令做下笔记. git init : 初始化git仓库,会生成一个隐藏文件. .git ,没有特殊要求就不用去动它了哈. git add XXX( ...

  8. angularJs的学习笔记-01(创建项目)

    1,进入angular-phonecat目录  执行下面命令 git checkout -f step-0 然后访问 http://localhost:8000/app/  页面出现 "No ...

  9. git命令学习笔记1(路飞学城)

    为什么要版本控制呢?... 安装git: 开始创业初期: 当安装git第一次使用时可能会报下述错误: 需要对git进行配置一下,填写用户名和邮箱即可. rebase: 注意:使用rebase时,最好本 ...

最新文章

  1. struts2笔记01-环境搭建
  2. 字体大小的设置_老年人用智能手机,怎样更改字体大小?3种方法,手把手教您学会...
  3. java 文件 缓存_JAVA缓存技术
  4. mysql mvcc和行锁_mysql在RR的隔离级别下,究竟是通过MVCC解决幻读的还是通过行锁的next key算法解决的?...
  5. 首销价1999元起!OPPO K9 Pro开启预售:搭载天玑1200芯片
  6. python爬取小说基本信息_Python爬虫零基础实例---爬取小说吧小说内容到本地
  7. matlab 直方图 肥尾,概率分布细谈:厚尾、长尾、幂律、指数
  8. 扫描40亿可路由的 IPv4 地址后发现这些打印机的 IPP 端口遭暴露
  9. 帮内推 | 免费送50个推荐算法工程师的高薪offer!
  10. Web API-定时器
  11. 计算机应用技术基础 形考4,最新电大《计算机应用技术基础》形考作业任务01-03网考试题及答案...
  12. GridView 分页导航
  13. Atitit 提升开发效率几大策略 目录 1. 提升效率三原则 2 1.1. 更少的工作 2 1.2. 优化配置减少等待 2 1.3. 提升一次性处理能力 2 2. 方法提升 3 2.1. 分类优
  14. 数据治理(五):元数据管理
  15. Itunes 制作苹果手机铃声
  16. 初次打开QQ空间后IE卡死问题处理
  17. 联想T420S 黑苹果GPT+UEFI单系统安装
  18. 识别括号或花括号嵌套
  19. HeadPose Estimation头部姿态估计头部朝向(Android)
  20. clusterprolifer gsea 富集分析

热门文章

  1. PetaLiunx配置时sourcing bitbake报错解决方法
  2. javaMail简单发送邮件
  3. 神途boss_神途BOSS刷新了,女玩家以身冒险前往打骨魔洞
  4. mysql日期转为周数
  5. 生物特征识别六大技术,你知道多少?
  6. 使用css样式做出亚克力背景和透明背景
  7. Onenet麒麟迷你板开发过程【附程序】
  8. pms后端商品管理系统介绍
  9. 【本/硕毕业生】开题报告及论文指导思路和撰写事项的整理
  10. matlab正弦余弦与圆的关系