美文网首页
git介绍及基础操作

git介绍及基础操作

作者: 尛尛大尹 | 来源:发表于2018-09-06 09:43 被阅读0次

Git简介

Git[/gIt/]:一个基于C语言开发的开源分布式版本管理系统

举个例子:一个程序每次修改都要保存原来的版本,时间一长修改次数多了,就会记不清楚每次修改了什么,而且往往一个项目会有多个人修改,这样人为管理起来就会很混乱,这时候就可以用Git来记录每次修改。

Git、GitHub和Gitlab区别

  • Git是版本控制管理系统。可以在电脑不联网的情况下,在本地使用的版本管理工具。
  • GitHub是在线基于Git代码的托管服务,相当于一个网站。GitHub可以创建免费的代码仓库(repo),如果需要创建私有的代码仓库,则需要用付费账户。
  • Gitlab和Gitlab相似,可以免费创建私人代码仓库。但是GitHub界面非常美观。

Git和GitHub共同使用来托管自己的代码和笔记,可以在任何有网络的地方拷贝下来自己的代码继续使用

分布式vs集中式

  • 集中式版本控制系统:代表CVSSVN
    1.必须联网才能工作
    2.版本库集中存放在中央服务器,工作是需要先从中央服务器获取最新的版本,之后再进行工作,工作之后再提交到中央服务器
    3.中央服务器如果损坏则所有人不能工作

  • 分布式版本控制系统
    1.可以在不联网的环境下工作
    2.每个人的电脑都有一个完整的版本库,一个人的版本库坏了再从其他的复制一个即可,安全性比较高
    3.具有强大的分支功能,本地分支功能支持开发者在不同任务之间进行快速切换

Linux安装Git

目前,Git可以再Linux,UNIX,Mac,Windows上面运行
官方网站http://git-scm.com

  • 查看是否安装Git
> git 如果没有安装Git系统会给与提示
  • yum安装
> yum install git-core
  • 源码编译安装
1.Git官网下载所需要的源码包
wget http://mirrors.edge.kernel.org/pub/software/scm/git/..
2.编译安装,依次执行下列命令
tar -zxf git-*.tar.gz
cd git-*.tar.gz
./config
make&make install

版本库(repository)

  • 创建版本库,即创建一个新的空目录
> mkdir first-repo 任意一个可以创建文件的目录
> pwd 查看目录所在的路径
/root/app/first-repo
  • 初始化仓库,用git init命令把目录变成Git可以管理的仓库
> cd /root/app/first-repo
> git init
> ls -a
你会发现有一个`.git`目录,这个就是Git用来跟踪管理版本库的,不要随意修改这个目录下的文件,会破坏仓库

> tree .git
     config ------git仓库的配置文件
     objects ------所有被追踪的对象
     refs ------放置状态信息
  • git config这个命令可以配置版本库
    git config -e:会打开项目的配置文件(作用域最小,只针对当前项目有效)
    --global全局,配置的文件针对当前用户
    --system系统,配置文件针对了所有用户(作用域最大)

优先级:(如果三个文件同时配置了某个参数)
git config > git config --global > git config --system
作用域越广优先级越低

> git config --global user.name <username> 配置全局用户名
> git config --system user.email <email>  配置系统Email
> git config --list 或者-l查看配置了哪些项目
> git config (--global/--system) --unset <> 取消某个配置项

eg:

> git config --list
user.name=ymd
user.email=1464525869@qq.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
merge.comflictstyle=diff3
> git config --unset merge.comflictstyle
  • 一次简单的提交
> touch file1 创建一个新的文件
> git add file1 没有任何显示则成功,文件添加至暂存区
> git commit -m "commit file1 " 文件提交至仓库 
               -m后面添加本次提交的说明,最好是有意义的
1.jpg

[图片上传中...(3.jpg-7b61eb-1536198146557-0)]

  • Git分为了:
    工作区:Working Directory
    暂存区:Staging Area
    版本库:repository

工作区:就是我们自己创建的或者自己电脑上可以看到的就是工作区,比如上面创建的first-repo文件夹就是一个工作目录

版本库,就是我们说的仓库(repo)。工作区下面的隐藏文件.git就是Git版本库,Git可以管理这个目录里的所有文件,每一个文件的添加,修改,删除都可以被跟踪,可以在需要的时候还原到任何历史的时刻。
Git版本库里存储了stage(暂存区),还有Git为我们自动创建的第一个分支master,以及指向master的指针HEAD

  • .gitignore文件
    我们可以创建一个名为.gitignore文件,列出要忽略的文件模式
> cat .gitignore
*.[oa]忽略以.o或者.a结尾的文件
*~ 忽略以~结尾的文件

Git版本管理基础操作

提交分为了两个步骤:
1.git add <file1 file2...>:将工作区中相关修改的内容那个提交到暂存区,暂存区就相当于缓存区,可以后期更改里面的内容
2.git commit -m <message>:将暂存区的内容一次性提交到版本库

  • git status查看当前工作区发生的修改,以及已经被提交到暂存区的修改
    输出结果可以分为三段:
被提交的修改(changes to be committed):列出将在下次提交中被
                                   纳入版本库中的、被修改的文件
不会被更新的修改(changed but not updated):列出已经被修改,
                                但是还没有提交到暂存区中的文件
未被跟踪的文件(untracked files):列出所有的新增文件

--short选项使得输出更加紧凑

  • git diff比较提交、索引及工作目录
    --color:
    不加参数的 git diff:
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也
就是修改之后还没有暂存起来的变化内容.

git diff --cached 命令:

已经暂存起来的文件和上次提交时的快照之间的差异,
show diff of staged changes.
(Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相
同的).

git diff HEAD命令:

比较 woking directory 和上次提交之间所有的改动.

git diff [version tag]命令:

想看自从某个版本之后都改动了什么
跟 log 命令一样,diff 也可以加上--stat 参数来简化输出.

git diff [branchA] [branchB]命令:

它实际上会返回一个由 A 到 B 的 patch,不是我们想要的结果.

git diff [branchA]…[branchB]命令:

一般我们想要的结果是两个分支分开以后各自的改动都是什么
实际上它是:git diff $(git merge-base [branchA] [branchB]) 
[branchB]的结果.
  • git log查看提交记录,显示从近到远的提交日志
[option]:
\-n   部分输出
\--oneline 显示概述信息
\--stat 先是被修改的文件
\--dirstat 显示包含被修改文件的目录
\--shortstat 显示项目中有多少文件被修改,新增,删除了多少文件
\--graph 图形化显示一脚之间的关系
eg:
> git log -n 3 显示最后三次提交
> git log --oneline 
> git log --shortstat --oneline
> git log --format=fuller 显示更多详细信息
> git log --graph
  • 散列值
    上面我们用git log可以看到每个commit都有一串数字,这就是commit id,又叫做散列值。
    commit id是用SHA1计算出来的一个数值,用十六进制表示。
commit 9a77f4a693087681ca1845c3eec548f6366c0f91
Author: ymd <1464525869@qq.com>
Date:   Tue Aug 14 17:50:22 2018 +0800

git fsck查看版本库的完整性

  • git reset 版本回退
    Git里面有一个HEAD指针,HEAD指针指向master,master指向提交。当我们回退版本时,其实是改变了指针的指向,所以Git版本回退比较快
    Git里面用HEAD表示当前版本,HEAD^表示上一个版本
    HEAD^^表示上上一个版本,数值太大就可以写成HEAD~n,比如HEAD~100
    3.jpg

如上图所示,third commit是最新一次提交

eg:回退到上一个版本,即second commit、
# git reset --hard HEAD^
回退后再用git log查看,你会发现最新一次提交third commit已经看不
到了,但是如果我们后悔回退了怎么办?
如果我们窗口没有没有关掉还可以找到最新提交的commit id,就可
以回到原third commit版本,可以只取前面的一些数值,只要能够唯一指定即可
eg:最新一次提交的commit id为9a77f4a693087681ca1845c3eec548f6366c0f91
# git reset --hard 9a77f 这样就退到原来那个未来的版本了
(相对于此时的版本second commit,third commit就是未来版本)

HEAD指向的是哪个版本号,当前版本就定位在哪里,同时将工作取得内容恢复到那个版本,所以如果不小心关掉了窗口,查不到未来那个版本commit id,也有办法恢复
git reflog:记录了每一次命令,以确定要回到未来的版本。

  • 撤销修改
    git checkout -- <file>:如果你在工作区改动了某些文件但是又想要撤销修改,只是针对于特定的文件,则可以用这个命令。--必须要加上,否则就是切换分支
    git reset HEAD <file>:撤销暂存区的文件,放回工作区。HEAD表示最新版本
    如果commit之后只能够撤回原来的版本了
  • 删除文件
    工作区的文件删掉之后,工作区和版本库不一样了,git status就会知道删除了哪些文件
    这时候我们就有两种选择:
    1.彻底删除文件,git rm从版本库中删除该文件,并且用git commit提交
    2.误删了文件想要恢复,git checkout -- <file>
    注意:恢复文件时,只能恢复版本库最新一次提交的结果
    所以,删除之前我们可以预览:
>  git rm -r -n --cached 文件/文件夹名称
加上-n,执行命令时,不会删除任何文件,而是展示此命令要删除的文件列表预览
  • 储藏
    如果有一个紧急需要处理的问题,当前修改的文件又不想提交,可以用stash命令将这些修改保存在本地,等以后再处理
    stash命令将工作区和暂存区的修改保存在叫做储藏栈(stash)的缓存区
> git stash 将修改存储到储藏栈

git stash list查看当前栈中储藏了哪些修改内容

> git stash list
stash@{0}: WIP on master: 62e3b2c test
stash@{1}: WIP on master: 62e3b2c test
stash@{2}: WIP on master: 6a00470 change file2 tiwce in the original

stash pop恢复被储藏的修改

1.恢复位于栈顶的被储藏修改
> git stash pop
2.恢复更早之前的更改
> git stash pop stash@{2}
  • .gitigore忽略非版本控制文件
    一般情况下,对于那些自动生成的文件、由编辑器创建的或者临时备份的文件我们希望git能够忽略,就可以手动创建这个.gitigore文件夹。我们在文件中指定文件的目录和路径,并且可以使用“*”和“$”通配符

相关文章

  • git介绍及基础操作

    Git简介 Git[/gIt/]:一个基于C语言开发的开源分布式版本管理系统 举个例子:一个程序每次修改都要保存原...

  • 【操作】Git版本控制 # 5 相关工作流

    Git操作与git工作流 当我们谈论git时,我们首先会想到版本控制和各种命令及概念。git基础操作请看我的另外一...

  • Git 系列文章

    GIT 初识 Git的基础操作 Git的远程操作 Git的分支管理 Git标签操作 Git团队协作 Git 多账户...

  • 编程基础练习

    相关技术 Git 基础:Git 安装及常用命令介绍TDD:深度解读 - TDD(测试驱动开发)—— Seaborn...

  • Git 使用指南

    文章主要介绍Git基础操作,具体介绍如下;1、Git 全局用户名配置。2、创建新仓库。3、添加远程服务器。4、添加...

  • Git:二

    Git基础 通过上一篇Git:一文章,我们大体了解了创建仓库,提交代码等相关流程,本篇重点介绍git相关的基础操作...

  • Git基本操作

    一、 git的基础操作 基础操作 1.在项目里创建一个git : $ git init 链接远程项目: $ git...

  • git 常用命令

    在介绍Git“反悔”操作之前,先简单提及下Git的一些基础知识。 Git项目有3个区域:工作区、暂存区和Git仓库...

  • Git 教程(一)--Git简介及操作流程

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

  • Git 教程(五)--远程分支

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

网友评论

      本文标题:git介绍及基础操作

      本文链接:https://www.haomeiwen.com/subject/caczwftx.html