美文网首页
5. Git补充资料

5. Git补充资料

作者: acc8226 | 来源:发表于2017-02-24 13:34 被阅读28次

自动补全

在输入 Git 命令的时候可以敲两次跳格键(Tab),就会看到列出所有匹配的可用命令建议

设置alias

$ git config alias.shortname <fullcommand>

让Git显示颜色,会让命令输出看起来更醒目:

$ git config --global color.ui true

.gitignore详解

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可浏览:https://github.com/github/gitignore

注意:.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

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

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。

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

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

# (相对)忽略 build/ 相对目录下的所有build目录, 不忽略build文件
build/
# (相对)会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt

# (相对)忽略所有 .log 结尾的文件
*.log
# 但 pref.log 除外
!pref.log

# (绝对)仅忽略*项目根*目录下的 TODO 文件和目录
/TODO

以下是说明:

# 忽略something文件和something目录
something
# 只忽略something目录,不忽略something文件
something/
# 只忽略something文件,不忽略something目录
something
!something/
# 只忽略当前目录下的something文件和目录,子目录的something不在忽略范围内
/something
# 总结: 一般用第二种'something/'就够了

示例: gitignore/Java.gitignore

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

用git check-ignore命令检查规则:

$ git check-ignore -v App.class
.gitignore:3:*.class App.class 

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

分支开发策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。


分支的衍合

衍合是按照每行的修改次序重演一遍修改,而合并是把最终结果合在一起。
$ git checkout experiment
$ git rebase master

它的原理是回到两个分支最近的共同祖先,根据当前分支(也就是要进行衍合的分支 experiment)后续的历次提交对象(这里只有一个 C3),生成一系列文件补丁,然后以基底分支(也就是主干分支 master)最后一个提交对象(C4)为新的出发点,逐个应用之前准备好的补丁文件,最后会生成一个新的合并提交对象(C3'),从而改写 experiment 的提交历史,使它成为 master 分支的直接下游,如图 3-29 所示:

一般我们使用衍合的目的,是想要得到一个能在远程分支上干净应用的补丁 — 比如某些项目你不是维护者,但想帮点忙的话,最好用衍合:先在自己的一个分支里进行开发,当准备向主项目提交补丁的时候,根据最新的 origin/master 进行一次衍合操作然后再提交,这样维护者就不需要做任何整合工作(译注:实际上是把解决分支补丁同最新主干代码之间冲突的责任,化转为由提交补丁的人来解决。),只需根据你提供的仓库地址作一次快进合并,或者直接采纳你提交的补丁。

git rebase [主分支] [特性分支] 命令会先取出特性分支 server,然后在主分支 master 上重演。

当前分支可以git rebase [主分支] , 省略了当前特性分支而已。

衍合的风险

 呃,奇妙的衍合也并非完美无缺,要用它得遵守一条准则:

一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

如果把衍合当成一种在推送之前清理提交历史的手段,而且仅仅衍合那些尚未公开的提交对象,就没问题。如果衍合那些已经公开的提交对象,并且已经有人基于这些提交对象开展了后续开发工作的话,就会出现叫人沮丧的麻烦。

自定义git

让Git显示颜色,会让命令输出看起来更醒目:$ git config --global color.ui true

stash储藏的用法

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug
git stash save 'comme' //这样stash会有注释

Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

  • git stash applys恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
  • 另一种方式是用git stash pop,恢复的同时把stash内容也删了:

恢复指定的stash, 只需要指定序号, {0}代表最新的stash

$ git stash apply stash@{0}
$ git stash apply stash@{1}
...
# %d代表数字
$ git stash apply stash@{%d}

bash常用命令

$ cd /d/k_git(正确) 进入对应的目录

$ mv [old-name] [new-name] 重命名
$ rm test.txt删除当前目录下的一个文件
$ mkdir [folder-name] 当前目录下建立文件夹
$ pwd 显示当前目录

$ ls -al 查看该目录下的文件和文件夹
$ ls -ah 查看该目录下的文件和文件夹包含隐藏目录

疑难

Git pull失败

refusing to merge unrelated histories

解决方案:添加--allow-unrelated-histories

$git merge origin/master --allow-unrelated-histories

Git中的AutoCRLF换行符问题

建议把autocrlf设置为false,并且把所有文件转换为Linux编码(即LF\n)

#提交检出均不转换
$ git config --global core.autocrlf false`
这是三种取值true, input, false的解释

相关文章

  • 5. Git补充资料

    自动补全 在输入 Git 命令的时候可以敲两次跳格键(Tab),就会看到列出所有匹配的可用命令建议 设置alias...

  • 补充资料

    朱其辉:营销总监《如何发动会议,跟随与追随》 他在偏远的广西独立运作,在广西经营环境比较差的情况下,依然能成长起来...

  • 课堂补充资料

    亲爱的同学们: 大家好!上周我在讲资产负债表的内容分析时,以上市公司华微电子接到上交所给该公司的问询函涉及到的货币...

  • 课题资料补充

    主要理论成果和实践成果 理论成果 实践成果 1.通过班级学生民主决议,制定了具体的班级量化细则和加减分制度,让班级...

  • Git

    资料整理 廖雪峰 JavaScript Python Git 教程 git官方文档 笔记 摘自上面的资料# Git...

  • Git基本指令

    参考资料 Git Community Book 中文版 Git 易百教程 Git 英文参考资料 有关git的工具有...

  • git 相关 | git补充

    1 自定义 Git - 配置 Git 配置 Git 如第一章所言,用git config配置 Git,要做的第一件...

  • 个人服务器上搭建基于Git的Hexo博客

    参考教程 参考资料已经非常详细,请参考它来完成,本文略作补充此外,如果真的无法配置好Git环境,也可以每次写完文章...

  • 理解 Git

    主要内容介绍 1.设计思想 2.数据流向 3.git flow 4.其他介绍 5.思考讨论 6.参考资料 1.设计...

  • varnish实战--VCL实战

    实战一: 实战二: 补充: 生产环境案例一则: 补充资料:

网友评论

      本文标题:5. Git补充资料

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