Git相关分享

Git相关分享

---- by 程序亦非猿 2016.03.07

这是在公司分享的稿子,演示为主,稿子内容不太详细,有兴趣的可以看看,推荐看看文末的资料~

控制版本系统(VCS)

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

集中化控制系统(CVCS)

集中化控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,客户端通过这台服务器获取文件或提交更新.

Git相关分享_第1张图片

缺点

很明显,中央服务器是个中心,一旦它出了问题就会影响整个系统.

中央服务器单点故障,如果服务器一挂,那么整个系统就挂了,无法工作

甚至,中央服务器磁盘故障,很可能导致数据丢失,丢失所有历史更改记录等重要信息.

分布式版本控制系统(DVCS)

客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份

Git相关分享_第2张图片

Git--控制版本之神

简史

作者,大神 Linus Torvalds

优点:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

Git常用命令

config

git config #--global 全局配置

git config --global user.name "alan"
git config --global user.email [email protected]

git config --list 查看配置列表

init

git init用来初始化项目

它会创建一个.git目录,它包含所有初始化git的所有文件

clone

git clone url 
git clone url name #重命名成name

文件的状态

接下去的命令跟文件状态有关

Git相关分享_第3张图片

add

untracked===>staged

git add file
git add . 

staged===>untracked

git reset HEAD file

commit

git commit -m "init"
git commit -a -m "init"
git commit -am "init"
git commit --amend  #想要撤消刚才的提交操作,可以使用 --amend 选项重新提交

// 演示

branch

创建分支

git branch branchname

PS:当init一个仓库时,master需要先commit一遍才能新建其他分支,否则会得到一个错误fatal: Not a valid object name:'master'.

切换分支

git checkout branchname

创建并切换分支

git checkout -b branchname

查看分支

git branch -r -a -l

删除分支

git branch -d branchname  #删除本地分支  
git push origin --delete branchname #删除远程分支  

// 演示

远程协作

git remote add [shortname] url

如:

git remote add origin url  #

git remote -v 可以查看所有远程仓库

fetch

git fetch remote-name 

fetch 只是从远程仓库 获取数据,并不会合并到工作区

pull

git pull origin master

pull = fetch +merge

push

git push [remote-name] [branch-name]

git push origin master

查看提交历史

git log 查看提交历史

  • --pretty=oneline 一行显示
  • --stat 带统计信息
  • --graph 图形化

git reflog

回退版本

git reset --hard commitId

暂存

git stash/pop

标签

git tag

帮助

git help cmdname

....

别名

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'

其他

gitignore

忽略不想提交的文件

gitflow

基于git的工作流

工具推荐

SourceTree

git GUI 软件

iTerm2+oh my zsh

不管装不装逼,都要必备

学习资料推荐

GitPro2

内容很多,很详细,堪称权威,而且还有中文版,还有pdf等下载,一定要看看.

git-简明指南(很棒)

非常棒的指南,极力推荐

githug

一个git的游戏,现在一共有54个关卡,从init开始,让你在玩的过程中学习git,挺有意思

learnGitBranching

又是一个学习git的游戏,不过这个是针对分支的游戏,非常棒~非常推荐

另外欢迎关注:
我的Github
我的微博
我的微信公众号:

Git相关分享_第4张图片
微信公众号

你可能感兴趣的:(Git相关分享)