zoukankan      html  css  js  c++  java
  • Git学习总结1

    以下Git学习内容,来自官方文档,本文整理学习过程笔记。

    Git基础

    环境配置

    1. 设置用户信息

      • git config --global user.name "XXX"
      • git config --global user.email "YYY"
    2. 配置文件

      • 全局配置文件: /etc/gitconfig,包含系统每个用户以及他们仓库的通用配置。
      • 当前用户配置文件: ~/.gitconfig
      • 当前仓库的配置文件: .git/config ,针对该仓库有效。
    3. 查看当前配置

      • git config --list
    4. 查看命令帮助,以git add为例子。执行 git add -h

    5. Git别名。
      可通过git config文件来轻松为每一个命令设置一个别名

      
      	git config --global alias.co checkout
      	git config --global alias.st status
      	git config --global alias.br branch
      
      
    6. 设置git的默认提交模板文件,git config --global commit.template ~/.gitmessage.txt

    不同平台的换行格式化功能
    Windows平台上使用CRLF来结束一行,linux平台上使用LF。Git可以在你提交时自动将回车和换行转换为换行,而在检出代码时将换行换回回车和换行。
    在windows平台上,设置如下选项:

    git config --global core.autocrlf true

    在Linux平台上,不需要Git在检出文件时进行自动转换。然而当一个以回车加换行作为行结束符的文件不小心被引入时,Git能不能修正呢?可以,通过

    git config --global core.autocrlf input

    让git只在捡入时进行转换,检出时不再转换。
    如果仅仅是在windows平台上开发项目,可将此项设置为false,在版本库中保留回车换行符号。

    git config --global core.autocrlf false

    忽略文件

    在仓库根目录下新建.gitignore文件,列出要忽略的文件模式匹配符,以免将来误提交这类无用文件。

    GitHub有一个十分详细的针对数十种项目及语言的.gitignore文件列表

    全局忽略文件,通过以下命令来设置

    git config --global core.excludesfile ~/.gitignore_global
    

    ~/.gitignore_global中进行编辑,使之全局有效,所有版本库都保持一样的忽略文件列表。

    以下是一个简单例子:

     
    	 # 忽略所有的 .a 文件
    	*.a
    	
    	# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
    	!lib.a
    	
    	# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
    	/TODO
    	
    	# 忽略任何目录下名为 build 的文件夹
    	build/
    	
    	# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
    	doc/*.txt
    	
    	# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
    	doc/**/*.pdf
     
    

    基础操作

    1. 查看当前Git状态:git status
    2. 新增文件到暂存区:git add fileName
      • git add:
        1. 用于跟踪新文件
        2. 将已跟踪的文件放到暂存区。
        3. 合并时,把有冲突的文件标记为已解决状态。
    3. 从暂存区中去掉暂存:git reset fileName
    4. 提交暂存区文件到本地仓库: git commit -m "comment"
    5. 合并1和3的操作,git commit -a -m "comment"
    6. 比较差异
      • git diff: 比较工作目录和暂存区域快照之间的差异。(如果全部add的话,git diff不会显示差异)
      • git diff --staged:比较暂存区域快照和仓库之间的差异。
      • git diff --check: 检测未暂存的文件是否有空白提交错误
      • git commit:启动默认文本编辑器来输入提交说明。可以通过-m选项将提交信息与命令放在同一行。提交说明为空时会禁止提交。
      • git commit -m "XXXX: Fix benchmarks for speed."
        • 提交信息应当少于50个字符(25个汉字)的单行开始且简要地描述变更,接着是一个空白行,再接着是一个更详细的解释。分隔摘要与正文是必须的,如果将两者混合在一起,那么类似变基等工具无法正常工作。
          *在提交描述中输入 #<编号>,可引用任何一个PR请求或者Issue编号。
    7. 删除跟踪文件:git rm
    8. 文件重命名: git mv Afile BFile

    查看提交历史

    git log默认情况下,会按照时间先后顺序列出所有提交,最近的更新排在最上面。该命令有许多选项,此处列出其最常用的选项:

    • -p:显示每次提交所引入的差异(按补丁的格式输出),当进行代码审查,或者快速浏览某次提交所带来的变化时,很有用。
    • -n:显示最近的n次提交。
    • --stat:查看每次提交的简略统计信息
    • --pretty:以不同方式展示提交历史,有很多子选项可供使用。
    • oneline:每个提交放在一行显示
    • format:定制记录的显示格式,有助于提取日志分析。
      • git log --pretty=format:"%h - %an, %ar : %s"
        • %h:提交的简写哈希值
        • %an:作者名字
        • %ar:作者修订日志,按多久之前的方式显示
        • %s: 提交说明
    • --graph:在输出日志旁以ASCII图形显示分支与合并历史
    • --since:按时间做限制,例如: --since=2.weeks,列出最近两周的所有提交。类似的有until,在指定时间之前的提交。
    • --author:显示指定作者的提交
    • --grep:搜索提交中的关键字
    • -S function_name: 找出添加或删除某个特定函数引用的提交
    • -- file/dir_path:只关心某个文件或目录的历史提交,将该路径选项放到最后位置。
    • --no-merges:排除掉合并提交
    • --decorate:查看各分支当前所指的对象

    git log master..experiment:想查看experiment分支中海油哪些提交尚未合并入mater分支

    git log origin/master..HEAD查看即将推送到远端的内容与实际远端的差异。输出在当前分支中,而不再远程origin分支中的提交。

    修改上次提交

    有时候提交完后发现漏提交文件,或者提交信息写错,此时,可以运行带 --amend 选项来重新提交。

    git commit --amend
    

    这样可以修改前一次提交的信息,同时将本次提交的修改合并到前一次中,在log中只保留一条记录。

    修复提交最明显的价值是可以稍微改进最后的提交,而不会让“啊,忘了添加一个文件”或者“小修补,修正笔误”这种提交信息扰乱你的仓库历史。

    打标签

    Git可以给仓库历史的某次提交打上标签,以示重要,比如V1.0V2.0等等。

    列出已有标签: git tag -l “XXMatch”,可根据字符串来搜索匹配的标签

    Git支持两种标签,

    • 轻量标签,它是某个特定提交的引用
      • git tag v1.4。只显示提交信息,不会显示打标签的作者信息。
    • 附注标签:支持打标签者名字、邮件、日期和标签信息。建议用这种。
      • git tag -a 标签名称 -m "remark"
      • 给指定提交打上标签,先用 git log --pretty=oneline 查看提交历史,得到特定提交的部分校验和,然后执行 git tag -a 标签名称 校验和 -m "remark"

    git show 标签名称: 查看标签和与之对应的提交信息。

    默认情况下,标签不会推送到远程服务器,可使用

    • git push origin <tagname>,推送单条标签
    • git push origin --tags,推送多条标签

    删除本地标签:git tag -d
    删除远程标签:git push origin --delete

    如果需要查看某个标签的版本,并修复该版本中的错误,通常需要据此标签创建一个新分支,在此分支上进行提交。git checkout -b version2 tagname

    作者:浩天之家
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
    Top
    收藏
    关注
    评论
  • 相关阅读:
    [Java] 计算两个日期之间的差(年 月 日)
    Javassist library is missing in classpath! Please add missed dependenc
    $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 区别
    内存管理一
    内存管理四
    内存管理二
    内存分配函数分类
    内存映像文件
    内存管理三
    到底有多少内存
  • 原文地址:https://www.cnblogs.com/cherishui/p/15156547.html
Copyright © 2011-2022 走看看