• git基本操作


    1.Git初始化

    安装完成 Git后,我们需要定制 Git 环境。 每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们

    Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

    1)/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。

    2)~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件,常用选项。

    3)当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。

    设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改

    #全局
    git config --global user.name "zbb"  #配置git使用用户
    git config --global user.email "xxxx@qq.com"  #配置git使用邮箱
    #本项目
    #git config --local user.name "zbb"  #配置git使用用户
    #git config --local user.email "xxxx@qq.com"  #配置git使用邮箱
    git config --global color.ui true  #语法高亮
    git config --list # 查看全局配置
    user.name=zbb
    user.email=xxxx@qq.com
    

    设置完成后在当前用户的家目录会生成.gitconfig文件:

     [root@node1 ~]# ll .gitconfig 
    

    我们可以使用使用—help选项来查看git config命令的其他用法

    git help

    git --help

    man git

    例如,要想获得配置命令的手册,执行

    git help config

    2.Git基础

    2.1获取Git仓库

    进入要使用Git进行管理的目录,执行如下命令:

    git init  #初始化
    

    该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。

    2.2Git命令常规操作

    add 添加文件内容至索引
    bisect 通过二分查找定位引入 bug 的变更
    branch 列出、创建或删除分支
    checkout 检出一个分支或路径到工作区
    clone 克隆一个版本库到一个新目录
    commit 记录变更到版本库
    diff 显示提交之间、提交和工作区之间等的差异
    fetch 从另外一个版本库下载对象和引用
    grep 输出和模式匹配的行
    init 创建一个空的
    Git 版本库或重新初始化一个已存在的版本库
    log 显示提交日志
    merge 合并两个或更多开发历史
    mv 移动或重命名一个文件、目录或符号链接
    pull 获取并合并另外的版本库或一个本地分支
    push 更新远程引用和相关的对象
    rebase 本地提交转移至更新后的上游分支中
    reset 重置当前HEAD到指定状态
    rm 从工作区和索引中删除文件
    show 显示各种类型的对象
    status 显示工作区状态
    tag 创建、列出、删除或校验一个GPG签名的 tag 对象

    常规操作示意图

    img

    文件的状态变化周期

    img

    2.3创建文件

    touch 123.txt
    

    添加文件跟踪

    git add .
    

    由工作区提交到本地仓库

    git commit  -m 'first commit'  
    

    查看git的状态

    git status
    

    提交后的git目录状态

    tree  .git/
    

    简便方法

    git commit -a -m "注释信息"git commit -a -m "注释信息"
    

    -a 表示直接提交

    2.4删除git内的文件

    命令说明:

    • 没有添加到暂存区的数据直接rm删除即可。

    • 已经添加到暂存区数据:

    git rm –cached database
    

    →将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)

    git rm -f database
    

    2.5重命名暂存区数据

    • 没有添加到暂存区的数据直接mv/rename改名即可。

    • 已经添加到暂存区数据:

    git mv 123.txt
    

    2.6查看历史记录

    • git log #→查看提交历史记录

    • git log –oneline 显示在一行

    • git log -2 #→查看最近几条记录

    • git log -p -1 #→-p显示每次提交的内容差异,例如仅查看最近一次差异

    • git log –stat -2 #→–stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息

    • git log –pretty=oneline #→–pretty根据不同的格式展示提交的历史信息

    • git log –pretty=fuller -2 #→以更详细的模式输出提交的历史记录

    • git log –pretty=fomat:”%h %cn” #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。

    使用format参数来指定具体的输出格式

    格式 说明
    %s 提交说明。
    %cd 提交日期。
    %an 作者的名字。
    %cn 提交者的姓名。
    %ce 提交者的电子邮件。
    %H 提交对象的完整SHA-1哈希字串。
    %h 提交对象的简短SHA-1哈希字串。
    %T 树对象的完整SHA-1哈希字串。
    %t 树对象的简短SHA-1哈希字串。
    %P 父对象的完整SHA-1哈希字串。
    %p 父对象的简短SHA-1哈希字串。
    %ad 作者的修订时间。

    2.7还原历史数据

    Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD,上上一个版本则会叫做HEAD^,当然一般会用HEAD~5来表示往上数第五个提交版本。

    git reset –hard hash

    git reset –hard HEAD^ #→还原历史提交版本上一次

    git reset –hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统

    会自动匹配)

    命令

    git log  --oneline --decorate 
    git reset –hard 3de15d4 
    

    2.8还原未来数据

    什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。

    git reflog #→查看未来历史更新点
    git reset --hard  #版本号来回滚
    
     git checkout -- 文件名 #将文件从本地仓库回滚到未修改的状态 
    

    如果我们将修改i的文件已经添加到了暂存区了,又怎么回滚呢?

     git reset HEAD 文件名
    

    如果想让他再回到未修改时的状态,那么就又用到了我们那个git checkout -- 文件名,那个指令了 。

    2.10标签使用

    前面回滚使用的是一串字符串,又长又难记。

    git tag v1.0 #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。

    git tag #→查看当前所有的标签

    git show v1.0 #→查看当前1.0版本的详细信息

    git tag v1.2 -m “version 1.2 release is test” #→创建带有说明的标签,-a指定标签名字,-m指定说明文字

    git tag -d v1.0 #→我们为同一个提交版本设置了两次标签,删除之前的v1.0

    git push origin --tags #基于版本提交

    2.11对比数据

    git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改

    后,再把它提交到仓库就放⼼多了。

    git diff README 本地目录 和缓存区
    
    git diff –cached 缓存区 本地仓库的对比
    

    3.分支结构

    在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。

    那在哪干活呢?干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。所以团队的合作分支看起来会像下图那样。

    img

    3.1分支切换

    git branch 查看当前分支
    git branch dev 创建一个名为dev的分支
    git checkout dev 将工作切换到dev分支上
    git checkout -b dev #创建并切换到dev分支上,和上面两个指令的效果一样
    git branch master
    git merge bug #分支合并---首先切换到master分支,然后在master分支上执行merge指令来合并
    bug分支的代码
    git branch -d bug 删除bug分支
    

    手工解决冲突

    打开编辑文件
    

    3.2删除分支

    因为之前已经合并了分支,所以现在看到它在列表中。 在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。

    查看所有包含未合并工作的分支,可以运行 git branch –no-merged**:

     git branch --no-merged   dev
    

    这里显示了其他分支。 因为它包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败:

     git branch -d dev
     error: The branch 'testing' is not fully merged. If you are sure you want to delete it, run 'git branch -D testing'. 
    

    如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。

    4.异地开发

    上传代码
    1. 给远程仓库起名
    git remote add origin 远程仓库地址
    2. 向远程推送代码
    git push -u origin 分支
    在新电脑上第一次获取代码
    1. 克隆远程仓库代码
    git clone 远程仓库地址(内部已实现git remote add origin 远程仓库地址)
    2. 切换分支
    git checkout 分支
    在新电脑上进行开发
    1. 切换到dev分支进行开发
    git checkout dev
    2. 把master分支合并到dev(仅一次)
    git merge master
    3. 修改代码
    4. 提交代码
    git add .
    git commit -m 'xx'
    git push origin dev
    回老电脑上继续写代码
    1. 切换到dev分支进行开发
    git checkout dev
    2. 拉代码
    git pull origin dev
    3. 继续开发
    4. 提交代码
    git add .
    git commit -m 'xx'
    git push origin dev
    

    开发完毕之后,在dev分支上commit,然后切换到master分支上合并一下dev分支,然后推送到
    GitHub上的master分支上,就算是完成了

    5.常用操作

    开发人员

    • 平时自己开发功能,可以进行提交

      git add .
      git commit -m '1/3'
      git push origin master
      
      git add .
      git commit -m '2/3'
      git push origin master
      
      git add .
      git commit -m '3/3'
      git push origin master
      
    • 创建版本,准备上线

    git tag -a v1.3 -m '撒旦法'
    git push origin --tags 
    

    运维人员

    从开发哪里获取:
    	仓库地址:https://gitee.com/wusd/ziwen.git
    	版本:v1.1
    	
    下载代码:
    	git clone -b v1.1 https://gitee.com/wusd/ziwen.git
    
  • 相关阅读:
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(8) 权限管理,自定义权限,扩展权限
    致博客园网友
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.1) 模块管理,验证权限,展示模块列表
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(6) 控制器基类 主要做登录用户、权限认证、日志记录等工作
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能
    【C#公共帮助类】 WebHelper帮助类
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.4) 登录功能的实现,创建与登录用户相关的接口和实现类
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.3) 登录功能的实现,丰富数据表、建立关联
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.2) 登录功能的实现,接口注入、log4net的使用
  • 原文地址:https://www.cnblogs.com/zdqc/p/11783446.html
Copyright © 2020-2023  润新知