用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. Haskell Tuple相关总结

    一.相关操作 zip:将两个List合并成一个元组序对的List. fst:返回元组序对第一个元素. snd:返回元组序对第二个元素. PS:元组序对是元组中只有两个元素的元组. 二.与List的比较 ...

  2. php上传文件类型

    下面提供一张IE和火狐浏览器的文件类型对照表: ie 火狐 id 后缀名 php识别出的文件类型 0 gif image/gif 1 jpg image/jpeg 2 png image/png 3 ...

  3. Mybatis中#{}和${}传参的区别

    1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111&qu ...

  4. C# 大小写转换,方便index of

    ToUpper:小写转大写ToLower:大写转小写 例: string str=120cm*150g/m2;从中取出120和150,但是又要规避大小写问题,这时候就需要将str转换为大写,然后ind ...

  5. vmware linux centos安装

    首先,网上下载vmware,下载后直接安装即可,没什么难度,就不多说了 接下来在vmware中点击create a New Virtual Machine,启动安装界面 选择自定义方式安装,再点击ne ...

  6. Oracle查询数据库中的所有表

    SELECT A.TABLE_NAME 表英文名,       A.TAB_COMMENTS 表中文名,       A.COLUMN_ID 序号,       A.COLUMN_NAME 英文名,  ...

  7. java获取日期 昨天 今天 明天的日期

    Date date=new Date();//取时间 Calendar calendar = new GregorianCalendar(); calendar.setTime(date); cale ...

  8. nginx 在windows平台上对asp.net做反向代理

    代理服务器 当客户机向站点提出请求时,请求将转到代理服务器.然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器.内容服务器再通过该通道将结果回传给代理服务器.代理服务器将检索到的信 ...

  9. UE4 VR GUI实现 参考(UMG AND VR)

    Note:4.13以后版本VR UI采用 WidgetComponent + WidgetInteractionComponent可轻松实现交互 Blueprint Demo: https://for ...

  10. android 定时任务

    使用timertask进行定时任务 首先创建TimerTask: class SynchroTimerTask extends TimerTask { @Override public void ru ...