美文网首页
《Pro Git》读书笔记

《Pro Git》读书笔记

作者: 饮长刀 | 来源:发表于2017-03-12 10:35 被阅读28次

    Git保证完整性

    • Git 中所有数据在存储前都计算校验和,然后以校验和来引用。SHA-1散列(hash, 哈希). 这是一个由40个十六进制字符组成的字符串,基于 Git 中文件的内容或目录结构计算出来。
    • Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

    初次运行Git前的配置

    • 设置用户信息
    $ git config --global user.name "#NAME#"  
    $ git config --global user.email #NAME@example.com#
    

    获取Git仓库

    在现有目录中初始化仓库

    若需使用Git来对现有的项目进行管理,只需进入该目录并输入:

    $ git init    
    

    该命令将创建一个名为.git的子目录

    克隆现有的仓库

    $ git clone #url#   
    

    这会在当前目录下创建一个需要克隆的仓库的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取的所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。

    记录每次更新到仓库

    检查当前文件状态

    $ git status
    $ git status -s   
    

    跟踪新文件

    git add 命令可以用来开始跟踪新文件,也可以把已跟踪的文件放到暂存区,还可用于合并时把有冲突的文件标记为已解决状态等。将这个命令理解为 ‘添加内容到下一次提交中’ 而不是 ‘将一个文件添加到项目中’ 要更加合适。

    $ git add #FILE#    
    

    暂存已修改的文件

    修改一个已被跟踪的文件,运行 git status 命令后,这个文件将出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但是还没有放到暂存区。要暂存这次更新,需要运行 git add 命令。文件放到暂存区后,假设此时,再修改这个文件,重新编辑后,再运行 git status 将会发现这个文件同时出现在暂存区和非暂存区。原因是Git只不过暂存了运行 git add 时候的版本,需要再次运行 git add 把最新版本重新暂存起来,然后 git commit.

    忽略文件

    可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

    $ cat .gitignore  
    $ *.[oa]  
    $ *~   
    

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

    • 若要知道具体修改了文件的什么地方,可以用 git diff 命令。
    • 不带参数的 git diff 可以直接查看尚未暂存的文件更新了哪些部分。
    • 若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cache 或者 git diff --staged

    提交更新

    $ git commit -m "#DESCRIPTION#"
    

    跳过使用暂存区域

    • git commit 加上 -a 选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤.
    $ git commit -a
    

    移除文件

    • 从Git中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。手动移除文件后需要再运行 git rm 记录此处移除文件的操作。
    • 当我们想把文件从Git仓库中移除(即从暂存区域移除), 但仍然希望保留在当前工作目录,只是不希望Git继续跟踪。可以使用 --cached 选项。
    $ git rm --cached #FILE#
    
    • 删除以 suffix 结尾的所有文件
    $ git rm \*#suffix#
    

    移动文件

    • 在Git中对文件改名
    $ git mv #FILE_FROM# #FILE_TO#
    
    • 实际上 git mv 相当于运行了下面3条命令:
    $ mv #FILE_FROM# #FILE_TO#
    $ git rm #FILE_FROM#
    $ git add #README#
    

    查看提交历史

    • -p 选项用来查看提交文件的差异,-2 选项用来查看最近两次提交日志。 --stat 可以查看每次提交的简略统计信息。
    $ git log -p -2
    
    • 定制要显示的记录的格式
    $ git log --pretty=format:"%h - %an, %ar : %s"
    

    撤销操作

    • 当提交到暂存区后发现忘记提交部分文件或者想要修改提交信息时,可以运行 -amend 重新提交,这将代替第一次提交的结果。
    $ git commit --amend
    

    取消暂存的文件

    • 将暂存的文件改为非暂存状态。
    $ git reset HEAD #FILE#
    

    撤销对文件的修改

    • 将已修改的文件还原为上次提交的样子。
    $ git checkout -- #FILE#
    

    远程仓库的使用

    查看远程仓库

    $ git remote -v    
    

    添加远程仓库

    • 添加一个远程仓库,同时指定一个可以轻松引用的简写:
    $ git remote add #shortname# #url#
    

    从远程仓库中抓取与拉取

    • 使用 fetch 执行完后,将可以拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
    $ git fetch #remote-name#   
    

    推送到远程仓库

    $ git push #REMOTE-NAME# #BRANCH-NAME#  
    

    查看远程仓库更多信息

    $ git remote show #REMOTE-NAME#  
    

    远程仓库的移除与重命名

    $ git remote rename #OLD_NAME# #NEW_NAME#  
    $ git remote rm #REMOTE_NAME#  
    

    打标签

    列出标签

    $ git tag
    $ git rag -1 'v1.8.5*'    
    

    创建标签

    • 标签类型: 轻量标签(lightweight)、附注标签(annotated)

    附注标签

    $ git tag -a v1.0 -m 'SOME MESSAGE'  
    
    • 查看标签信息
    $ git show v1.0  
    

    轻量标签

    • 轻量标签没有保存其他信息
    $ git tag v1.0
    

    后期打标签

    • 对过去的提交打标签,在命令的末尾指定提交的校验和(或部分校验和)
    $ git tag -a v1.0 #SHA-1#
    

    共享标签

    • 默认情况下,git push 命令并不会传送标签到远程仓库服务器上,在创建完标签后必须显示的推送标签到共享服务器上。
    git push origin v1.5
    
    • 若想一次性推送很多标签,可以使用带有 --tags 选项的 git push 命令。这将会把所有不再远程仓库服务器上的标签全部传送到那里。
    $ git push #origin# --tags  
    

    检出标签

    • 在 Git 中不能真的检出一个标签,标签并不能像分支一样来回移动。若想工作目录与仓库中特定的标签版本完全一样,可以在特定的标签上创建一个新分支.
    $ git checkout -b #BRANCHNAME# #TAG_NAME#  
    

    定义别名

    • 例如给 commit 定义别名为 ci
    $ git config --global alias.ci commit
    $ git config --global alias.last 'log -1 HEAD'
    

    相关文章

      网友评论

          本文标题:《Pro Git》读书笔记

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