zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    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/Hermioner/p/10061339.html
Copyright © 2011-2022 走看看