git学习笔记——廖雪峰git教程
简介
这里我只想引用他的原文:
Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:
Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。
Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。
安装
下载(win10)安装,一路next,大概?这并不十分重要。(其他系统点这里下载)
配置一下用户信息:
git config --global user.email "you@example.com"
git config --global user.name "your name"
本地命令
- 创建版本库(respository):
git init
将管理该目录下的文件 - 添加文件:
git add <file>
- 提交修改:
git commit -m "messages"
- 查看状态:
git status
add之前和add后查看状态得到的信息不一样 - 比较内容:
git diff
当前修改的内容,或者比较两个提交 - 提交日志:
git log
或者git log --pretty=oneline
- 版本信息:
HEAD
、HEAD^
、HEAD~2
(到这里突然想到有一个是否大小写敏感的问题,默认不敏感) - 版本回退:
git reset --hard HEAD^
- 查看内容:
cat <file>
- 命令记录:
git reflog
- 放弃修改:
git checkout -- <file>
取消该文件未进入版本库的变动,原理为用版本库的文件替换工作区的文件 - 放弃添加:
git reset HEAD <file>
取消git add <file>
操作,接下来可以在修改添加提交,或者checkout掉
远程仓库
- 创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
- 添加远程仓库:
git remote add origin <respository>
- 本地推送到远程:
git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
之后应该使用git push origin master
,推送其他分支修改master参数 - 克隆远程仓库:
git clone <respository>
注意文件结构,克隆后,git管理的并不是当前文件夹,而是你克隆的那个项目所表示的子文件夹 - 查看远程库的信息:
git remote
详细信息:git remote -v
- 创建远程的分支:
git checkout -b dev origin/dev
抓取远程库:
git pull
,git branch --set-upstream dev origin/dev
指定本地分支与远程分支的连接
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!
分支管理
- 创建分支:
git checkout -b dev
相当于git branch dev
(新建分支)+git checkout dev
(切换分支) - 查看分支:
git branch
- 合并分支:
git merge dev
合并dev到当前分支,fast-forward,快速合并,只是移动了master指针 - 删除分支:
git branch -d dev
- 查看合并:
git log --graph --pretty=oneline --abbrev-commit
感觉这个超级厉害,git log --graph
可以看到分支合并图,--abbrev-commit
可以看到简略的id号(自己测试的) - 非快合并:
git merge --no-ff -m "messages" dev
由于禁用了快速合并,就会新建一个提交,所以需要-m参数 - 缓存工作区:
git stash
- 缓存列表:
git stash llist
- 缓存恢复:
git stash apply
或者指定git stash apply stash@{0}
- 缓存删除:
git stash drop
- 缓存出栈:
git stash pop
- 强制删除:
git branch -D dev
强制删除未合并的分支时使用
分支策略:在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
标签管理
- 新建标签:
git tag <name>
,-a指定标签名,-m指定说明文字 - 查看标签:
git tag
- 补打标签:
git tag <name> <commit id>
- 标签信息:
git show <tag>
- 删除标签:
git tag -d <tag>
- 推送标签:
git push origin <tag>
、git push origin --tags
(推送全部标签) - 远程删除:
git push origin :refs/tags/<tagname>
,先删除本地,再执行删除远程
设置别名
git config --global alias.st status
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
- 霸气登场:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
- 自定义:
git config --global alias.lg "log --color --graph --pretty=oneline --abbrev-commit"
we’re done!
git学习笔记——廖雪峰git教程的更多相关文章
- 【学习总结】Git学习-参考廖雪峰老师教程-总
公元2018-10-21 实验室台式机 win7 64位 参考教程: 廖雪峰Git教程 其他资料:Git-book 北大一只总结的笔记,最终整理的时候可以参考:Git笔记 评论区看到的另一个人,总结在 ...
- 【学习总结】Git学习-参考廖雪峰老师教程四-时光机穿梭
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程六-分支管理
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程三-创建版本库
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程八-使用GitHub
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程九-使用码云
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程二-安装Git
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程七-标签管理
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
随机推荐
- jquery的自定义事件通过on绑定trigger触发
jquery绑定自定义事件,可以实现预先绑定好一个处理方法,当需要使用的时候利用jquery trigger来触发自定义事件,以达到方便快捷的目的.我们来假设一个这样的场景,一个textarea中的字 ...
- Android 怎样开启与关闭adb 的认证机制(google adb secure) (adb RSA 指纹认证)
前言 欢迎大家我分享和推荐好用的代码段~~声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Zabbix安装 Grafana安装
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 前提: 先需要安装好 lamp环境. 官方文档: https://www.zabbix.com ...
- 【转】escape,encodeURI,encodeURIComponent有什么区别?
在这个页面里面试着搜了一下 「UTF-8」 ,居然没有搜到. escape 和 encodeURI 都属于 Percent-encoding,基本功能都是把 URI 非法字符转化成合法字符,转化后形式 ...
- 如何在自己设计的页面中调用metamask-1
启发: https://github.com/MetaMask/metamask-extension/issues/714 https://github.com/MetaMask/metamask-e ...
- spring HibernateTemplate.save() 方法的自动提交问题
如题: service1: dao1.save(obj); //失败,应该给spring捕获,但没有,程序继续执行下去了. redisService.fun1(); //被执行 service2 ...
- Python内存优化:Profile,slots,compact dict
实际项目中,pythoner更加关注的是Python的性能问题,之前也写过一篇文章<Python性能优化>介绍Python性能优化的一些方法.而本文,关注的是Python的内存优化,一般说 ...
- Codeforces round 1083
Div1 526 这个E考试的时候没调出来真的是耻辱.jpg A 求个直径就完事 #include<cstdio> #include<algorithm> #include&l ...
- HNOI2017做题笔记
HNOI2017 单旋(线段树.set) 手玩旋转操作(忽略手玩过程)可以发现:一次单旋对原树的变化实际上很小. 对于父子关系,单旋最小值会将\(Spaly\)上最小值变成原来根的父亲,将最小值的点右 ...
- Luogu2469 SDOI2010 星际竞速 费用流
传送门 发现它的本质是求一个费用最小的路径覆盖 最小路径覆盖是网络流23题中的一个比较典型的模型 所以考虑相似的建边 因为每一个点要恰好经过一次,是一个有上下界的网络流,故拆点,星球\(i\)拆成\( ...