zoukankan      html  css  js  c++  java
  • git

     

    git 基本功


    获取 git 仓库

    • 普通目录转换为仓库
      cd ...
      git init
      

        

    • 获取现有的仓库
      git clone git@gitee.com:argor/great.git
      git clone git@gitee.com:argor/great.git mygreat

        获取现有仓库时,可以为仓库设定新的目录名【默认为 great】:mygreat。

     

    更新到仓库

    • 检查当前库的文件状态
      git status
      git status -s

       

    • 添加新的跟踪文件
      git add hello.txt
      git *
      

        可以指定跟踪某个确定的文件,也可以一次性全部添加。

    • 暂存修改的文件
      git add hello.txt
      

        已经暂存过的文件,在修改后需要再次暂存。

    • 查看已暂存和未暂存的修改
       git diff
      warning: LF will be replaced by CRLF in hello.txt.
      The file will have its original line endings in your working directory
      diff --git a/hello.txt b/hello.txt
      index b1a7984..8d0e412 100644
      --- a/hello.txt
      +++ b/hello.txt
      @@ -1 +1 @@
      -hello git.
      +hello git
      

        暂存过文件 hello.txt 后重新修改,对比暂存后未暂存的文件差异【行末删除了英文句号】。

    • 提交更新
      git commit
      

        
      跳过暂存,直接提交

      git commit -a
      

        a 选项使本次提交包含了所有修改过的文件。

    • 移除文件
      # 同时移除文件清单和文件系统上的文件
      git rm hello.txt
      
      # 暂存区文件,使用 -f 选项
      git rm -f hello.txt
      
      # 仅在 git 仓库中移除,保留文件系统文件
      git rm --cached hello.txt
      

        

    • 移动文件
      git mv hello.txt Hello.java
       
      # 在 git 下使用 mv 等同于如下一组命令的效果
      mv hello.txt Hello.java
      git rm hello.txt
      git add Hello.java
      

        

     

    查看提交历史

    • 最近的提交会显示在最上边
      git log
      
      git log --pretty=oneline
      

        

       

    撤销操作

    • 撤销操作是不可逆的。
    • 撤销提交注释
      # 撤销操作,会把暂存区重新提交。暂存区空,会修改 提交message。
      git commit --amend
      

        暂存区空时,等于修改了上次提交的注释信息。

    • 取消暂存的文件

      git reset HEAD hello.txt
      

        

    • 撤销对文件的修改 
      git checkout hello.txt
      

        hello.txt 还原到之前提交时的状态。

     

     

    远程仓库的使用

    • 查看远程仓库
      $ git remote
      origin
      
      $ git remote -v
      origin  git@gitee.com:argor/great.git (fetch)
      origin  git@gitee.com:argor/great.git (push)
      

       
      查看某个具体的远程仓库信息

      git remote show origin
      

        

       

    • 从远程仓库中抓取&拉取
      git fetch pb
      # 下载远程仓库所有的数据到本地仓库;
      

        

    • 推送到远程仓库
      git push origin master
      # 推送master 到 origin;
      

        

      

    打标签

    • Git 允许为仓库历史中的某一次提交打上标签 
    • 列出标签
      $ git tag
      v1.0.0
      v1.1.0
      v1.2.0
      v1.2.1
      
      $ git tag -l *1
      v1.2.1
      # 使用通配符时,选项必选
      

        

    • 创建标签
      git 支持两种标签:轻量标签、附注标签*。

    • 附注标签
      $ git tag
      
      $ git tag -a v0.1
      
      $ git tag
      v0.1
      
      # tag命令的 a 选项用来创建附注标签。
      

        
      查看标签信息

      $ git show v0.1
      tag v0.1
      Tagger: argor <15389222587@qq.com>
      Date:   Fri May 7 20:26:33 2021 +0800
      
      v0.1
      
      commit bb5156fe4dd9f3a8d3eed415f40716d4a3f8856b (HEAD -> dev, tag: v0.1)
      Author: argor <15389222587@qq.com>
      Date:   Thu May 6 17:50:07 2021 +0800
      
          commit
      
      diff --git a/hello.txt b/hello.txt
      new file mode 100644
      index 0000000..8d0e412
      --- /dev/null
      +++ b/hello.txt
      @@ -0,0 +1 @@
      +hello git
      

        

    • 轻量标签
      无须选项,直接写标签名即可。
      $ git log --pretty=oneline
      bb5156fe4dd9f3a8d3eed415f40716d4a3f8856b (HEAD -> dev, tag: v0.1) commit
      3c0a9979b82aec0bbc23879b6a8dcf01ecf8fba1 lklj
      4ff7a382f526fafd6b78a4d66663c039fb8e85c9 add Java code
      5688fa6278a90163ea066dcb3fe22c268b922e25 (tag: v0.0.6) hello
      ab62d8c2fee1bc4560fec6df7d030606659fadad (origin/master, origin/HEAD, master) Initial commit
      
      argor donatello@argor MINGW64 /e/tmp/git/test/great (dev)
      $ git tag v0.0.8 4ff7a382f52
      
      argor donatello@argor MINGW64 /e/tmp/git/test/great (dev)
      $ git log --pretty=oneline
      bb5156fe4dd9f3a8d3eed415f40716d4a3f8856b (HEAD -> dev, tag: v0.1) commit
      3c0a9979b82aec0bbc23879b6a8dcf01ecf8fba1 lklj
      4ff7a382f526fafd6b78a4d66663c039fb8e85c9 (tag: v0.0.8) add Java code
      5688fa6278a90163ea066dcb3fe22c268b922e25 (tag: v0.0.6) hello
      ab62d8c2fee1bc4560fec6df7d030606659fadad (origin/master, origin/HEAD, master) Initial commit
      

        



    • 后期打标签
      $ git log --pretty=oneline
      bb5156fe4dd9f3a8d3eed415f40716d4a3f8856b (HEAD -> dev, tag: v0.1) commit
      3c0a9979b82aec0bbc23879b6a8dcf01ecf8fba1 lklj
      4ff7a382f526fafd6b78a4d66663c039fb8e85c9 add Java code
      5688fa6278a90163ea066dcb3fe22c268b922e25 hello
      ab62d8c2fee1bc4560fec6df7d030606659fadad (origin/master, origin/HEAD, master) Initial commit
      
      argor donatello@argor MINGW64 /e/tmp/git/test/great (dev)
      $ git tag -a v0.0.6 b922e25
      fatal: Failed to resolve 'b922e25' as a valid ref.
      
      argor donatello@argor MINGW64 /e/tmp/git/test/great (dev)
      $ git tag -a v0.0.6 5688fa627
      
      # 指定提交的校验和。
      # 取首不取2尾。
      

        

    • 共享标签
      通过 git push 不会联通本地仓库的标签一起提交。
      需要远程库也打上标签,必须显示推送。
      $ git push origin v0.0.6
      
      # 允许一次传输多个标签,需要带上选项
      $ git push origin --tags
      

        虽然推送标签需要显示操作,获取却不需要。

    • 删除标签
      $ git tag -d v0.0.6
      # 删除本地标签
      
      $ git push origin --delete v0.0.6
      # 删除远程库标签
      

        

    • 检出标签
      # 检出标签
      $ git checkout 
      
      # 通过 git status 可以查看当前标签信息。
      

        

    Git 别名 

    • 为命令取别名,例如为 commit 取个别名:ci。 

     

      

     

    git 分支


    分支简介

    • 分支简介
      git 每次提交的是文件的快照,既不是文件的变化也不是差异。
      暂存(git add)操作会为文件计算校验和,然后保存文件的快照到 git 仓库。
      提交(git commit)的时候,把计算的校验和提交到 git 仓库。

    • 查看分支
      查看都有哪些分支
      $ git branch -a
      * master
        remotes/origin/HEAD -> origin/master
        remotes/origin/lsj
        remotes/origin/master
        remotes/origin/rk
    • 分支创建
      $ git branch dev
      # 此时 Git 创建了一个指针。
      # 创建分支,并不会切换分支。
      # Git 中使用了一个特殊指针 HEAD,表示当前的本地分支。
       
      $ git push --set-upstream origin dev
      # 通常分支的创建删除都是在本地库操作。
      

        

    • 分支切换
      切换分支,使用 checkout 命令。
      $ git checkout testing
      

        Git 允许在不同分支间来回切换,独立工作,还可以进一步合并分支。(branch、checkout、commit)
      Git 中创建一个分支的空间开销,41个字节(40个字符 & 一个换行符)。
      Git 创建分支,合并分支,因为实现上仅仅是个指针,所以十分高效。

    分支的新建与合并

    • 分支创建与合并的例子解释
      分支的创建、合并,步骤如下:
          1.开发一个具体用户的项目;
          2.为满足一个新的需求,创建一个分支;
          3.开始新需求的实现;

      开发过程中,出现了一个紧急事件。(项目运行时,常常消耗cpu到100%)
          1.切换到出问题的分支;
          2.创建新的分支,切过去;
          3.修复她;
          4.测试通过后,切回出问题原始分支,合并到出问题的分支;

    • 合并分支
      # master 合并 dev。
      git checkout master
      git merge dev
      

        
      合并后删除分支

      git branch -d dev
      git push origin --delete dev
      # 通常分支的创建和删除都是在本地仓库进行。
      

        

    • 遇到冲突时的分支合并

    Gitee.com


     

      

     

     

     

    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    .NETCORE微服务架构--网关篇(Ocelot)
    Hangfire实战--添加DashBoard登录权限
    IIS发布-HTTP谓词限制访问
    基于Dapper的泛型Repository
    .Net Framework JWT验证
    .Net Framework swagger 进阶----头部参数
    .Net Framework下安装api swagger
    ErrorSet
    201907总结
    博客美化
  • 原文地址:https://www.cnblogs.com/argor/p/14734651.html
Copyright © 2011-2022 走看看