zoukankan      html  css  js  c++  java
  • Git基础

    创建Git仓库

    • 创建新的仓库

      首先需要创建一个工作目录test,然后在终端切换至该目录并输入:

      $ git init
      
    • 克隆现有仓库

      如果想获得一份test仓库的拷贝,可以在终端输入:

      $ git clone https://github.com/xGonZh10n/test.git
      

      或者

      $ git clone git@github.com:xGonZh10n/test.git
      

    记录每次更新到仓库

    工作目录下的文件主要有以下两种状态:

    • 已跟踪:指那些被纳入版本控制的文件,它们的状态又可细分为未修改,已修改或已暂存。
    • 未跟踪:工作目录中除了已跟踪文件以外的所有其它文件。

    初次创建或克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。编辑某些文件后,Git会将它们标记为已修改文件。我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存的修改,如此反复。所以,使用Git时文件的生命周期如下:

    查看文件状态

    $ git status
    

    如果不需要查看详细状态,可在命令后面加上 -s 参数。

    添加文件到暂存区

    $ git add <file>
    

    该命令使用文件或目录路径作为参数,如果参数是目录路径,则递归跟踪该目录下所有文件;同时,每一次修改文件都需要运行该命令把文件最新版本重新暂存。

    忽略文件

    如果有文件无需纳入Git管理,我们可以创建.gitignore文件,并在其中列出需要忽略的文件模式。该文件的格式规范如下:

    • 所有空行或者以#开头的行都会被Git忽略;
    • 可以使用标准的glob模式匹配;
    • 匹配模式可以以(/)开头防止递归;
    • 匹配模式可以以(/)结尾指定目录;
    • 要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)取反。

    GitHub上有一个十分详细的针对数十种项目及语言的.gitignore文件列表,可以作为参考。

    查看已暂存或未暂存的修改

    如果你想知道当前做的哪些更新还没有暂存,哪些更新已经暂存起来准备提交,可以使用git diff命令。尽管git status命令可以简单的列出修改过的文件名,但是git diff命令将会更详细的显示文件具体哪些行发生了改变。

    • 查看尚未暂存的文件更新了哪些部分:

      $ git diff
      

      此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化。

    • 查看已暂存的将要添加到下次提交里的内容:

      $ git diff --cached
      

    提交更新

    每次提交前,先用git status看一下文件是不是都已经暂存起来,然后再进行提交:

    $ git commit -m "<message>"
    

    移除文件

    从暂存区域移除,并连带从工作目录中删除指定的文件,可以使用以下命令:

    $ git rm <file>
    

    如果删除之前修改过并且已经放到暂存区域,则必须要用强制删除选项-f

    如果想把文件从Git仓库删除,但仍希望保留在当前工作目录中,则需要使用--cached选项。

    移动或重命名文件

    $ git mv <from> <to>
    

    查看提交历史

    $ git log
    

    默认不用任何参数,该命令会按提交时间列出所有的更新,最近的更新排在最上面。

    如果需要显示每次提交的内容差异,可以使用选项-p。你也可以在选项后面加上-2来仅显示最近两次提交。

    如果需要查看每次提交的简略统计信息,可以使用选项--stat。在每次提交下面列出所有被修改过的文件、有多少文件被修改以及被修改过的文件的哪些行被添加或移除。

    如果需要使用其它格式展示提交历史,可以使用选项--pretty

    撤销操作

    如果提交完成后发现漏掉几个文件没有添加,或者提交信息写错。可以运行以下命令尝试重新提交:

    $ git commit --amend
    

    该命令会将暂存区中的文件提交。如果自上次提交以来还未做任何修改,那么快照会保持不变,修改的只是提交信息。而且最终只会有一个提交,第二次提交将代替第一次提交的结果。

    取消暂存的文件

    $ git reset HEAD <file>
    

    撤销对文件的修改

    $ git checkout -- <file>
    

    版本切换

    $ git reset --hard <commit_id>
    

    想要切换到的commit_id可通过git reflog命令查看,此外,上一个版本的commit_id也可使用HEAD^表示。

    远程仓库的使用

    查看远程仓库

    $ git remote <-v>
    

    该命令会列出你指定的每一个远程服务器的简写。如果加上选项-v,则会显示需要读写远程仓库使用的Git保存的简写与其对应的URL。

    添加远程仓库

    $ git remote add <remote-name> <url>
    

    该命令添加一个新的远程Git仓库,同时指定一个名字简写。

    从远程仓库中抓取

    $ git fetch <remote-name>
    

    该命令会访问远程仓库,并从中拉取你还没有的数据到本地仓库,但它并不会自动合并或修改你当前的工作,必须手动将其合并。如果想要自动抓取数据然后合并到当前分支,你可以使用git pull命令。

    推送到远程仓库

    $ git push <remote-name> <branch-name>
    

    查看某个远程仓库

    $ git remote show <remote-name>
    

    重命名某个远程仓库

    $ git remote rename <from> <to>
    

    移除某个远程仓库

    $ git remote rm <remote-name>
    

    打标签

    列出标签

    $ git tag
    

    附注标签

    $ git tag -a <tag-name> -m "<message>"
    

    其中,选项-m指定了一条将会存储在标签中的信息。通过使用git show命令,可以看到标签信息与对应的提交信息。

    轻量标签

    $ git tag <tag-name>
    

    通过使用git show命令,不会看到额外的标签信息,只会显示出提交信息。

    查看标签信息

    $ git show <tag-name>
    

    后期打标签

    在打标签命令后面指定提交的校验和或部分校验和。

    共享标签

    默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。

    • 推送单个标签

      $ git push origin <tag-name>
      
    • 推送多个标签

      $ git push origin --tags
      

    删除标签

    删除本地仓库上的标签,可以使用命令:

    $ git tag -d <tag-name>
    

    但是,上述命令并不会从任何远程仓库中移除这个标签,必须使用以下命令来更新远程仓库:

    $ git push origin :refs/tags/<tag-name>
    

    Git别名

    可以通过git config为每个命令设置一个别名。例如:

    $ git config --global alias.co checkout
    $ git config --global alias.br branch
    $ git config --global alias.ci commit
    $ git config --global alias.st status
    

    为了解决取消暂存文件命令的易用性问题,可以添加自己的取消暂存别名:

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

    这会使以下两个命令等价:

    $ git unstage <file>
    $ git reset HEAD <file>
    

    参考资料

  • 相关阅读:
    快速排序算法图文详解(模版使用)
    数据库中事务和隔离级别解析
    详解对象的创建,布局,定位,存活判断
    SpringCloud-Ribbon:认识并配置负载均衡
    SpringCloud-Feign:接口式微服务调用
    SpringCloud-Eureka(3)集群配置和了解CAP原则
    SpringCloud-Eureka(2)服务注册与信息配置
    SpringCloud-Eureka(1)认识Eureka和初步配置
    Promise
    es6
  • 原文地址:https://www.cnblogs.com/xGonZh10n/p/12301715.html
Copyright © 2011-2022 走看看