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


     

      

     

     

     

    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    CodeForces 681D Gifts by the List (树上DFS)
    UVa 12342 Tax Calculator (水题,纳税)
    CodeForces 681C Heap Operations (模拟题,优先队列)
    CodeForces 682C Alyona and the Tree (树上DFS)
    CodeForces 682B Alyona and Mex (题意水题)
    CodeForces 682A Alyona and Numbers (水题,数学)
    Virtualizing memory type
    页面跳转
    PHP Misc. 函数
    PHP 5 Math 函数
  • 原文地址:https://www.cnblogs.com/argor/p/14734651.html
Copyright © 2011-2022 走看看