Git的学习与总结

1.什么是Git

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

2.简单的Git操作

之前还没怎么了解Git的命令是,就只会用编译器上面的插件进行操作,但这是远远不够的,接下来就要对常用的命令进行一些总结(本文只对命令总结安装廖雪峰安装Git)

(1)创建版本库

版本库可以理解为目录

$mkdir 自己输入名字
$ cd 输入的名字
$ pwd  //用于查询创建的位置

--------------------------
$git init  //把目录变成Git可以管理的仓库

然后就会出现这是一个空的仓库,我们也可以去找到这个文件,不过里面的文件可千万不要乱删,会出现问题的。这里还有一点,就是有一个隐藏的.git文件,可以通过ls -ah命令让它显示出来,当然也可以在文件设置里面选择显示隐藏文件(Windows用户)。

(2)添加文件

$git add 文件名字
$git commit -m"提交说明"

可以一次性添加几个文件,就多写几次add

(3)查看仓库

$git status

查看仓库的状态和修改记录,如果修改了文件的内容,想要查看修改的地方

$git diff 文件名

这样就可以查看了

(4)版本回退

在多次修改后,我们想知道每次修改了什么就可以

$git log

这样就可以看到这些消息了。也可以添加–pretty=oneline

$git log --pretty=oneline

就会出现

ab794eddedb657d6204fb2d35617edc06de26d3d (HEAD -> master) gitchange
a512937e22e0aa432140a80e99ee940676ca9a79 git

这些就是commit id(版本号,每个人都是不同的),每提交一次版本库,git都会把它们串成一条时间线。这个东西可是很有用的,稍后会介绍。
我们现在想回到上一个版本就使用

$ git reset --hard HEAD^

HEAD的^是想回到那个版本就加几个,但是如果次数太多的话,我们不可能一直打这么多,就可以改写成 HEAD~此处为返回几次的数。这样我们就倒退回去了,可是如果我们又想回到之前的版本呢?在git中,我们是可以返回的,我觉得就像CTRL+Z(撤回)一样。之前我们提到的那个版本号就起到了作用。

$git reset --hard ab794

我们就回到了之前的版本。但是如果有一天,我们把电脑关机了,之后隔了几天又想回到上一个版本。这个时候我们已经查不到版本号了这么办了?之前提到过,git是有后悔药的。

$ git reflog

就可以查看到之前的版本好了。

(5)工作区和暂存区

来自廖雪峰的图:
在这里插入图片描述
git add把文件从工作区>>>>stage的暂存区,git commit把文件从暂存区>>>>仓库
git status查看工作区的状态
git diff查看工作区和暂存区差异,
git diff --cached查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。
引用某位大佬的分析
有一点值得注意,最新的git中git restore 代替了原来的reset和checkout命令了,原来的git reset HEAD 可以使用 git restore --staged 代替。

(6)删除文件

当我们写了太多的文件后,就会发现有些文件我们就不需要了,这个时候就需要删除一些文件

$rm 文件名

在查看工作区的状态就会提示你删除了那个文件。现在我们有两个选择,就是确认版本库的文件。

$git rm 文件名
$git commit -m "叙述 " 

这样版本库的文件就被删除了。
如果我们发现删错了文件,想要复原,该怎么办了?(未删除版本库的文件)

$ git checkout --文件名

未添加到版本库的文件如果被删除,那就没办法了。

3.远程仓库

这里就要提到一个叫GitHub的网站了,后面的操作都会用到它。
首先我们需要拥有一个GitHub的账号,这里就不多说了。

(1)添加远程仓库

我们已经知道在本地进行一系列操作,我们现在就想把本地的这些文件传GitHub上去。
首先我们要现在GitHub上创建一个仓库。创建后我们点击刚刚创建好的仓库,就可以看见
在这里插入图片描述
然后在输入

$git remote add origin 上图的信息

可选择https,ssh。https每次都要输入密码。origin这个可以自己命名。

$git push -u origin master

这样我们在打开GitHub创建的仓库,就会发现我们上传的文件。

(2)从远程库克隆

那这里我们就想一下,我们既然可以传上去,那我们就应该也可以把GitHub的东西克隆下来。当然这是可以的。

$git clone https or ssh 的信息

这样就可以把远程库的信息克隆下来了。

4.分支管理

(1)创建与合并分支

$git check -b dev(分支名)
or
$git branch dev
$gitcheckout dev

可以用git -branch查看分支
然后修改文档,都是之前的一些操作。

$ git checkout master //回到master 或者$git switch master
$ git merge dev //合并dev上的成果
$git branch -d dev //删除分支

(2)解决冲突

合并分支并不是一帆风顺的。这个时候我们就需要解决冲突。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
git log --graph命令可以看到分支合并图
在这里插入图片描述

(3)分支管理

合并分支时,如果可能,Git会用Fast forward模式,但在删除分支,会丢掉分支的信息。
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

(4)BUG分支

我们在编写当前项目时,如果这时候传来通知需要我们去处理一个BUG,但现在手上的人物还没有完成,该怎么办了?

$git stash

就可以把当前的工作储存起来,然后去处理BUG的修复。修复完后我们需要回到之前的项目,就需要

$git stash apply //stash的内容不删除
$git stash drop //删除
or
$git stash pop

**git cherry-pick **命令,把bug提交的修改“复制”到当前分支,避免重复劳动

(5)多人协作

$ git remote//查看远程库
$ git remote -v//详细显示
$git push 远程库 分支名
$git clone 地址

5.标签管理

(1)创建标签

$git tag 标签名

可以用git tag来查看标签,**git tag -a **指定标签信息。

(2)操作标签

$ git tag -d //删除标签
$git push origin :refs/tags/名字 //远处删除
$ git push origin

5.总结

本文是在廖雪峰老师的git学习的自己的总结,若有错误或不全面的地方,还请大佬们指出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值