用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 版本控制的更多相关文章

  1. GIT 版本控制常用命令学习汇总

    GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...

  2. Git版本控制与工作流

    基本概念 Git是什么? Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更 ...

  3. Git版本控制教程

    Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...

  4. Git版本控制工具(三)----远程仓库GitHub的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. git版本控制工具(二)----本地版本库的常用操作

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  6. Git版本控制工具(一)----git的安装及创建版本库

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  7. Git 版本控制工具(学习笔记)

    GIT(分布式) 一.Git 初始版本控制工具 1. 安装Git Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core  之后回车输入密码,即可完 ...

  8. Git版本控制与工作流详解

    这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...

  9. Git版本控制,rsync同步文件,完成线上部署

    之前项目开发完成,测试阶段,借着此时,由于公司暂时用两台aliyun  ecs  做业务层,所以每次都需要同步线上文件,进而想着搞一搞服务器端(小公司,新项目,先小搞一把),搭建一套小的版本控制上线的 ...

  10. Git版本控制:Gitlab及Coding.net的使用

    http://blog.csdn.net/pipisorry/article/details/50709014 Gitlab介绍 GitLab是利用 Ruby on Rails 一个开源的版本管理系统 ...

随机推荐

  1. android 打包失败

    如果在打包时提示: proguard returned with error code 1   并且在控制台中输出:'java'不是内部或外部程序或批处理文件 那么就说明你的环境变量出问题了,之前用的 ...

  2. Calculator(1.5)

    Calculator(1.5) Github链接 ps.负数的处理未完成 解题过程中遇到的困难和解决 <stack>的使用: 认真研究了栈,基本上掌握了用法,与<queue>的 ...

  3. 6、Concurrent-Mark-Sweep

    1.cms 主要用于年老代垃圾回收 2.这玩意牺牲通吐量换取最短垃圾回收时间 3.有的地方说是四个阶段,有的地方说五个阶段,还有六个阶段的,真相是----我也不知道 四个阶段: Initial mar ...

  4. Python学习之路

    从今天开始学习Python,没有什么特殊的目的,只是觉得这门语言比较有意思,既然现在可能也不会用到,那就直接从Python3学起吧! 本人开始学习时,还是喜欢听别人讲,于是又找到了小甲鱼的<零基 ...

  5. Javascript常用对象的属性和方法

    javascript为我们提供了一些非常有用的常用内部对象和方法.用户不需要用脚本来实现这些功能.这正是基于对象编程的真正目的. 在javascript提供了string(字符串).math(数值计算 ...

  6. C#中IQueryable和IEnumberable的区别

    IQueryable和IEnumberable的区别主要在查询方面有区别 IQueryable查询时间是先把skip和Take翻译成sql语句,去数据库执行完成后把数据加载到内存中 IEnumbera ...

  7. SDWebImage下载图片有时候无法成功显示出来

    之前用下面的方法现在图片,有时候会出现图片没有下载成功显示: - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)p ...

  8. 通过docker-machine和etcd部署docker swarm集群

    本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...

  9. bookstore网上书店测试缺陷报告2

    Bookstore网上书店系统测试缺陷报告   缺陷编号 01.01.0002 发现人 吴赵昕 记录日期 2016-06-10 所属模块 购物车 确认人 吴赵昕 确认日期 2016-06-10 当前状 ...

  10. Javascript、CSS和IMG之网页执行探索

    测试环境:windows/chrome 实例1:页面中仅有图片 <html xmlns="http://www.w3.org/1999/xhtml"> <head ...