网站首页 > 基础教程 正文
Git是由Linux之父Linus Torvalds为了代替Linux内核开发中用的商业版本管理软件BitKeeper在半年内开发的自由版本管理软件。
其根本特点是去中心化、轻量级索引(commit)和分支管理,通过分布式保证可以高效、安全软件版本开发。
后续git托管平台在git基本功能基础上,开发在线Github、Gitlab和Gitee(国产)等托管平台,并增加了Fork和Pull Request(Gitlab中为Merge request
)等社交性质的协作功能,使得git迅速替代CVS、SVN等版本管理系统,成了目前版本管理的代名词。
Git基本功能中,使用最多,最频繁的功能必属git clone。
git clone
git clone顾名思义就是在当前位置克隆一个一模一样的源码仓库。当然默认情况下git clone除了克隆了一份源码git仓库数据(.git目录)外,还会默认执行git checkout在当前目录下生成一份main分支的最近commit的工作目录,即仓库中的文件和目录,这不是git源码仓库的一部分,这是git和SVN不同的之处之一(SVN指定分支然后检出一份代码出来)。
git clone的基本格式:
git clone <仓库的地址>
其中仓库地址,可以是远程地址,也可以是本地的目录,你可以从任何一个本地.git目录中clone出一份新的仓库出来。
远程仓库地址,可以支持https、http,ssh甚至可以ftp等其他协议,可以是公共托管平台的github、gitlab或者gitee地址,也可以是私有自建git服务平台地址。
比如我们clone一个虫虫gitlab的学习资料仓库gitlabFAQ,可以用
git clone https://gitee.com/ijz/gitlabFAQ
或者用ssh地址(需要先在平台添加你的ssh证书公钥)。
git clone git@gitee.com:ijz/gitlabFAQ.git
注意所有git操作都需要安装一个git客户端,在window下为git for windows
现在安装成功后,就可以使用各种git命令了,在任意目录下,右键打开“git bash here”,然后把上面的明知复制进去,会车执行:
这样就会在当前目录在你当前的工作目录中创建一个名为gitlabFAQ目录
目录下就包含了源码仓库.git目录和项目文件
指定分支
如果在特定的分支下,比如dev,clone时候可以通过-b选项指定特定分支:
git clone -b dev git@gitee.com:ijz/gitlabFAQ.git
这样在工作区生成的就是dev分支对应的文件。
克隆裸仓库
如果为了保存和备份等原因克隆仓库,可以通过--bare只克隆一个裸仓库,这样只会下载git对象,而不是在本地生成工作区,就可以节约一般的文件空间,和提高生成速度。
git clone --bare git@gitee.com:ijz/gitlabFAQ.git
这样生成的目录为gitlabFAQ.git,其中就只有git对象。
克隆深度
对于大型仓库,clone往往非常耗时,耗带宽,因为clone默认都是会获取到仓库所有历史记录中的所有快照。但是很多时候我们往往只需要最新源代码文件即可,为此我们可以使用git clone另一个选项--depth=n,n表示clone的深度,n=1表示只clone最新一次commit相关的git对象。
git clone --depth=1 git@gitee.com:ijz/gitlabFAQ.git
好了,以上就是git clone的常用说明和使用方法。
- 上一篇: git 子模块
- 下一篇: git merge和git rebase有什么区别?
猜你喜欢
- 2025-04-23 Git是什么?这6个基础概念你需要了解
- 2025-04-23 git merge和git rebase有什么区别?
- 2025-04-23 git 子模块
- 2025-04-23 Git 分支管理策略汇总
- 2025-04-23 掌握这 20 个 Git 命令,成为团队协作高手!
- 2025-04-23 Git使用的小技巧
- 2025-04-23 git笔记
- 2025-04-23 `git fetch`、`git clone` 和 `git pull` 的详细对比
- 2024-07-17 听说你还在用 Git 命令解决代码冲突?
- 2024-07-17 git pull/push 命令时每次都需要输入name/password
- 04-23【docker系列】打造个人私有网盘zfile
- 04-23Dockerfile最佳实践:构建优雅高效的容器镜像
- 04-23Dockerfile优化有技巧,Docker镜像构建提速10倍!
- 04-23IT工程师都需要掌握的容器技术之Dockerfile
- 04-23Dockerfile简单使用
- 04-23Dockerfile编写规范:打造属于你的容器化世界
- 04-23探秘Dockerfile:编写规范与最佳实践
- 04-23Dockerfile详解
- 最近发表
- 标签列表
-
- 菜鸟教程 (58)
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)