git 查看某些文档的历史版本_10分钟了解git
这是一个针对初学者的教程,我会基于Github来讲解git,尽可能在短时间内让大家了解git的核心理念和功能。
什么是版本控制
版本控制系统记录了一段时间内对一个文件或一组文件的更改,以便我们以后可以调出之前的特定版本。因此,理想情况下,我们可以使用版本控制系统管理计算机上的任何文件。
为什么要版本控制
版本控制系统使得我们能够将文件还原到以前的某个状态,将整个项目还原到以前的某个状态,查看一段时间内所做的更改。如果代码出现了问题,能够查看最后一次是谁的修改,谁引入了问题以及何时,哪里的修改引入的问题等等。使用版本控制系统还意味着,如果我们不小心把文件改坏了或弄丢了,我们通常都可以轻松恢复到之前的正常状态。有时我们想知道“谁写的这些烂代码”:),通过git我们就能发现,原来是自己写的。
什么是Git
Git是一个版本控制系统,用于跟踪电脑上文件的更改,并且当有多人共同更改文件时,git能够进行相关的协做。Git是一个分布式版本控制系统。因此,Git并不必依赖某个服务器来存储项目文件的所有版本,每个用户都“克隆”仓库(文件的集合)的副本,并在自己的硬盘上拥有项目的完整历史记录。用户本地的克隆具有原始文档的所有数据,而原始文档本身存储在服务器或第三方托管服务(如GitHub)上。
Git帮助我们跟踪对代码所做的更改。 如果在编码过程中的任何时候遇到严重的错误,并且我们不知道是什么原因导致的,那么可以随时恢复到之前的某个稳定状态。对我们调试代码非常有帮助。我们也可以查看所有人对代码进行了历史更改。
Git作为分布式版本控制系统,还可以帮助多人之间同步代码。想象一下您和您的同事正在合作一个项目。你们两个都在修改同一个项目的文件。Git接受您和您的朋友分别进行的独立更改,并将它们合并到单个“Master”仓库中。通过使用Git,可以确保大家都在使用最新版本的代码。所以,我们就不用相互发送文件并处理大量的各种版本文件副本的麻烦。
所以为什么要用git
版本控制
团队协作
Git的相关概念
Repository:简称repo,中文叫仓库。里面存放我们的文件,对程序员来讲,是我们存放代码的集合。程序员使用git,一般是创建一个repo,然后添加代码,之后不断的修改。
modified(修改):文件被修改,但是还没有背存储到本地仓库中
staged(暂存):被修改的文件被标记为将要提交到本地仓库中
committed(提交):文件的更改被存储到了本地仓库中。
Git工作流中中文档的状态
git的主要命令
命令 | 用途 |
---|---|
git add | 将工作目录中的文件添加到暂存区 |
git commit | 将所有暂存的文件添加到本地仓库 |
git push | 将本地仓库中的所有已提交的文件添加到远程仓库 |
git fetch | 将文件从远程仓库获取到本地仓库,但是并不进入工作目录 |
git merge | 将文件从本地仓库合并入工作目录中 |
git pull |
将文件从远程仓库直接获取到工作目录中。 它等效于git fetch 加git merge 。
|
git init | 初始化一个git仓库 |
关于Git的基本概念和命令就介绍的差不多了,下面进行一些实际操作。
第0步:
我们需要做的前两件事是安装git,并创建一个免费的GitHub帐户。
请按照git官网的说明安装git(如果尚未安装)。请注意,对于本教程,我们将仅在命令行上使用git。我认为先使用git命令学习git,然后再尝试git GUI会更容易。
完成此操作后,到Github官网创建一个GitHub帐户。目前公共仓库和私有仓库都是免费的,很香。
第一步:配置git
需要认真配置Git用户名和电子邮件地址,因为每次Git提交都将使用此信息标识作者。
$ git config --global user.name "YOUR_USERNAME"$ git config --global user.email "example@example.com"$ git config --global --list # To check the info you just provided
第二步:配置SSH keys(可选项)
当我们使用Github来协作写代码时,有两种方式HTTPS和SSH,这里推荐使用SSH的方式。
使用SSH协议,我们可以连接到远程服务器以及各种云服务进行身份验证。使用SSH密钥,我们可以连接到GitHub,而无需在每次访问时都提供用户名或密码。
Github上提供了比较全面的说明,大家可以参考,经过下面三步,就可以使用SSH的方式来使用Github了:
检查电脑上是否已经有SSH key
生成SSH key
将SSH key添加到自己的Github账户
测试添加是否成功
配置了SSH之后,我们在使用Github或者Gitlab来管理代码的时候,就需要使用SSH的地址,比如下面这样
git@github.com/username/reponame.git
第三步:开始Git
如果将代码存放在Github,推荐在Github上创建仓库,点击链接进行创建。
创建完毕后,通过git clone创建本地关联的仓库。
git clone git@github.com:meilab/gitdemo.git
进入到本地仓库修改文件,进行后续操作。
也可以有其他方式,如下图所示:
第四步:修改文件,加入缓存区
# 将所有修改加入缓存区,等待提交
$ git add .
# 添加某个特定文件到缓存区
$ git add README.md
查看缓存区状态
$ git status
将改动提交到本地仓库
注意我们需要一段文字描述(下面命令中的First commit),来向大家描述我们都做了哪些改动
$ git commit -m "First commit"
$ git push -u origin master
这之后,我们在去Github的网页查看的话,我们会看到我们的改动已经能够在网站上看到了。
git push
命令会将我们本地仓库的改动同步到远端仓库(在Github上)
同步到Github
git push
命令会将我们本地仓库的改动同步到远端仓库(在Github上)
$ git push -u origin master
这之后,我们在去Github的网页查看的话,我们会看到我们的改动已经能够在网站上看到了。
常用的命令
git checkout:能够回退到某个之前的版本
git log:查看改动历史
多人合作
想象一下我和同事正在合作一个项目。大家都在同一个项目中修改文件。每次我进行一些更改并将其推送到主仓库中时,我的同事就必须将我推送到git仓库中的更改进行拉取,从而保持代码的一致性。
为了确保每次开始工作时都在使用最新版本的git仓库,可以使用git pull命令。
$ git pull origin master
.gitignore是干什么的
.gitignore
告诉git应该忽略哪些文件。通常用于避免从工作目录中提交对其他协作者无用的文件,例如编译的中间文件,框架产生的临时文件,IDE创建的临时文件等。
所以不同的项目,我们可能需要不同的.gitignore
,比如nodejs的项目,我们就需要把node_modules忽略掉。
Stage是干什么的,为什么要有这么一个状态
Stage主要用于处理一些复杂场景下的需求:
修改了几个文件,在不放弃任何修改的情况下,其中一个文件不想提交,如何操作?(没add : git add 已经add: git reset --soft )
修改到一半的文件,突然间不需要或者放弃修改了,怎么恢复未修改前文件?(git checkout)
代码写一半,被打断去做其他功能开发,未完成代码保存?(git stash)
代码写一半,发现忘记切换分支了?(git stash & git checkout)
代码需要回滚了?(git reset)
上面提到的 checkout & stash & reset 等命令,通过不同的参数搭配使用,可以在工作区,暂存区和本地仓库之间,轻松进行数据切换。
命令 | 作用 |
---|---|
git reset --soft | 暂存区->工作区 |
git reset --mixed | 版本库->暂存区 |
git reset --hard | 版本库->暂存区->工作区 |
如果觉得文章对你有帮助,欢迎点击再看,让更多朋友看到
git 查看某些文档的历史版本_10分钟了解git相关推荐
- git 查看某些文档的历史版本_Git 教程(二)log 命令的使用
使用 Git 进行版本控制时,要习惯他的工作流程,Git 的工作流程是,先在工作区创建项目并编写代码,然后将写好的文件添加到暂存区,最后将暂存区里的文件提交到历史版本库.如下图所示: 每向版本历史库做 ...
- word文档及其历史版本的备份
序 计算机,硬件,软件都是靠不住的.如何备份文件及其历史版本呢? WPS word超过10MB,需要开会员才能云同步. 百度网盘同步空间 可以备份文件,但不开会员没办法备份历史版本. 华为云盘 华为云 ...
- Rasa 文档 中英文翻译版本 3 - Tutorial: Building Assistants
Rasa 文档 中英文翻译版本 3 - Tutorial: Building Assistants https://rasa.com/docs/rasa/user-guide/building-ass ...
- android studio 如何查看帮助文档
AS版本:3.5.3 问题描述:Ctrl+Q查看帮助文档时出现 Fetching Documentation,原因是需要科学上网 方案一:下载文档到本地(https://www.cnblogs.com ...
- android pdfview 显示目录,Android 查看pdf文档——PDFView
最近在搞Android显示word文档跟pdf文档的显示,分享一个显示pdf文档的小Demo(ps:word文档的显示网上挺多的). 这里使用的是PDFView,是GitHub上面的一个开源项目点 ...
- Word处理控件Aspose.Words功能演示:使用 Java 处理 Word 文档的原始版本或修订版本
Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word. A ...
- Android 查看pdf文档——PDFView
最近在搞Android显示word文档跟pdf文档的显示,分享一个显示pdf文档的小Demo(ps:word文档的显示网上挺多的). 这里使用的是PDFView,是GitHub上面的一个开源项目点击查 ...
- python 帮助文档,撰写函数文档,并查看函数文档
python 帮助文档,撰写函数文档,并查看函数文档 定义函数 def test(a,b):'''参数:a:整数b:整数返回值:a+b'''return a+b 运行函数 test(11,22) 33 ...
- 在Eclipse中查看Javadoc文档
当我们需要查看JDK中类的API介绍时,通常采用的方式是直接查看离线文档或者某些网站提供的在线文档.如下图: 而本文档最终达到的效果是,不需要切换出eclipse,直接在eclipse中查看JDK的J ...
最新文章
- Mathematica开始学习,
- java的4种内部类
- P3261-[JLOI2015]城池攻占【左偏树】
- javascript调用一个函数(对象),new和直接调用的区别
- android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法
- springboot 定时器_springBoot的定时器应该这样写
- Springboot全局异常处理GlobalExceptionHandler
- Nginx系列(5):Web服务器分析之Linux I/O(理论中)
- 如何使用ccs软件创建工程
- Android科大讯飞语音合成
- iOS 百度地图_自定义Annotation大头针_修改大头针图片
- bind dns mysql,linux下bind9.8+dlz+mysql 的dns服务器局域网配置
- 飞鸽短信平台发送国际短信
- pc station v15 博图_PC STATION下载报错-工业支持中心-西门子中国
- zbb20170811 linux 给用户授予文件夹权限
- 设计模式(四)责任链模式——责任链模式结构
- 单例模式-DoubleCheck
- 京东X无人超市落户西安大雁塔 全球首个5A景区店诞生
- FPGA 视频 拼接器 4K60(3840x2160P60Hz)4路田字格或四竖条输出
- 打破壁垒,中兴新支点国产操作系统向所有用户免费使用
热门文章
- python 画图--简单开始及折线图
- Type is unsupported, or the types of the items don‘t match field type in CollectionDef.
- [.NET]使用十年股价对比各种序列化技术
- javascript 计算后结果失精度的问题解决
- luogu P1156 垃圾陷阱
- [ 总结 ] 删除通过find查找到的文件
- [转载]让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
- Android技巧:003使用Intent连接多个活动
- spark第十篇:Spark与Kafka整合
- Shell中通过机器人发送钉钉群消息