不明觉厉的git
在虚拟的计算机世界,git让我们体会到了一种不一样的感觉,也许是那种不明觉厉的高深莫测。
什么是git
Git is a DISTRIBUTED VERSION CONTROL SYSTEM (DVCS)
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
DVCS和CVCS的区别
下面这个图是svn的仓库,有一个中心仓库,所有的人都需要去往这个仓库里面提交代码,新的代码也需要从仓库中获得。
下面这个是git的模式,每一个人都有完整的仓库,虽然下面的图中还是有一个中心仓库,但是不是必须的,每个人自己都可以提交代码,互相之间可以合并代码。
爹
虎父无犬子,Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
官网
图形界面工具
很多,我最喜欢的是source tree.
git入门的基本命令
下面的贴图是我的命令行工具,使用的是zsh,感兴趣的朋友可以看一下这个链接oh-my-zsh
获取帮助
看看如何获得帮助
git help
git help config
如果想查询具体某个命令的帮助,可以在git help后面加上该命令
配置基本信息
基本信息会保存在你提交的修改中,作为备份,所以如果我们对项目做了多少贡献,都是可以查出来的。
加上自己姓名
git config --global user.name "Yin Shen"
加上自己邮箱
git config --global user.email shenyin@rocketmail.com
加上颜色
git config --global color.ui true
创建仓库
现在让我们创建一个仓库来实战吧, 使用init
命令就可以啦。
git init
git基本概念
-
创建一个新文件的时候,该文件处于没有被追踪的状态
Paste_Image.png 使用
add
命令,使得文件登上舞台(staging staging)
登上舞台是为了拍照,我们看一下第三个状态
上图的git st实际上是git status命令,被重命名了。
- 把staging staging中的东西都拍照(commit change)
被拍照的文件都有了一个snapshot(快照)
上面的步骤是我们使用git的一个最重要的模式:edit/stage/commit pattern
- 在本地文件夹编辑文件
- 如果想备份当前改动了,就使用
git add
命令放到舞台(stage) - 如果对staged snapshot满意,就可以commit,这样这个snapshot就变成项目历史的一部分了
注意:add,commit命令都是对本地文件的操作,这个和SVN有很大的差别,SVN的所有操作都要和远程服务器通信,但是git是分布式的,大部分操作并不一定需要和中心仓库交互。
具体区别可以看这个链接https://www.atlassian.com/git/tutorials/saving-changes/git-add
add的多种方式
git add <list of files>
git add --all
git add *.txt
git add 文件夹/*.txt
git add 文件夹
git add "*.txt"
日志
可以使用
git log
git log --pretty=oneline
git log --pretty=format:"%h %ad- %s [%an]"
查看修改历史可以用
git blame index.html --date short
删除文件
从文件系统删除
git rm README.txt
不跟踪
git rm --cached development.log
好用的命令别名
把她们加在.gitconfig文件中就可以了,或者像这样通过命令行配置git config --global alias.mylog "log --pretty=format:'%h %s [%an]' --graph"
mylog = log --pretty=format:'%h %s [%an]' --graph
co=checkout
br=branch
ci=commit
st=status
unstage=reset HEAD --
last=log -1 HEAD
pl1=log origin/yourbranch -1 --pretty=oneline
pl3=log origin/yourbranch -3 --pretty=oneline