专栏首页小锋学长生活大爆炸GIT——分布式版本控制系统

GIT——分布式版本控制系统

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,可以有效、高速的处理从很小到非常大的项目版本管理。

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

学习git可以搜索

  1. Git简明指南
  2. Git 完整命令手册地址
  3. PDF 版命令手册
  4. Git教程
  5. Git图形化操作插件:小乌龟

Git的功能特性:

  • 从一般开发者的角度来看,git有以下功能:

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

  • 从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

1、查看邮件或者通过其它方式查看一般开发者的提交状态。

2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

3、向公共服务器提交结果,然后通知所有开发人员。

  • 优点:

适合分布式开发,强调个体。

公共服务器压力和数据量都不会太大。

速度快、灵活。

任意两个开发者之间可以很容易的解决冲突。

离线工作。

  • 缺点:

资料少(起码中文资料很少)。

学习周期相对而言比较长。

不符合常规思维。

代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

Git 安装配置

注:本文只讲解基础部分,高阶操作大家可以根据文首提供的链接进行深入学习。

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

  • Windows 平台上安装

在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:

完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。

在开始菜单里找到"Git"->"Git Bash",会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。

Git 工作流程

Git 创建仓库

通过git init命令把所在目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

git clone

使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

如果你需要与他人合作一个项目,或者想要复制一个项目,看看代码,你就可以克隆那个项目。 执行命令:

git clone [url]

[url] 为你想要复制的项目,就可以了。

git add

用命令git add告诉Git,把文件添加到仓库:

$ git add readme.txt

执行上面的命令,没有回应显示。

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file 
1 file changed, 2 insertions(+) 
create mode 100644 readme.txt

git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容

git status

git status 以查看在你上次提交之后是否有修改。

演示该命令的时候加了 -s 参数,以获得简短的结果输出。如果没加该参数会详细输出内容:

$ git statusOn branch masterInitial commitChanges to be committed:

git diff

git diff,顾名思义就是查看difference,显示的格式正是Unix通用的diff格式

执行 git diff 来查看执行 git status 的结果的详细信息。

git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。

  • 尚未缓存的改动:git diff
  • 查看已缓存的改动: git diff --cached
  • 查看已缓存的与未缓存的所有改动:git diff HEAD
  • 显示摘要而非整个 diff:git diff --stat

git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。

接下来我们来查看下 git diff --cached 的执行效果:

git commit

使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。

Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

$ git config --global user.name "xxxxxxxx"
$ git config --global user.email xxx@xxxxx.com

如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。命令格式如下:

git commit -a

git rm

git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。

默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。

如果你要在工作目录中留着该文件,可以使用 git rm --cached

总结—git常用命令

  • 从远端程序克隆到本地分支:git clone 远端地址
  • 在本地创建新的分支:git branch 分支名称(分支名称一般格式为feature-实现的功能)
  • 切换分支:git checkout 分支名
  • 删除分支:git branch -D 分支名
  • 查看当前项目中代码状态:git status和git status . 后者代表的是当前项目所有文件,注意最后有个点“ . ”
  • 添加文件:git add 文件目录/文件名 和git add . 后者代表当前目录下所有文件提交到暂存区,注意最后有个点“ . ”
  • 提交到本地分支:git commit -m "标签注解"
  • 提交到远端分支:git push origin 远端分支名
  • 将远端的代码拉到本地分支:git pull origin 分支名;如果有冲突,可以用git status查看有冲突的文件。pull=fetch+merge.fetch是将远端代码拉下来,merge是合并进去。
  • 取消上次修改:git reset .

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用PyTorch实现MNIST手写数字识别(非常详细)

    MNIST可以说是机器学习入门的hello word了!导师一般第一个就让你研究MNIST,研究透了,也算基本入门了。好的,今天就来扯一扯学一学。

    小锋学长
  • 自己动手实现4大免费聊天机器人:小冰、图灵、腾讯、青云客

    聊天机器人(Chatterbot)是经由对话或文字进行交谈的计算机程序。能够模拟人类对话,通过图灵测试,如Siri、小爱同学、微软小冰等。

    小锋学长
  • 在Ubuntu 18.04中安装VMware工具

    VMware是一个成熟而稳定的虚拟化解决方案,它允许您在一台机器上运行多个独立的操作系统。

    小锋学长
  • git review报错一例

    在线上修改代码,最后使用git review提交代码审核的时候出现报错如下: [wangshibo@115~]$ vim testfile           ...

    洗尽了浮华
  • Git清理commit中历史提交的大文件

    du是linux 的基础命令,很多用法,详情自己去查找其他文档。 因为git的历史文件都是存在一个文件里的,我们使用下面命令可以找出排名前五的文件

    华创信息技术
  • Git - 简易指南

    本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HE...

    Lemon黄
  • git安装与初始化

    如果你想在 Linux 上用二进制安装程序来安装 Git,可以使用发行版包含的基础软件包管理工具来安装。 如果以Centos 上为例,你可以使用 yum:

    超蛋lhy
  • Git 安装 on centos7

    羽客
  • 获得一个Git仓库

    既然我们现在把一切都设置好了,那么我们需要一个Git仓库。有两种方式可以得到它:一种是从已有的Git仓库中 clone(克隆,复制);还有一种是新建一个仓库,把...

    用户3004328
  • Git_学习_06_ 放弃本地修改

    git checkout . 用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。

    shirayner

扫码关注云+社区

领取腾讯云代金券