这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
什么是git?
Git is a free and open source distributed versioncontrol system designed to handle everything from small to very large projects with speed and efficiency.
前言
版本管理在开发中是非常重要并且必不可少的部分,进行版本控制可以记录一个或多个文件内容的变化,并且方便将来查阅特定版本以及对版本进行系统的修订,进行合适的版本管理能够有效提高项目开发进度。
在git之前,出现了SVN
相对来说SVN更加简洁,所有同时掌握 Git 和 SVN 的开发者都必须承认,Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握,还必须掌握rebase和merge的区别,fetch和pull的区别等,除此之外,还有cherry-pick,submodule,stash等功能,仅是这些名词听着都很绕。
在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。
目前主要是使用Github和Gitlab,其中可以在自己的服务器上搭建Gitlab,更适合团队内部使用,Gitee相对来说主要是国内。
主要区别
- 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
- 2、Git 把内容按元数据方式存储,而 SVN 是按文件: 所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
- 3、Git 分支和 SVN 的分支不同: 分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
- 4、Git 没有一个全局的版本号,而 SVN 有: 目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
- 5、Git 的内容完整性要优于 SVN: Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
一、本地Git配置
1.1配置用户信息
- Git bash here
$ git config --global user.name "boom1999"$ git config --global user.email "lingzhicheng@zjut.edu.cn"$ git config --list
1.2生成SSH Key
- Git bash here
$ ssh-keygen -t rsa -C "lingzhicheng@zjut.edu.cn"
- 添加SSH Key
将提示位置(/c/Users/xxx/.ssh/id_rsa)的公钥(id_rsa.pub)内容复制粘贴至github > setting > SSH and GPG keys> key 注意不要弄混公钥和私钥 若只在某一个Repo中使用,可在此Repo中setting > Deploy Keys中添加公钥
二、从本地上传Repositories
:memo:本地创建Repo
- 新建目录/选择目录
- Git bash here 进入命令行操作
新建文件
$ mkdir 文件名进入文件夹$ cd 文件名 - 初始化git仓库
$ git init - 查看文件内容检查是否配置成功
$ ls -la
至此git仓库初始化结束,默认叫master分支
- 新建测试(dev)分支
$ git checkout -b dev - 检查git状态
$ git status
- 使用编辑器在文件夹中编辑内容,测试和执行
- 提交文件至缓存区(用
git add .提交目录下所有文件)$ git add index.md
- 撤销缓存内容
$ git rm --cached index.md
- 发布版本
$ git commit -m 'This is a commit.' - 查看版本日志(--graph)
$ git log
- 将测试分支合并到主分支
切换回主分支
$ git checkout master执行合并操作$ git merge dev删除dev分支$ git branch -d dev
Repo上传
- 在Github上新建项目,复制生成项目对应的SSH地址
$ git remote add origin git@github.com:boom1999/gitdemo.git
- 第一次推送本地分支(+u将本地和远程分支关联)
$ git push -u origin master - 以后推送本地分支
$ git push origin master - 推送其他分支(如dev)
$ git push origin dev
若有提示👇,请参照上文配置SSH Keys
ERROR: Permission to boom1999/gitdemo.git denied to deploy key
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
三、从远程clone Repositories到本地
- 这是第二种方式,即现在GitHub上创建项目,或从已有的项目clone到另一台机器。
- 在Github上新建项目,复制生成项目对应的SSH地址
$ git clone git@github.com:boom1999/gitdemo.git$ cd gitdemo$ ls -la