美文网首页
Git学习过程(二)

Git学习过程(二)

作者: Hugh1029 | 来源:发表于2018-07-14 21:13 被阅读0次

    本节内容包括了Git的基本命令操作,为最常用的操作,简单记录。
    一、获取Git仓库
    建立Git的项目无外乎两种,一种是从远端clone下来,一种是将已有项目导入。
    1.在现有目录中初始化Git仓库:
    git init: 初始化仓库,在项目目录中执行该命令,会生成一个.git子目录(windwos下可能被隐藏了),该目录就包含了git仓库的所有必须文件。

    2.git add: 对已有的文件进行跟踪;只有对文件跟踪后才能进行提交;作用:跟踪新文件和暂存文件(已经commit的文件修改后执行该命令进行暂存)
    eg: git add *.c

    4.git commit: 提交变更。对已经git add(跟踪)的文件进行提交,并且需要提交注释。
    直接输入git commit会跳出编辑器来输入信息,简单的方式是使用git commit -m "内容"
    eg: git commit -m "这是我第一次提交内容"
    git commit -v:会把提交的差异显示在编辑器
    跳过暂存区进行提交:我们每次都是git add之后再能进行git commit,这似乎有一点点繁琐,我们可以简化这个过程。
    git commit -a -m "提交内容" :只适用已经提交的内容的修改

    5.git clone: 克隆仓库。相当于svn的checkout命令,将远端仓库的的文件全部拉取下来。命令行是没有checkout这个命令的,但是在使用idea的时候,第一次克隆下来的时候也是用点击checkout。
    eg: git clone url 本地名
    其中url可以是https或者ssh,本地名就是将远程仓库克隆下来后在本地的名字

    6.记录变更说明:
    工作目录下所有的文件都处于两种状态:已跟踪(tracked)和未跟踪(untracked)(我理解的是git add和git commit的文件都是已经跟踪了的,而最基础的git add都没有执行的文件是未跟踪的)。已跟踪指上一次快照中包含的文件。已跟踪又分为三种状态:未修改、已修改和已暂存。
    当刚clone之后,所有的文件都是已跟踪未修改的。

    7.git status:查看当前文件的状态,也可以查看到当前属于什么分支。但是git status的信息比较全面也比较冗长,当需要简洁的查看时候。
    使用git status -s(git status -short的简写)
    使用git status -s在文件的最见面会有个标记,标记的说明如下:
    ??:未被跟踪的文件
    M:已经修改的文件(modified)没有暂存
    MM:已修改并被添加到暂存区,之后又被修改过(暂存区和工作区都有)
    A:已经暂存

    8.忽略文件
    创建.gitignore文件,不想提交的均可放入到其中。规则如下:
    空行或者#开头的会被忽略
    支持标准的glob模式
    以斜杠(/)开头的可以禁止递归匹配
    以斜杠(/)结尾的标识目录
    以感叹号(!)开头的表取反
    glob是适用shell的简化版正则(linux学习很重要而且成为较为厉害的程序员必学),比如星号()匹配零个或多个字符,问号(?)匹配一个字符,[abc]配置其中的任意一个,[0-9]范围内的任何一个,*表示嵌套目录
    eg:
    *.a : .a类型都被忽略
    build/: build目录下都被忽略
    更多的参考可以查看:https://github.com/github/gitignore

    9.git diff: 查看已暂存和未暂存的变更(查看变更的详情,输出的是补丁)
    查看尚未添加到暂存区的变更(没有git add),直接输入git diff
    查看哪些已暂存的内容会下一次提交: git diff --staged
    再强调,git diff只是显示还没有进入暂存区的变更,所以你添加到暂存区之后输入git diff是没有任何提示的
    已经暂存的除了git diff --staged 之外,还可以使用git diff --cached来查看
    还有其他的git diff命令,同时有很多git diff的工具,可以通过git difftool来使用.git difftool --tool-help

    10.移除文件
    git rm 文件名
    如果要从git里面移除文件,需要从跟踪列表移除(从暂存区移除),再提交
    已经暂存了,那需要使用命令:
    git rm -f 文件
    将文件留在硬盘上,只是不想跟踪
    git rm --cached 文件

    11.移动文件
    git mv file_form file_to

    12.git log: 查看提交历史
    执行git log 可以查看到提交历史,按照时间列出
    最有用的选项 -p:会显示出每次提交所引入的差异
    git log -p -2: 查看最近两次提交
    git log --stat :查看每个提交的简要统计信息

    --pretty命令选项,后面可加=online/short/full/fuller
    或者=format: "%h -%an,%ar:%s"
    format参数如下:
    %H:提交对象的散列值
    %h:提交对象的简短散列值
    %T:树对象的散列值 %t:简短
    %P:父对象散列值; %p:简短
    %an:作者名字;
    %ae:作者邮箱
    %ad:创作日期
    %ar:相对于当前日期的创作日期
    %cn:提交者名字
    %ce:提交者的邮箱
    %cd:提交日期
    %s:提交信息的主题

    online与format可以配合 --graph来使用,图形化。

    gti log常用的项:
    -p: 按不听显示每次提交引入的更改
    --stat: 显示每个提交中被更改的文件的统计信息
    --shortstat:
    --name-only: 每个提交信息后显示被更改的文件列表
    --name-status:上个命令基础上显示“已更该/新增/删除”统计信息
    --abbrev-commit:只显示SHA-1的前几个字符
    --relative-date:显示相对日期
    --graph:图形化
    --pretty

    13.限制提交历史的输出范围
    git log -n:最近多少次
    --since/--after:某天之后
    --until/--before:指定日期之前
    --author:作者
    --committer:提交者
    --grep: 关键字
    -s:只输出包含添加/输出指定字符串的提交。
    要查看author和grep,要添加--all-match

    14.撤销已提交:
    git commit --amend

    15.撤销已暂存:
    git reset HEAD 文件名:移出暂存区

    16:撤销对文件的修改(危险的命令)
    git checkout --[filename]
    会将之前的修改撤销,恢复的之前的文件

    17.远程仓库的使用
    1).git remote:显示远程仓库简称,默认源仓库叫做:origin
    2).git remote -v :显示每个仓库的地址
    3).添加远程仓库: git remote 短名 地址
    4).git fetch与git pull
    git fetch会将远程仓库新增的数据拉取到本地仓库,但是不会合并。需要自己手动合并
    git pull:会将远程仓库拉取下来,并尝试自动合并
    5)gti push: 数据推送到远程仓库:
    在推送下,先gti pull,不然会被拒绝推送.
    git push 仓库短名 分支名
    eg: git push origin master
    第一次应该使用:git push -u origin master:设置一个默认的仓库
    6).查看仓库信息
    git remote show 仓库名

    18.重命名与删除远程仓库
    重命名:git remote rename 原名 新名
    删除:git remote rm 仓库名

    19.标记
    git tag:列举标记 git tag -l
    创建注释标签: git tag -a v1.2 -m "我的标签"
    显示:git show v1.2
    创建轻量标签:git tag v1.4 -lw
    补加标签:git tag -a v1.2 ee

    共享标签:git push origin [tagname]
    一次提交多个: git push origin --tags

    检出标签:
    git checkout -b [分支名] [标签名]

    20.git别名
    git config alias.别名 '原名'

    相关文章

      网友评论

          本文标题:Git学习过程(二)

          本文链接:https://www.haomeiwen.com/subject/jijkpftx.html