zoukankan      html  css  js  c++  java
  • (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 一定不能带具体文件名

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

  • 相关阅读:
    【转+补充】在OpenCV for Android 2.4.5中使用SURF(nonfree module)
    Delphi StarOffice Framework Beta 1.0 发布
    Angular ngIf相关问题
    angularjs文档下载
    公众号微信支付开发
    公众号第三方平台开发 教程六 代公众号使用JS SDK说明
    公众号第三方平台开发 教程五 代公众号处理消息和事件
    公众号第三方平台开发 教程四 代公众号发起网页授权说明
    公众号第三方平台开发 教程三 微信公众号授权第三方平台
    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
  • 原文地址:https://www.cnblogs.com/javasl/p/12562352.html
Copyright © 2011-2022 走看看