zoukankan      html  css  js  c++  java
  • Git使用教程(下)

    Git使用教程(下)

    标签管理

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
    
    Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针,所以,创建和删除标签都是瞬间完成的。
    

    创建标签

    打标签步骤:

    1. 首先,切换到需要打标签的分支上:

      $ git branch
      * dev
      master
      $ git checkout master
      Switched to branch 'master'
      
      
    2. 敲命令git tag <name>就可以打一个新标签:

      $ git tag v1.0
      
    3. 可以用命令git tag查看所有标签:

      $ git tag
      v1.0
      

    默认标签是打在最新提交的commit上的。如果需要在历史的某次提交打上标签,则需要找到历史提交的commit id,然后打上就可以了:

    $ git log --pretty=oneline --abbrev-commit
    12a631b (HEAD -> master, tag: v1.0, origin/master) merged bug fix 101
    4c805e2 fix bug 101
    e1e9c68 merge with no-ff
    f52c633 add merge
    cf810e4 conflict fixed
    5dc6824 & simple
    14096d0 AND simple
    b17d20e branch test
    d46f35e remove test.txt
    b84166e add test.txt
    519219b git tracks changes
    e43a48b understand how stage works
    1094adb append GPL
    e475afc add distributed
    eaadf4e wrote a readme file
    

    比方说要对add merge这次提交打标签,它对应的commit idf52c633,敲入命令:

    $ git tag v0.9 f52c633
    

    使用git show <tagname>:查看标签信息:

    $ git show v0.9
    commit f52c63349bc3c1593499807e5c8e972b82c8f286 (tag: v0.9)
    Author: qujialin <1754530626@qq.com>
    Date:   Fri May 18 21:56:54 2018 +0800
    
        add merge
    
    diff --git a/readme.txt b/readme.txt
    ...
    

    创建带有说明的标签,用-a指定标签名,-m指定说明文字:

    $ git tag -a v0.1 -m "version 0.1 released" 1094adb
    

    注: 标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

    操作标签

    • 删除:

      $ git tag -d v0.1
      Deleted tag 'v0.1' (was f15b0dd)
      

      因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

    • 推送某个标签到远程,使用命令git push origin <tagname>

      $ git push origin v1.0
      Total 0 (delta 0), reused 0 (delta 0)
      To github.com:qujialin/learn.git
      * [new tag]         v1.0 -> v1.0
      
    • 一次性推送全部尚未推送到远程的本地标签:

      $ git push origin --tags
      Total 0 (delta 0), reused 0 (delta 0)
      To github.com:qujialin/learn.git
      * [new tag]         v0.9 -> v0.9
      
    • 要删除已经推送到的远程标签:

      步骤

      1. 先从本地删除:

        $ git tag -d v0.9
        Deleted tag 'v0.9' (was f52c633)
        
      2. 从远程删除。删除命令也是push,但是格式如下:

        $ git push origin :refs/tags/v0.9
        To github.com:qujialin/learn.git
        - [deleted]         v0.9
        

    删除关联的远程仓库

    git remote rm origin:删除关联的远程仓库

    自定义Git

    • 让Git显示颜色,会让命令输出看起来更醒目:$ git config --global color.ui true文件名就会标上颜色

    • 忽略特殊文件

      忽略文件的原则:

      1. 忽略操作系统自动生成的文件,比如缩略图等;

      2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

      3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

        举例:忽略Python编译产生的.pyc、.pyo、dist等文件或目录:

        # Python:
        *.py[cod]
        *.so
        *.egg
        *.egg-info
        dist
        build
        

      忽略方法:

      1. GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

      2. 自己添加要忽略的文件: 在仓库下新建.gitignore文件,把要忽略的文件名添加进去,支持通配符

      3. 最后一步就是把.gitignore也提交到Git,就完成了!

      tips:

      add被忽略的文件:$ git add -f <filename>

      git check-ignore -v <filename>命令检查忽略规则:

    配置别名

    告诉Git,以后st就表示status,即git st就相当于git status

    $ git config --global alias.st status
    

    --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

    撤销修改一节中,我们知道,命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。既然是一个unstage操作,就可以配置一个unstage别名:

    $ git config --global alias.unstage 'reset HEAD'
    

    git unstage test.py == git reset HEAD test.py

    配置文件

    配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
    每个仓库的Git配置文件都放在.git/config文件中

    而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

    $ cat .gitconfig
    [alias]
        co = checkout
        ci = commit
        br = branch
        st = status
    [user]
        name = Your Name
        email = your@email.com$ cat .gitconfig
    [alias]
        co = checkout
        ci = commit
        br = branch
        st = status
    [user]
        name = Your Name
        email = your@email.com
    

    配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

    参考链接: Git教程-廖雪峰的官方网站

    梦还远,路还长!
  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/qujialin/p/12104286.html
Copyright © 2011-2022 走看看