GIT学习笔记(二)

前言:最近团队里开始使用GIT代替SVN进行项目管理,虽然之前公司也用过GIT一段时间,但是用的较浅。现在趁着机会好好再学习加深一把...

 

存档点:https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%80%BB%E7%BB%93 

 

SVN与GIT的差异

  1.集中化和分布式区别

  2.一个是在本地只保留某一个版本的文件,一个是保留整个仓库包括所有提交记录

  3.GIT创建branch更强大,分支之间的交互(本体、远端)更方便

  4.SVN储存的是各个版本的文件差异,而GIT存储的是各个版本的快照

 

GIT起源

  当时对GIT制定的几个目标:

    .速度

    .简单的设计

    .对非线性开发模式的强力支持(允许成千上万个并行开发的分支)

    .完全分布式

    .有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

目前这些特性(速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统),成为他赶超其它版本控制工具的一个核心竞争力

 

GIT的配置:

1.系统配置: --system选项

2.用户配置: --global 选项

3.仓库配置:直接读取目录下的config文件

 

.gitignore:在仓库下建立这个文件,可以适应正则表达式忽略指定文件 [官方模板:https://github.com/github/gitignore]

 

关于GIT的命令:

git add: 将这个命令理解为“添加内容到下一次提交中”而不是“将一个文件添加到项目中”要更加合适.[git status -s]

git commit: 暂存区的快照提交,[-m]可以附上注释,[-a]可以提交所有本地已跟踪的文件(修改但未add的),从而跳过git add步骤

git rm:从暂存区里删除文件,[-f]强制删除修改过的文件,[--cached]从暂存区中删除,但不从本地删除。

git mv:改名,其实原理就是先删后加(相当于执行了git rm和git add命令) 

git log:日志,[-p]显示差异,[-数字]显示要看的记录数,[--pretty=forma]指定格式

git branch:查看\创建分支\删除分支

git checkout:切换到分支 

 

pull = fetch + merge

 

变基:结果和使用merge合并相同,但是改版了历史记录。所以针对想要整理一份完美提交历史的时候,是需要变基的。反之,如果看重的是记录真实过程,则应该用合并。(个人理解,程序员用合并,版本发布用变基更多)

 

学习资料:

  1.https://git-scm.com/book/zh/v2/ 《官方手册》

  2.http://www.cnblogs.com/cnblogsfans/p/5075073.html《Git 在团队中的最佳实践--如何正确使用Git Flow》

 

附录:重新组织git本地提交的方法

IDEA

https://www.zhihu.com/question/56624823/answer/149908775

(里面介绍了多种整理合并本地提交的方法,亲测可用)

 

命令行版

http://www.jianshu.com/p/964de879904a

http://yongpoliu.com/reorganize-git-local-commits/

(也可以通过官方教程学习,我这里找了2篇写的比较详细的教程)

posted @ 2017-03-24 17:50  系统攻城狮  阅读(172)  评论(0)    收藏  举报