git 版本控制
用gitbash进入类似命令行的窗口
用命令 cd e:/learngit 进入该目录,然后在此目录下初始化$ git init, 于是该文件夹就成为了一个工作区,里面的.git文件就是版本库(repository)
在工作区中新建一个文件,比如XXX.txt文件
在txt中添加‘1111’文本,用 $ git add XXX.txt命令将XXX.txt添加到缓存中
$ git status查看状态显示change to be committed(改变已经缓存)
已经缓存的文件是无法用$ git diff XXX.txt查看不同的,但可以用 $git diff HEAD -- XXX.txt(注意-- 后的空格)
然后,用 $ git commit -m'解释说明' 提交文档
提交之后会显示insertions(插入),deletion(删除),如果在最后添加新行会先删除最后一行,再补充最后一行的文本和新行文本,于是就会显示2 insertions ,1 deletions;
如果是在原行添加内容则会显示 1 insertions ,1 deletions;如果只是简单的插入一个新行则会显示 1 insertion
这时$ git status查看状态 显示nothing to commit working directory clean(没有东西提交,工作目录为空)
这时为txt添加一行,可以用$ git diff比较不同
再用 $ git status查看状态 changes not staged for commit(改变没有缓存到提交)
modified:XXX.txt
no changes added to commit (也没有可以提交的改变)
好,现在将文件缓存并提交后
用$ git log可查看提交日志,但显示的条目有限,所以用$ git log --pretty=oneline更直观 按q可退出
用$ cat XXX.txt可查看当前工作区文本内容
用$ gir reset --hard 版本号 可回到相应的版本或者用 $ gir reset --hard HEAD^ 可回到上一个版本,回到前一百个版本$ gir reset --hard HEAD~100
用$ git reflog(重新迫使) 可查看你的提交和回退日志,也就是命令日志,因此也能看到相应的版本号
$ git checkout -- XXX.txt 可以撤销修改,如果已经缓存再做修改,修改也只是在工作区,不会影响已经缓存的文档内容
$ git reset HEAD XXX.txt 会将文档回退到工作区的状态,如果文档在暂存区时作了修改,那这个修改也只是在工作区作出的,其实暂存区的文件只是一个副本而已,说是回退到工作区,其实不如说是删除该副本,比如文档文本为‘1’,缓存后再修改为‘12’,现在回退(也就是删除)那文档文本仍为‘12’
$ rm XXX.txt 可以删除工作区文档,但分支里的版本就跟工作区里的不一致了,也就是分支在工作区找不到对应的文件作比较,因此,你也需要把分支里的版本删除 $ git rm XXX.txt
???在master上更改后切换分支会报错:你的本地改变已经被改写,请先提交或stash(备份)后再切换,也就是说必须提交后才能切换,注意,这个时候即使缓存了也会报同样的错误,而在dev分支上修改再切换到master却可以,而且在dev分支上作的修改也会照样在master上呈现
$ git branch -d dev删除分支,如果你当前在dev分支上,你是无法删除dev分支的,需要切换到其他分支才能删除
如果在dev上作了修改。git stash 过后切换到master,修改master,stash后又切换到dev,会发现git stash list上{0}master {1}dev所以此时不能用git stash apply(不会删除stash list中的相应储存记录)或git stash pop(会删除list中的记录),应该用git stash apply @{1}
在dev和master的同一行修改了内容会引起冲突,比如dev ‘111’,master‘11111111’,虽然master只是在dev上增加了,但仍然冲突
如果在dev上创建了一个新分支conf,那么在远程任何分支上都可以创建conf ,在本地conf分支上push origin dev 则会把dev分支上的内容推送到远程dev上
git remote -v可查看当前分支在远程的情况
git remote show origin 可查看远程有哪些分支
获取远程分支 git fetch 此时查看分支列表没有显示刚获取的分支,需要切换到该分支下才行
删除远程分支 git push origin :dev 但是本地分支仍然存在,不会被影响
如果在远程创建了一个分支,而该分支和本地分支同名,当切换到该分支时会提示用 ‘git pull’更新本地分支,其实pull就相当于更新的功能
???克隆远程仓库时只能看到master分支,想在dev分支上开发需要 git checkout -b dev origin/dev
如果在远程的dev分支上修改,然后在本地conf分支上使用 git pull可以看到远程有哪些文件修改了,当切换到dev分支上时还需要再次git pull才可更新该分支
如果在工作区新建了一个文件,此时在dev分支上add并commit再push,那就只在远程dev上有该文件
git log可以查看在当前分支下的版本记录,如果该分支是在其他分支上创建的,那相应的记录也会复制过来
git tag v1.0可以在给该分支的最近一次提交打上标签,git tag v1.0 版本号 可以给相应版本打上标签,无论在哪一个分支上,用git reset --hard v1.0都可以使该分支下的文件回退到该版本
git tag 查看所有标签 git show v1.0查看标签信息
这里区分一下$ gir reset --hard v1.0(重新设置为硬盘里的v1.0版本) $ git checkout -- XXX.txt (切换到当前文本,也就是未被修改时的状态)$ git reset HEAD XXX.txt(重新设置为当前指针所指的版本,也就是缓存了的时候撤回工作区)什么时候- ,什么时候-- 如:-m,--hard
git branch --set-upstream-to=origin/dev
从pull过后,本地会多出一行
???在本地pull后再push,push成功后在远程发生冲突
删除操作也需要提交
B分支衍生于A分支的话,B分支会保存A分支的提交历史, git checkout --orphan dev创建一个无提交历史的干净的dev 分支
git rm -r --cached 文件夹名 //取消跟踪
git rm --cached 文件名
.gitignore /.json 忽略当前目录下的json .json忽略所有json文件 即使不忽略!myfile myfile下的json仍然被忽略,无论!myfile ,*json这两条语句前后
git ls-files 查看已经被跟踪的文件
git branch -m kill 重命名当前分支为kill
git checkout -f 强制撤销本地修改,对工作区和缓存区的修改都有效,对已经提交的修改无效
git 版本控制的更多相关文章
- GIT 版本控制常用命令学习汇总
GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...
- Git版本控制与工作流
基本概念 Git是什么? Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更 ...
- Git版本控制教程
Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...
- Git版本控制工具(三)----远程仓库GitHub的使用
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- git版本控制工具(二)----本地版本库的常用操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Git版本控制工具(一)----git的安装及创建版本库
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Git 版本控制工具(学习笔记)
GIT(分布式) 一.Git 初始版本控制工具 1. 安装Git Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core 之后回车输入密码,即可完 ...
- Git版本控制与工作流详解
这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...
- Git版本控制,rsync同步文件,完成线上部署
之前项目开发完成,测试阶段,借着此时,由于公司暂时用两台aliyun ecs 做业务层,所以每次都需要同步线上文件,进而想着搞一搞服务器端(小公司,新项目,先小搞一把),搭建一套小的版本控制上线的 ...
- Git版本控制:Gitlab及Coding.net的使用
http://blog.csdn.net/pipisorry/article/details/50709014 Gitlab介绍 GitLab是利用 Ruby on Rails 一个开源的版本管理系统 ...
随机推荐
- android 打包失败
如果在打包时提示: proguard returned with error code 1 并且在控制台中输出:'java'不是内部或外部程序或批处理文件 那么就说明你的环境变量出问题了,之前用的 ...
- Calculator(1.5)
Calculator(1.5) Github链接 ps.负数的处理未完成 解题过程中遇到的困难和解决 <stack>的使用: 认真研究了栈,基本上掌握了用法,与<queue>的 ...
- 6、Concurrent-Mark-Sweep
1.cms 主要用于年老代垃圾回收 2.这玩意牺牲通吐量换取最短垃圾回收时间 3.有的地方说是四个阶段,有的地方说五个阶段,还有六个阶段的,真相是----我也不知道 四个阶段: Initial mar ...
- Python学习之路
从今天开始学习Python,没有什么特殊的目的,只是觉得这门语言比较有意思,既然现在可能也不会用到,那就直接从Python3学起吧! 本人开始学习时,还是喜欢听别人讲,于是又找到了小甲鱼的<零基 ...
- Javascript常用对象的属性和方法
javascript为我们提供了一些非常有用的常用内部对象和方法.用户不需要用脚本来实现这些功能.这正是基于对象编程的真正目的. 在javascript提供了string(字符串).math(数值计算 ...
- C#中IQueryable和IEnumberable的区别
IQueryable和IEnumberable的区别主要在查询方面有区别 IQueryable查询时间是先把skip和Take翻译成sql语句,去数据库执行完成后把数据加载到内存中 IEnumbera ...
- SDWebImage下载图片有时候无法成功显示出来
之前用下面的方法现在图片,有时候会出现图片没有下载成功显示: - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)p ...
- 通过docker-machine和etcd部署docker swarm集群
本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...
- bookstore网上书店测试缺陷报告2
Bookstore网上书店系统测试缺陷报告 缺陷编号 01.01.0002 发现人 吴赵昕 记录日期 2016-06-10 所属模块 购物车 确认人 吴赵昕 确认日期 2016-06-10 当前状 ...
- Javascript、CSS和IMG之网页执行探索
测试环境:windows/chrome 实例1:页面中仅有图片 <html xmlns="http://www.w3.org/1999/xhtml"> <head ...