(02)Git命令行操作

Posted javasl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(02)Git命令行操作相关的知识,希望对你有一定的参考价值。

  一、本地库操作与设置签名

  1、本地库初始化

  上一篇介绍了安装Git客户端工具,安装完后在系统的任何地方右键都会看到Git GUI Here 和 Git Bash Here 两个菜单,点击 Git GUI Here 就会进入到Git的命令行界面,在该界面中可以完全使用Linux命令,如图:

技术图片

  本地初始化命令是:git init,执行该命令,会在所在目录创建一个.git的隐藏文件夹。

  注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。

  2、设置签名,区分不同开发人员的身份

  项目级别/仓库级别:仅在当前本地库范围内有效

  git config user.name xxx

  git config user.email xxxxxx@xx.com

  信息保存位置:./.git/config 文件,如下图

技术图片

   系统用户级别:登录当前操作系统的用户范围

  git config --global user.name tom_glb

  git config --global goodMorning_pro@atguigu.com

  信息保存位置:~/.gitconfig 文件,如下图

技术图片

  优先级采用就近原则:二者都有时采用项目级别的签名,只有系统用户时采用系统用户级别,必须设置一种级别,一般用系统级别。

  注意:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。

  二、基本操作

  1、查看状态、添加、提交

  git status:查看工作区、暂存区状态

  git add [file name]:将工作区的“新建/修改”添加到暂存区

  git commit -m "commit message" [file name]:将暂存区的内容提交到本地库

  演示:

技术图片

  On branch master:在master分支

  No commits yet:本地库还没有任何东西提交(因为提交的东西放在本地库)

  nothing to commit (create/copy files and use "git add" to track):暂存区没有任何可以提交的东西,可以用git add命令追踪

  (1)新建good.txt,执行git status

技术图片

  文件变红,可以用git add添加到暂存区,下面执行git add good.txt

技术图片

  已经添加到暂存区了,红色框中的不用管,关于行末转化什么的。在执行一下git status 

技术图片

  暂存区有变化,可以被提交,显示new files,文件变成绿色,也可以执行git rm --cached good.txt移除暂存区,请看下图 

技术图片

  回到了新建后的状态。现在添加到暂存区,执行git commit good.txt,会跳转到输入提示页面,如下:

技术图片

  输入提示,保存退出,可以看到提示:“my first commit hahahha”,如下图

技术图片

  [master (root-commit) c8b004c] my first commit hahahha:master分支,root-commit第一次提交,c8b004c理解为版本,现在查看一下状态

技术图片

  nothing to commit, working tree clean:没有可以提交的,工作区、暂存区 is clean。

  (2)编辑并保存good.txt,执行git status

技术图片

  文件变成了红色的,并且是modified,可以先执行git add good.txt(添加到暂存区),再执行git commit good.txt(提交到本地库)

技术图片

   1 file changed, 1 insertion(+):修改了一个文件,添加了一行。

  修改后也可以直接提交,执行git commit -m "My test commit" good.txt

技术图片

  2、查看历史记录、前进后退版本

  git log:显示完整历史记录信息,包括哈希值、提交者、邮箱、提交日期、提交注释。

技术图片

  多屏翻页,空格向下翻页、b向上翻页、q退出

  git log --pretty=oneline:显示哈希值和注释

技术图片

  git log --oneline:显示前面的部分哈希值和注释

技术图片

  git  reflog:显示部分哈希值、注释,回退步数(HEAD@{移动到当前版本需要多少步}),可以查看之前的版本

技术图片

  前进或者回退

  git reset --hard [局部索引值] :回退到指定的哈希值版本

  git reset --hard HEAD^:回退一步

  git reset --hard HEAD^^:回退两步,几个^表示回退多少步

  git reset --hard HEAD~n:回退n步

  注意:^、~只能回退

  演示:

  当前版本是1f86cfa,HEAD->master表示当前版本,master分支。

技术图片

  回退到j , git reset --hard 3a20344

技术图片

  回退到h,git reset --hard  5906e69

技术图片

  从g回退到f,执行 git reset --hard HEAD^ 

技术图片

  从f回退到c,git reset --hard HEAD^^^

技术图片

  先向前进到k( git reset --hard 1f86cfa),在回退到f ,需要5步(git reset --hard HEAD~5)

技术图片

  git reset 三个参数比较

  --soft 参数:仅仅在本地库移动HEAD 指针

  --mixed 参数:在本地库移动HEAD 指针、重置暂存区 

  --hard 参数:在本地库移动HEAD 指针、重置暂存区、重置工作区

  3、文件的删除与找回

   rm xxx:删除文件xxx,其实是将文件移到了工作区,真正的删除还要执行 git add 和 git commit

  删除操作尚未提交到本地库找回:指针位置使用HEAD,执行git reset --hard HEAD

  删除操作已经提交到本地库找回:指针位置指向历史记录,执行git reset --hard 哈希值

  注意:只有曾经提交到过本地库的才能找回。

  示例:本地库添加aaa.txt,删除并找回。

技术图片

技术图片

  4、文件比较

  git diff [文件名]:将工作区中的文件和暂存区进行比较

  git diff [本地库中历史版本] [文件名]:将工作区中的文件和本地库历史记录比较

  不带文件名比较多个文件

  演示:红色的是删掉的,绿色的是增加的

技术图片

  演示:比较全部文件,不加文件名,将aaa.txt提交到暂存区后,只比较bbb.txt,因为只有bbb.txt工作区和暂存区不一样。

技术图片

  将两个文件提交,演示比较历史版本:

技术图片

  5、分支管理

  (1)分支概述:本地库会默认创建一个master(主分支),如果有开发任务可以复制出别的分支,比如feature_blue分支、feature_game分支等,每个分支可以互不影响、并存开发。假如有别的分支开发失败,不会影响master分支,始终保持master分支是完好的。其它分支开发完、测试完合并到master分支,master作为一个大版本升级。假如master分支上发现bug,创建一个hot_fix分支,修复完再合并到master上。

技术图片

  分支定义:在版本控制过程中,使用多条线同时推进多个任务。

  分支好处:

  a、同时并行推进多个功能开发,提高开发效率;

  b、各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

  (2)分支操作:

  git branch -v:查看分支,当前分支显示绿色

  git branch 分支名:创建分支,创建后的分支与主分支内容保存一致

  git checkout 分支名:切换分支,切换到哪个分支操作哪个分支

  git merge 分支名(有新内容的):合并分支,合并分支前必须切换回到接收内容的分支

  示例:创建分支hot_fix,并修改内容提交,切换回master分支后,master分支无法看到最新的内容,hot_fix分支的版本高一个

技术图片

  示例:将hot_fix分支合并到master分支,master与hot_fix版本号一致,并且看到最新的内容

技术图片

  合并冲突:两个分支修改了同一个文件的同一个位置,会产生冲突,只能手工合并分支

  合并步骤:

  第一步:编辑文件,删除特殊符号

  第二步:把文件修改到满意的程度,保存退出

  第三步:git add [文件名]

  第四步:git commit -m "日志信息",注意:此时commit 一定不能带具体文件名

  示例:阅读步骤,先左右后上下

技术图片

以上是关于(02)Git命令行操作的主要内容,如果未能解决你的问题,请参考以下文章

3.Git 命令行操作

Git命令行操作

Git命令行操作

git,远程库操作,git命令行命令

git,远程库操作,git命令行命令

Git命令行基本操作