Git教程

简单聊聊Git,从Git是什么?能干什么?(介绍)到安装配置(安装)再到上传仓库(上传)最后是分支的创建、使用、删除(分支
在这里插入图片描述
在这里插入图片描述
常用网站:

介绍

Git是目前世界上最先进的分布式版本控制系统,有这么几个特点:

  • 分布式 :是用来保存工程源代码历史状态的命令行工具
  • 保存点 :保存点可以追溯源码中的文件,并能得到某个时间点上的整个工程项目额状态;可以在该保存点将多人提交的源码合并,也可以退到某一个保存点上;
  • 离线操作性 :Git可以离线进行代码提交
  • 基于快照 :Git提交是将提交点指向提交时的项目快照,提交的东西包含一些元数据(作者,日期,GPG等);SVN等老式版本控制工具是将提交点保存成补丁文件
  • Git的分支和合并 :分支模型是Git最显著的特点,因为这改变了开发者的开发模式,SVN等版本控制工具将每个分支都要放在不同的目录中,Git可以在同一个目录中切换不同的分支;
  • 分支即时性:创建和切换分支几乎是同时进行的,用户可以上传一部分分支, 另外一部分分支可以隐藏在本地,不必将所有的分支都上传到GitHub中去;
  • 分支灵活性:用户可以随时创建合并删除分支,多人实现不同的功能,可以创建多个分支进行开发,之后进行分支合并,这种方式使开发变得快速,简单,安全。

工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

下图展示了 Git 的工作流程:
在这里插入图片描述

基本概念

我们先来理解下 Git 工作区、暂存区和版本库概念:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:
在这里插入图片描述

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。

  • 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。

  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

  • 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。

  • 当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

  • 当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

基本操作

Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。

Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull

在这里插入图片描述

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

常见命令

创建仓库

git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。

提交与修改

git add添加文件到仓库
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm删除工作区文件。
git mv移动或重命名工作区文件。

提交日志

git log查看历史提交记录
git blame 以列表形式查看指定文件的历史修改记录

远程操作

git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并

安装

安装分为安装软件和码云注册新建仓库(也可以是GitHub,但经常性的进不去)

码云注册及新建仓库

邮箱注册即可,这没啥说的;然后就是新建仓库右上角加号>新建仓库
在这里插入图片描述
名称自定义,路由一样,你可以选择是私有还是公开,这几个是必须的,其他的选填;
在这里插入图片描述
点击最后的确定,会出现这个地址在这里插入图片描述

安装Git软件

去这里下载https://npm.taobao.org/mirrors/git-for-windows/,官网能下到你怀疑人生,选择你需要的版本下载安装即可;
安装完后你可以直接打开利用指令进入你的项目;或者在你的项目目录里,右键选择Git Bash Here打开
在这里插入图片描述
打开将你的用户名,邮箱配置了,这是个全局配置,会把所有这个电脑上的仓库都写上,当然你可以针对某个仓库设不同的

git config --global user.name "名字"
git config --global user.email "邮箱"

设置SSH KEY

配置本地SSH KEY才可以使远程跟本地连接
你可以按如下命令来生成 sshkey:

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  
#Generating public/private rsa key pair...

按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key

cat ~/.ssh/id_rsa.pub
#ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

在这里插入图片描述
将这些内容复制,打开码云设置>安全设置>SSH公钥,将刚刚的复制进去就行;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完后输入指令ssh -T git@gitee.com,如果出现下图的这样就代表设置成功了
在这里插入图片描述

上传

第一次上传

安装流程走

git init

初始化一个新本地仓库,它在工作目录下生成一个名为.git的隐藏文件夹

git add .

不要忘记空格和点,点代表将文件夹下的所有文件全部添加进本地仓库,你也可以指定某个文件比如:git add index.html

git commit -m "1.0版本"

关联远程仓库

git remote add origin 刚刚的地址

把文件提交到仓库

git push -u origin master

把本地库的所有内容推送到远程库上

第一次进行可能会弹出一个账号密码框,将远程仓库的邮箱、密码输进去,如果错了,去这个地方更改
先看一下有没有绑定邮箱,在gitee上:设置->邮箱管理里面,没有的绑定一个
在这里插入图片描述

后续更新上传

后面只有这三步

git add .

不要忘记空格和点,点代表将文件夹下的所有文件全部添加进本地仓库,你也可以指定某个文件比如:git add index.html

git commit -m "1.0版本"

把文件提交到仓库

git push -u origin master

把本地库的所有内容推送到远程库上

分支

http://www.uml.org.cn/pzgl/201805154.asp

上传一个独立的分支

(比如代码是从工程中直接DOWNLOAD ZIP文件,该文件与原MASTER分支是独立的)

1、git init (在本地工程目录下)

2、git add .

3、git commit -m "luyang" (”luyang“为分支名)

4、git branch luyang (创建分支)

5、git checkout luyang (切换分支)

6、git remote add origin http://192.168.36.10:10080/quantum_rng_testing/nist (”quantum_rng_testing/nist“ 为工程的目录,这次不要后面的.git后缀)

7、git push origin luyang (将分支上传)

注意:如果提示 "please tell me who you are“

在.git 目录下的config文件,在最后添加

[user]
name = xxxx
email = xxxxxxx@xx.com

这就创建了一个分支并上传了

合并
git merge luyang

会这样:
在这里插入图片描述
然后去码云看看合并成功没,如果没,则进行这个指令

git push --force origin master

会出现:
在这里插入图片描述
然后再去码云看看合并成功没

删除分支

合并过后分支就可以删除了,可以在码云的分支管理里删除;
或者git branch -d 分支名称

既关联 GitHub,又关联 Gitee

因为 git 本身是分布式版本控制系统,可以同步到另外一个远程库,当然也可以同步到另外两个远程库。

使用多个远程库时,我们要注意,git 给远程库起的默认名称是 origin,如果有多个远程库,我们需要用不同的名称来标识不同的远程库。

仍然以 runoob-test 本地库为例,我们先删除已关联的名为 origin 的远程库:

git remote rm origin

然后,先关联 GitHub 的远程库:

git remote add github git@github.com:tianqixin/runoob-git-test.git

注意,远程库的名称叫 github,不叫 origin 了。

接着,再关联 Gitee 的远程库:

git remote add gitee git@gitee.com:imnoob/runoob-test.git

同样注意,远程库的名称叫 gitee,不叫 origin。

现在,我们用 git remote -v 查看远程库信息,可以看到两个远程库:

git remote -v
gitee    git@gitee.com:imnoob/runoob-test.git (fetch)
gitee    git@gitee.com:imnoob/runoob-test.git (push)
github    git@github.com:tianqixin/runoob.git (fetch)
github    git@github.com:tianqixin/runoob.git (push)

如果要推送到 GitHub,使用命令:

git push github master

如果要推送到 Gitee,使用命令:

git push gitee master

这样一来,我们的本地库就可以同时与多个远程库互相同步:
在这里插入图片描述

所写博客皆为自己的心得,如有错误欢迎指出,侵删,谢谢

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦夏木禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值