这是一个针对初学者的教程,我会基于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 fetchgit 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相关推荐

  1. git 查看某些文档的历史版本_Git 教程(二)log 命令的使用

    使用 Git 进行版本控制时,要习惯他的工作流程,Git 的工作流程是,先在工作区创建项目并编写代码,然后将写好的文件添加到暂存区,最后将暂存区里的文件提交到历史版本库.如下图所示: 每向版本历史库做 ...

  2. word文档及其历史版本的备份

    序 计算机,硬件,软件都是靠不住的.如何备份文件及其历史版本呢? WPS word超过10MB,需要开会员才能云同步. 百度网盘同步空间 可以备份文件,但不开会员没办法备份历史版本. 华为云盘 华为云 ...

  3. Rasa 文档 中英文翻译版本 3 - Tutorial: Building Assistants

    Rasa 文档 中英文翻译版本 3 - Tutorial: Building Assistants https://rasa.com/docs/rasa/user-guide/building-ass ...

  4. android studio 如何查看帮助文档

    AS版本:3.5.3 问题描述:Ctrl+Q查看帮助文档时出现 Fetching Documentation,原因是需要科学上网 方案一:下载文档到本地(https://www.cnblogs.com ...

  5. android pdfview 显示目录,Android 查看pdf文档——PDFView

    最近在搞Android显示word文档跟pdf文档的显示,分享一个显示pdf文档的小Demo(ps:word文档的显示网上挺多的).   这里使用的是PDFView,是GitHub上面的一个开源项目点 ...

  6. Word处理控件Aspose.Words功能演示:使用 Java 处理 Word 文档的原始版本或修订版本

    Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word. A ...

  7. Android 查看pdf文档——PDFView

    最近在搞Android显示word文档跟pdf文档的显示,分享一个显示pdf文档的小Demo(ps:word文档的显示网上挺多的). 这里使用的是PDFView,是GitHub上面的一个开源项目点击查 ...

  8. python 帮助文档,撰写函数文档,并查看函数文档

    python 帮助文档,撰写函数文档,并查看函数文档 定义函数 def test(a,b):'''参数:a:整数b:整数返回值:a+b'''return a+b 运行函数 test(11,22) 33 ...

  9. 在Eclipse中查看Javadoc文档

    当我们需要查看JDK中类的API介绍时,通常采用的方式是直接查看离线文档或者某些网站提供的在线文档.如下图: 而本文档最终达到的效果是,不需要切换出eclipse,直接在eclipse中查看JDK的J ...

最新文章

  1. Mathematica开始学习,
  2. java的4种内部类
  3. P3261-[JLOI2015]城池攻占【左偏树】
  4. javascript调用一个函数(对象),new和直接调用的区别
  5. android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法
  6. springboot 定时器_springBoot的定时器应该这样写
  7. Springboot全局异常处理GlobalExceptionHandler
  8. Nginx系列(5):Web服务器分析之Linux I/O(理论中)
  9. 如何使用ccs软件创建工程
  10. Android科大讯飞语音合成
  11. iOS 百度地图_自定义Annotation大头针_修改大头针图片
  12. bind dns mysql,linux下bind9.8+dlz+mysql 的dns服务器局域网配置
  13. 飞鸽短信平台发送国际短信
  14. pc station v15 博图_PC STATION下载报错-工业支持中心-西门子中国
  15. zbb20170811 linux 给用户授予文件夹权限
  16. 设计模式(四)责任链模式——责任链模式结构
  17. 单例模式-DoubleCheck
  18. 京东X无人超市落户西安大雁塔 全球首个5A景区店诞生
  19. FPGA 视频 拼接器 4K60(3840x2160P60Hz)4路田字格或四竖条输出
  20. 打破壁垒,中兴新支点国产操作系统向所有用户免费使用

热门文章

  1. python 画图--简单开始及折线图
  2. Type is unsupported, or the types of the items don‘t match field type in CollectionDef.
  3. [.NET]使用十年股价对比各种序列化技术
  4. javascript 计算后结果失精度的问题解决
  5. luogu P1156 垃圾陷阱
  6. [ 总结 ] 删除通过find查找到的文件
  7. [转载]让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
  8. Android技巧:003使用Intent连接多个活动
  9. spark第十篇:Spark与Kafka整合
  10. Shell中通过机器人发送钉钉群消息