看看什么是Git

1 篇文章 0 订阅
1 篇文章 0 订阅

What is it?

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

工作流程:

  1. 克隆Git资源作为你的工作目录
  2. 可以在你克隆的资源进行修改
  3. 如果有修改,可以更新远程Git资源
  4. 检查修改是否正确
  5. 提交你的更改
  6. 错误提交可以撤回

菜鸟教程上的图:
*在这里插入图片描述

一些名词概念

工作区 : 当然是你电脑上的目录
暂存区 : 暂时存储你的修改,也叫做stage||index,一般存在.git目录下的index文件,所以也可叫索引区
版本区 : 也就是你工作目录下的隐藏文件: .git

菜鸟上的工作图:
在这里插入图片描述
从左到右、上到下的箭头可以看出:

  1. 第一条:可以通过 git add 命令将工作目录中的文件添加到暂存区
  2. 第二条:可以通过 git commit命令将暂存区的目录提交到版本库,同时master指向暂存区的目录树
  3. 第三条:可以通过 git checkout . 或者 checkout --<文件名字> 将暂存区的一个或者所有的文件替换工作区的文件。
  4. 第四条:可以通过 git reset HEAD(相当于master) 将HEAD代表的分支指向的目录树替换掉暂存区的目录树
  5. 第五条:可以通过git rm --cached 来删除暂存区的文件
  6. 第六条:可以通过git checkout HEAD <file> 将HEAD指向的master分支的全部或部分文件替换暂存区和工作区的目录

常用操作

How to create a 仓库?
  1. 进入一个目录打开git bash 或者cd 进去
  2. 执行初始化操作,在当前目录生成隐藏文件.git
    git init
    也可以指定目录作为git仓库
    git init newrepo
  3. 然后添加将一些文件交给git控制
    git add <文件名>
  4. 然后你就可以提交你的修改啦
    git commit -m "写一些备注"
    当然也可以指定提交缓存区的特定文件
    git commit 1.txt 2.txt 3.txt -m "写一些备注"
    但注意,缓存区必须有这些文件,不然提交个寂寞
    提交完成以后,它就存到你的本地仓库里啦!
提交到远程仓库之前的操作

你尽可以去github哪里注册账号,创建一个仓库,或者可以去国内的gitee注册,我比较喜欢gitee,因为我英文不好 :D
首先当然是创建你的远程仓库
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201215210331578.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NvZGluZ19kZWxpdmVy,size_16,color_FFFFFF,t_70
下一步就是设置权限了
在本地设置你全局个人信息,这样上传给远程仓库的时候就知道你是谁

git config --global user.name “潘立杰”
git config --global user.emali “1261349543@qq.com”

然后还要设置哪些人可以上传到你的仓库
例如我就设置了两个用户
在这里插入图片描述打码的就是很重要的公钥,将他绑定到你的本地,那么如何绑定呢?执行下面一个语句

$ ssh-keygen -t rsa -C “1261349543@qq.com”

然后注意看输出的结果,里面有生成文件的位置:
在这里插入图片描述找到以后打开它,copy里面的东西,粘贴在将你在gitee的
在这里插入图片描述标题可以设置成具体的用户比如1261349543@qq.com这样好区分
准备工作就完成了

如何贡献自己的代码呢?

首先,你是不是要找到远程仓库(remote)?
之前,你可以看看有没有绑定了远程仓库:

git remote -v

一开始肯定没有的,不然还添加做什么,之前,刚刚创建好的仓库有一个密钥(SSH)
在这里插入图片描述把它复制出来:
添加远程仓库:

git remote add mygitee SSH

这里的mygitee是一个别名,随你怎么取,但是后面的SSH就是创建仓库时我让你复制的那串,别说你忘记复制,那就再回去复制一遍。

git remote -v
看当你本地绑定哪些远程仓库

当你的仓库有了写东西以后,也就是提交(commit)了以后,就可以推送(push)到远程仓库gitee:

git push mygitee master
mygitee是你刚才绑定的远程仓库, master是分支,这个后面再介绍

以上就是推送(上传)过程-

再深入看看什么是分支branch?

几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
这样解释肯定模糊,实例操作感受感受:
我们默认实在master分支里,可以当主分支

先创建一个分支:
git branch testing

切换到指定分支:
git checkout testing

你可能回想这样操作:

创建的同时切换到新分支:
git checkout -b testing

先说怎么删除:

git branch -d testing

下面用一个实例展示一下:
先再空文件夹创建仓库:
在这里插入图片描述

创建两个文本文件:
touch test1.txt
touch test2.txt

此时是两个空文件:
先添加到缓存区:

git add test1.txt test2.txt

看看缓存状态:

git status -s
在这里插入图片描述
A说明有两个新添加(add)文件

将test1.txt 和test2.txt这两个文件提交到自己的本地仓库:

git commit -m “master分支第一次提交”

接下来开始了:创建一个分支,并切换过去:

git checkout -b testing

看看自己当前都有啥分支
git branch

星号绿色代表当前所在的分支

这时候我在这个分支创建另一个文件test3.txt
touch test3.txt

这时候看看缓存区状态:
在这里插入图片描述
??代表你还没有对test3.txt进行操作

这时候我们添加到缓存区:
git add test3.txt

再看状态就是之前的绿A了
在这里插入图片描述
这时我们也提交到本地仓库的testing分支中:因为我们现在本来就在testing分支中,所以直接提交就ok了:

git commit -m “testing分支第一次提交”

准备工作已经就绪,这时候切换回我们原来的master主分支中:

git checkout master

你会神奇地发现:
在这里插入图片描述
在testing分支创建的test3.txt,不见了!你在切换回testing分支中你会发现,哎,又出来了,这是啥呢?
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
说人话就是:不管你在testing分支中怎么操作,只要切回master,工作目录就会还原成你master最后一次提交的状态,
我在切换testing之前,我提交了一次,也就是新添加了两个文件,它会生成一个快照,记录你当前的状态,当你从其他分支回来的时候,会恢复成那个快照,也就是那个时候的状态。
使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。各个分支互不影响
ok!

但我们最终希望某些分支的工作进度合并到我们主分支上:

这时候就要合并分支了:把testing分支合并到当前所在的分支:
branch merge testing

就像我现在是在master分支:把testing合并过来,要记得我们在testing分支创建了一个test3.txt,这时候master分支是没有这个文件的:
当你执行合并指令后,你发现哎,test3.txt出来了。真tm神奇!

但是,我们不应该只是合并文件,内容也要合并.
在此之前,合并之后我还想切换回testing是不可以的,留着也没啥用了,把他删掉:

git branch -d testing

接下来我们手动修改test2.txt里面的内容:再次添加test2.txt到缓存区,再提交commit:
在这里插入图片描述

我们重新再创建testing分支,然后再次创建test3.txt,记得提交commit
我们在test2.txt中手动添加内容:
在这里插入图片描述

这时候我们将修改添加后提交到本地仓库

git add test2.txt
git commit -m “添加test2.txt到testing分支”

回到主分支:进行合并testing分支:

git checkout master
git merge testing

这时候可以看到test3.txt重新出现,意料之中,再看看test2.txt里面的内容,要记得我们在master和testing分支中都添加了内容:

在这里插入图片描述内容是合并了,但是感觉不太好看.但怎么办呢,只能老老实实修改啦

打开文件进行编辑
vim test2.txt
按下i键进入编辑模式, 修改结束后按下Esc退出编辑模式 然后输入:wq 回车,退出文件编辑

cat test2.txt可以看看文件内容:
在这里插入图片描述

看看工作区状态:

git status -s
在这里插入图片描述

这时候添加修改好的test2.txt到缓存区,然后把所有的修改提交到仓库就ok啦

怎么才算代码搬运工,当然是下载

下载(克隆)远程仓库
git clone <reop>
也可以下载到指定目录
git clone <reop> <directory>
例如可以克隆的时候重命名文件夹
git clone git://github.com/schacon/grit.git mygrit

当然还有比较高级的方法:
。。。。

设置一些自己的信息

配置用户信息
git config --global user.name "xxxx" git config --global user.email "xxxx@xxx.xxx"
去掉–global 的话只对当前的仓库有效

提交自己代码
退回指定版本

默认格式:git reset [–soft | --mixed | --hard] [HEAD]
/- -hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交,谨慎使用 –hard 参数,它会删除回退点之前的所有信息/
/- -mixed参数将缓存区的文重置为上一次提交的状态/
/- - soft 参数退回到某个版本

返回到上一次版本

git rest --soft HEAD

返回到指定版本

git rest --soft HEAD

返回上上上个版本

git reset --hard HEAD~3

HEAD 表示当前版本
HEAD^ 表示上一个版本
。。。。以此类推(也可以用~)

大冬天写这玩意真冷,手僵了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值