GIT的基础用法

什么是GIT

git是一种版本控制系统,通俗来说,就是帮咱们把文件备份。但git版本控制系统的功能远不止备份这么简单,总的来讲它具备以下特色:html

  • 文件缓存
  • 记录历史
  • 在缓存之间随时“穿越”
  • 多端共享
  • 团队协做

GIT并非惟一的版本控制系统,除了GIT以外,经常使用的版本控制管理系统还有SVN,鉴于他们实现机制的不同,一般咱们称GIT为分布式版本管理系统,SVN是集中式版本管理系统。
那么分布式和集中式版本控制系统有什么不同呢?git

  1. 集中式的须要一台中央服务器,全部的代码管理,都交给中央服务器进行管理,一旦中央服务器挂了,就会影响全部的用户
  2. 分布式版本控制系统下的每个节点,均可以充当服务器,每一个节点自主管理存放在本节点上的文件。
  3. GIT比SVN的读取速度更快

git的工做是分区的,经过调用git相关的命令,咱们在每一个区能够切换,git常有三种区,分别是:github

  • 工做区
  • 暂存区/过渡期
  • 历史区

工做区就是咱们本地电脑工做中使用的那部分代码,当咱们使用命令git add命令把代码添加以后,咱们的代码就提交到暂存区了,使用了git commit 命令,咱们的代码就提交到历史区了。web

相关Linux命令

一、打印当前文件目录缓存

pwd

二、查看git配置服务器

git config --list

三、配置全局的用户信息分布式

git config --globle user.name "mmcai"
git config --globle user.email "xx@126.com"

四、配置当前目录下git的用户信息学习

git config user.name "mmcai"
git config user.email "xxx@126.com"

五、初始化git——告诉那个文件夹被git所管理网站

git init

六、递归强制删除文件夹url

rm -rf xxx
-r 递归
-f 强制

七、其余

cd 切换文件目录
mkdir 在指定目录下建立文件夹
touch 在指定文件目录下建立文件
cat 查看文件内容
ls -al 显示当前目录下全部的文件内容

八、vi 编辑相关命令

vi <文件名>
i/u 切换到编辑模式
dd 删除当前行

ESC 退出编辑模式
:wq 保存文件并退出
:q! 强制退出

九、直接把工做区的内容提交到历史区

git commit -a -m '注释'
前提条件是,你必须使用git add 命令操做过一次

提交到历史区

上面咱们说到GIT系统当中有三个区:工做区,暂存区,历史区,咱们不能跨区操做,必须先把文件添加到暂存区以后,才能提交到历史区。若是把代码从工做区提交到暂存区,或者把暂存区的内容提交到历史区,代码只是copy了一份存到另外的空间,当前(工做区)当中的内容,不会发生变化。

工做区

当咱们使用git init 命令行支行,咱们当前就处在工做区

git init

暂存区

在工做区下,咱们执行以下命令,就把咱们当前的文件,提交到了暂存区

git add ./-A

既然能添加,固然也能删除暂存区,使用以下命令,咱们能够删除暂存区里面的内容

git rm --cached 文件名

历史区

使用命令git commit 就把文件从暂存区

git commit -m '描述你这次提交到历史区作的修改'
-m 参数不能省略,必须填写

日志

查看git提交到历史区的历史状态,最新提交的内容在日志的最上面展现

git log

状态

查看当前git所在那个区?工做区,暂存区,历史区

git status

文件比较

一般为了查看每一个区的内容有何不一样,咱们能够经过git diff命令来实现,咱们上面知道,git有三个区,因此比较的状况也会分为几种状况:

  1. 工做区和暂存区比较
  2. 工做区和历史区比较
  3. 暂存区和历史区比较
git diff 工做区和暂存区比较
git diff <master> 工做区和历史区比较
gif diff --cached 工做区和暂存区比较

撤销

当咱们工做区的代码,不当心或者写的比较不理想的状况下,咱们想把本次修改的内容进行撤销的时候,GIT能够帮我实现。撤销分几种状况:
一、从暂存区回滚
二、若是暂存区也是须要回滚的,须要从上一层暂存区进行回滚
三、若是不当心提交到历史区,须要从上一层历史区中进行回滚

从暂存区回滚:

git checkout .

从暂存区的上一层进行回滚

git reset HEAD .
git checkout .

从历史区的上一层进行回滚

git reset --hard <版本号,版本号经过git log查看>
该操做会把工做区和暂存区所有覆盖

若是从历史区的上一层回滚以后,想再次回到以前的历史区怎么办?

git reflog 
查看所有日志,获取版本ID
git reset --hard <版本ID>
只要你知道版本ID,你就可使用git reset 回滚到任何版本

.表示当前目录下的全部文件

分支

分支的使用一般会有如下几种状况:

  1. 线上有bug的时候
  2. 基于当前项目的另一个有不一样逻辑的项目copy
  3. 多人开发

查看分支

git branch

建立分支

git branch <分支名>

切换分支

git checkout <分支名>

建立并切换分支

git checkout -b <分支名>

删除分支

git branch -D <分支名>
删除分支时,用户不能在当前分支上

当您在一个分支下建立了新的文件时,若是没有把文件提交到历史区,全部的分支下都能看到该文件。同时当你在一个分支下对文件进行了修改以后,在你没有把它提交到暂存区或者历史区以前,你切换分支会提示不容许,这个时候能够经过以下命令实现切换

git stash 暂存文件

git stash pop 还原暂存文件

工做流程是:分支1(没有提交到暂存区或历史区)——> git stash 暂存文件——>分支2——>git stash pop——>分支1

分支合并
合并分支的时候,确保当前分支时主干,不然,就把主干合并到了其它分支上去了

git merge <分支名>

查看分支状况

git log --graph --online

远程仓库

虽然git是分布式的,但咱们每每仍是须要一个中央服务器,这个服务器的主要任务能够理解成是咱们的代码仓库。这个仓库咱们叫作远程仓库,一般咱们用github或者国内的gitee。上面咱们说git当中有三个区:工做区,暂存区,历史区。远程仓库只会保存咱们历史区当中的内容,因此,你的代码git commit 命令以后,才能推送到远程仓库当中。

远程仓库配置

要想把代码提交到远程仓库,通常咱们须要有远程仓库相关的帐号,并且要设置相关的秘钥。

添加远程仓库

git remote add <origin(别名)> <url>

删除远程仓库

git remote rm <别名>

直接设置远程仓库

git remote set-url <别名> <url>

查看远程仓库地址

git remote -v

拉去线上代码

git pull

克隆远程仓库到本地

git clone <url>

推送到远程仓库

git push -u origin master 

-u 设置默认推送的主机,下次推送的时候,不用写仓库的名字,能够直接提交

gh-pages

在GitHub当中,咱们建立一个gh-pages的分支,能够发布咱们的静态页面,做为咱们项目的一个介绍网站。
咱们能够在github仓库的设置里面,找到GitHub Pages 主体,查看咱们项目可被访问的web静态页面的url地址。

注意

  • 为了控制咱们本地的代码,那些能够被提交,那些事须要忽略的,咱们须要添加一个.gitignore
  • git不会上传空的文件夹,但咱们能够再文件夹当中添加一个.gitkeep文件,把空文件夹提交上去
  • 好的项目,一般会给项目添加标签,说明咱们项目当中使用了那些技术,或者是什么类型的
  • issue 若是对一个项目有问题,能够在这里给做者留言

代码fork-pull

github上面,看到一个比较不错的项目,想要copy到本身的仓库,能够经过fork的操做,把别人仓库里面的项目,克隆到本身远程仓库当中。当你以为别人的代码写的很差的时候,能够经过pull requests 把你的代码提交到fork的项目当中。

结束

以上内容,算是个人学习笔记,初次以外,涉及到git的问题,可能还有不少,好比说想把一个项目同时提交到两个仓库(GitHub和gitee),解决冲突等,但愿有机会咱们能一块儿讨论讨论。

一台电脑,两个及多个git帐号配置

相关文章
相关标签/搜索