EasyHPC - Git入门教程【笔记】

内容来源:超算习堂 (easyhpc.net)

01 基础知识

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds,Linux内核的发明人及该计划的合作者)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。

git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。

Github就是一个用git做版本控制的项目托管平台

主要功能

git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。

实现原理

git更像一个文件系统,直接在本机上获取数据,不必连接到主机端获取数据。每个开发者都可有全部开发历史的本地副本,changes从这种本地repository复制给其他开发者。这些changes作为新增的开发分支被导入,可以与本地开发分支合并。

分支是非常轻量级的,一个分支仅是对一个commit的引用

git是用C语言开发的,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。

git存储每个新创建的object作为一个单独文件。为了压缩存储空间占用, packs操作把很多文件使用差分压缩入一个文件中(packfile),并创建一个对应的索引文件,指明object在packfile中的偏移值。新创建的对象仍然作为单独文件存在。repacks操作非常费时间,git会在空闲时间自动做此操作。也可用命令git gc来直接启动repack。packfile与索引文件都用SHA-1作为校验和并作为文件名。git fsck命令做校验和的完整性验证。

git中的数据流与存储级别

在这里插入图片描述

git安装和配置

在Ubuntu系统中可以直接使用sudo apt install git直接安装,本次虚拟环境已安装git

首先配置用户信息:用户名和邮箱地址

git config --global user.name "ehpc"
git config --global user.email ehpc@ehpc.com

其中--global选项表示所有项目默认使用的用户信息,去掉后则会在特定项目中使用特定用户信息

可以使用git config --list查看已有配置信息

在这里插入图片描述

02 新建仓库

git有工作区、暂存区和版本库:

  • 工作区(Working directory):自己的工作目录
  • 暂存区(stage / index):暂时存放工作区中修改的内容
  • 版本库(repository):工作区的隐藏目录.git,可以用ls -a查看

新建仓库

git可以使用git init命令来初始化创建一个git仓库。此时,会生成一个.git目录

在这里插入图片描述

当然,也可以指定目录,使用命令:git init <directory>

在这里插入图片描述

克隆仓库

我们可以使用命令git clone <repo>从git仓库中克隆项目。

也可以指定目录,使用命令 git clone <repo> <directory>

在这里插入图片描述

03 工作流程

一般git的工作流程如下:

  • 克隆或创建git资源作为工作目录
  • 在工作目录里修改文件或添加文件
  • 更新自己的工作目录
  • 查看修改的内容
  • 提交修改
  • 有问题时撤回修改内容

创建仓库

使用如下命令创建一个测试用仓库

git init ehpc
cd ehpc

在这里插入图片描述

git add

使用git add将添加的文件或修改的文件加入本地的缓存区

我们首先创建两个文件,然后将其添加到缓存区

touch README ehpc.txt
echo "test" >> README
git add README ehpc.txt

在这里插入图片描述

git status

git status操作可以查看git当前状态,我们输入后可得到:

在这里插入图片描述

如果我们修改文件,如下命令:

echo "test2" >> README
git status

将会看到:

在这里插入图片描述

我们还可以再创建一个新的文件:

touch ehpc2.txt

将会看到:

在这里插入图片描述

也可以使用-s参数查看简易信息

git status -s

在这里插入图片描述

"AM"表示添加到缓存后又有改动

git diff

git diff可以查看git status的结果的详细信息,可以添加参数--cached表示已缓存的改动--stat显示摘要

git diff

在这里插入图片描述

git diff --stat

在这里插入图片描述

git add README
git diff --cached

在这里插入图片描述

git commit

git commit将缓存区内容添加到仓库中

git commit -m 'first commit'
git satus

在这里插入图片描述

其中-m参数表示后面为提交注释

也可通过添加-a参数跳过add过程:

在这里插入图片描述

git rm

要从git仓库中删除文件,则必须使用git rm命令:

git rm ehpc.txt
ls

在这里插入图片描述

可以通过添加-f参数执行强制删除--cached参数不删除工作区文件

git rm --cached README

在这里插入图片描述

递归删除当前目录时,使用:

git rm -r  *

git mv

作用与git rm类似:

在这里插入图片描述

04 分支管理

每个git仓库都可以拥有很多个分支,这样可以在分支之后,不影响主线的同时继续自己的工作,同时,在开发完成后,还可以合并分支。

创建分支

通过git branch <name>创建分支,git branch查看分支列表,执行:

git branch ehpcbranch
git branch

在这里插入图片描述

Git 新建分支出现报错:“fatal: Not a valid object name: ‘master‘.“_is not a valid branch name_Lakers2015的博客-CSDN博客

切换分支

通过git checkout <name>切换分支,我们切换分支并修改文件:

git checkout ehpcbranch
echo "branch"  >> README.md
git status
git add README.md
git commit -m "branch commit"

在这里插入图片描述

最后再切回master分支:

git checkout master

在这里插入图片描述

合并分支

使用git merge -m "" <name>合并分支:

在这里插入图片描述

合并冲突

当分支与master都有更改时合并,则会出现冲突,我们现在制造冲突并尝试合并:

git checkout ehpcbranch
echo "branch2"  >> README.md
git commit -am "conflict"
git checkout master
echo "branch3"  >> README.md
git commit -am "conflict2"
git merge ehpcbranch

将会看到如下结果:

在这里插入图片描述

此时需要手动修正冲突:

git diff
vim README.md
cat README.md
git diff
git add README.md
git commit -m "merge cobflict"

在这里插入图片描述

删除分支

删除分支操作很简单,只需使用git branch -d <name>即可:

git branch
git branch -d ehpcbranch
git branch

在这里插入图片描述

05 日志操作

使用git后,会进行很多操作,当我们想回顾操作历史时,就可以查看git的日志来了解历史操作

查看日志

git中可以使用git log命令查看所有的commit:

git log

在这里插入图片描述

q退出,也可以添加--oneline参数简单查看:

git log --oneline

在这里插入图片描述

添加--graph参数查看分支信息:

git log --oneline --graph

在这里插入图片描述

还有--author参数查看指定用户的记录,使用--since--before--until--after指定日期查看,--reverse逆向查看。

日志统计

添加--stat参数以详细显示每次commit中修改的文件的内容:

git log --stat

在这里插入图片描述

日志排序

除了--reverse可以重新排序,--topo-order同样可以:

git log --topo-order --graph

在这里插入图片描述

格式化日志

可以指定--pretty参数改变显示格式:

git log --pretty=short

在这里插入图片描述

git log --pretty=oneline  --graph

在这里插入图片描述

  • 44
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值