• Git学习03-----最基本的几个命令


    一. 取得项目的Git仓库

    有两个办法:

    1.1 在工作目录中初始化新仓库

    就是在现有的某个项目中执行git init后,就可以对这个项目进行git项目管理了。

    1.2 从现有从库克隆

    git clone [url]

    通过执行上面这条命令,就可以对这个URL指定的项目进行git项目管理了。

    Note:成功进行Git项目管理后,会有一个隐藏文件:.git,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝

    二. 跟踪修改

    工作目录下的所有文件不外乎两种状态:已跟踪和未跟踪。

    1. 未跟踪

    假设我们建立了一个新的文件hellworld,这个时候查看git status命令,就会出现提示“nothing added to commit but untracked files present (use "git add" to track) ,意思是出现了未跟踪的文件,我们可以通过执行git add来让它成为跟踪文件。

    2. 暂存已修改文件

    假设helloworld已经add了,这个时候我再修改里面的内容,并git status,就会发现如下提示信息

    $ git status
        # On branch master
        # Changes to be committed:
        # (use "git reset HEAD <file>..." to unstage)
        #
        # new file: README
        #
        # Changes not staged for commit:
        # (use "git add <file>..." to update what will be committed)
        #
        # modified: helloworld
        #

    说明:a.txt出现在“Changes not staged for commit"下面,说明已跟踪文件的内容已经发生了变化,但是还没有放到暂存区中,要暂存这次更新,需要运行git add命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)

    3. 同一个文件多次修改

    假设上面的helloword.java文件已经被修改过了,且执行了git status后,是如下状态:

    这个时候又再次修改,这个时候git status就会出现同一个文件的两种状态:

    git add后,才会得到最新的更新,否则,直接commit的是本次更新前的那一次的修改的内容,即绿色修改部分的内容。

    三. 忽略某些修改

    一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:

    第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 logtmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

    文件 .gitignore 的格式规范如下:

    • 所有空行或者以注释符号  开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

    所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

    我们再看一个 .gitignore 文件的例子:

    四. 查看已暂存和未暂存的更新

    假设远程提交的内容是打印Hello World这个字符串,但是本地第一次修改后并暂存(git add)起来后,内容是:Hello World2。 这个时候又修改一次,内容是Hello World222。

    1. 对比工作区(未暂存的)和已经暂存的内容差异

    执行 git diff

    2. 对比暂存的和上一次提交的内容的差异

    执行 git diff --staged 或者git diff --cached

    五. 文件提交

    1. 正规流程git add, git commit提交

    2. 快捷流程,可以跳过git add,但是需要添加 -a选项: git commit -a,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。

    六. 移除文件

    git rm 添加参数选项  文件名

    七. 查看提交历史

    1. git log

    它有很多的可选参数,比如限制在一个提交一行显示,显示的格式,显示的长度等等。

    2. 使用图形化工具查阅提交历史

    有时候图形化工具更容易展示历史提交的变化,随 Git 一同发布的 gitk 就是这样一种工具。它是用 Tcl/Tk 写成的,基本上相当于 git log 命令的可视化版本,凡是 git log 可以用的选项也都能用在 gitk 上。在项目工作目录中输入 gitk 命令后,就会启动图 2-2 所示的界面。


                                        图 2-2. gitk 的图形界面

    上半个窗口显示的是历次提交的分支祖先图谱,下半个窗口显示当前点选的提交对应的具体差异。

    八. 撤销操作

    有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

    $ git commit --amend

    此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

    启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。

    如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend 提交:

    九. 远程仓库的使用

    1. 查看当前的远程仓库

    git remote -v命令,就可以看见:

    2. 远程仓库的删除和重命名

    碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:

     九. 打标签

    标签作用: 在开发的一些关键时期,使用标签来记录这些关键时刻, 例如发布版本, 有重大修改, 升级的时候, 会使用标签记录这些时刻, 来永久标记项目中的关键历史时刻;

    查看标签: 列出的标签安装ASCII字母顺序确定, 排序没有很明确的意义;

    – 列出所有的标签 :

    git tag  

    – 使用限定列出限定后的标签 :

    git tag -l v1.*  

    这里写图片描述

    标签分类

    Git中的标签分为 轻量级标签(lightweight) 和 带注释的标签(annotated), 一般情况下推荐使用带注释的标签, 如果标签是临时的可以采用轻量级标签;
    -- 轻量级标签 : 轻量级标签中的信息含量很少, 这种标签只代表某时刻代码的提交, 相当于指向这个提交的指针;
    -- 带注释标签 : 这种标签是一种校验和, 包含标签名, 邮箱, 日期, 标签信息, GPG签名 和 验证, 它相当于一个对象, 封装了这些信息;

    创建标签 :

    – 创建轻量级标签 : 这样的标签没有附带其它的信息;

    git tag tag_name

    git tag v2.0  

    这里写图片描述

    – 创建带注释标签 : -m 后跟的是注释信息, 当使用git show v2.1的时候, 会显示这个注释信息;

    git tag -a v2.1 -m 'first version'  

    这里写图片描述

    – 为之前的提交添加标签 : (直接git tag commitID   这个ID是需要打标签的那一次提交)
    先使用 git log –oneline 命令列出之前的提交, 会有一个七位的十六进制数进行标记, 使用git tag -a v3.1 f1bb97a 命令即可为这个提交添加标签;

    $ git log --oneline  

    f1bb97a first commit

    git tag -a v3.1 f1bb97a  

    这里写图片描述

    删除标签 : 使用命令 git tag -d 标签名 命令删除标签;

    git tag -d v0.1  

    这里写图片描述

    共享标签 : 即将标签提交到GitHub中;

    git push origin --tags  

    这里写图片描述

     参考文献

    《Pro Git》

    https://blog.csdn.net/u013372487/article/details/52937077

  • 相关阅读:
    基于索引的MySQL优化
    SQL优化:
    in的对象选择(子查询还是List集合),in 的优化,in与exists
    嵌套查询及其作用域:
    group by实现原理及其作用
    批量打回未报bug修复
    解析Job,bpmn文件的小项目总结
    用户短时间内多次提交与保存带来的问题
    嵌套连接
    多范围读取优化
  • 原文地址:https://www.cnblogs.com/Hermioner/p/10061339.html
Copyright © 2020-2023  润新知