git中每个版本的保存是记录每个版本的快照,只在乎这个文件是否改变。

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

1、git init

  在git的根目录执行git init在这个目录下会多出一个.git的目录,关于版本的信息都在这个目录里。

2、git clone <url>

  克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地,而不是取某一个特定版本,所以用clone而不是checkout。

3、git add <file>

  添加文件,只不过这个文件是放在暂存区,需要Git commit才能把他加到远程仓库里面。

4、git status

  查看git的状态。

  详细信息如下图所示:

  

5、git reset HEAD <file>...

  取消暂存文件,就是把暂存区的文件取消。

6、git checkout -- <file>...

  修改了一个文件,想还原修改。

7、git diff

  查看了修改了哪些地方

  

  ---a表示修改之前的文件,+++b表示修改后的文件,上图表示在fileb的第一行后添加了一行"bb",原来文件的第一行扩展为了修改后的1、2行。

  "git diff"显示的是文件修改后还没有暂存起来的内容。

8、git diff --cache

  比较暂存区的文件与之前已经提交过的文件,文件存在于暂存区。

  

  /dev/null表示之前没有提交过这一个文件。

9、git diff --staged

  比较暂存区的文件与之前已经提交过的文件,文件存在于暂存区。

10、git rm <file>...

  移除一个文件让GIT不再将其纳入版本控制.

11、git rm <file>...  --cached

  将一些文件从版本控制中剔除出去,但仍保留这些文件在工作目录中。

12、git mv

  git mv file /demon/file1     移动文件

  git mv old_name new_name  重命名文件

13、git add -i

  开启交互式暂存

  

14、git clean [options]

  移除所有未跟踪的文件。

  一般会加上参数-df,-d表示包含目录,-f表示强制清除。

15、git stash

  git stash list   查看stash列表

  git stash apply   紧急事情处理完了,需要重新回来这里进行原来的工作时,

          只需把Stash区域的内容取出来应用到当前工作目录就行

  git stash apply --index  可能存储的位置改变了,这个命令可以不改变之前的存储状态。

  stash@{filename}

  git stash show   显示stash中的内容,同git stash apply

  git stash drop  文件apply stash后应该就可以把它从stash列表删除,就用这个命令

  git stash pop  可以同时完成apply跟drop的功能

  暂停手中的工作,把正在做的工作保存。等到处理完其他的再回来做。

16、git commit

  把暂存区的内容提交。

17、git log

  查看提交历史

  

18、git commit -a

  跳过暂存区直接提交修改的文件

19、git commit -m 'commit message'

  快捷地填写提交说明可使用"-m"参数

20、git commit --amend

  如果我们提交过后发现有个文件改错了,或者只是想修改提交说明,这时可以对相应文件做出修改,

  将修改过的文件通过"git add"添加到暂存区,然后执行这个命令,然后修改提交说明覆盖上次提交,

  但只能重写最后一次提交。

21、 git rebase -i HEAD~2 或 git rebase -i 3366e1123010e7d67620ff86040a061ae76de0c8

  

  HEAD~2表示倒数第三个提交,这条命令要指定要重排的最旧的提交的父提交,此处要重排

  Second commit与Third commit,所以要指定Initial commit的Commit ID。

  如果我们想交互这两个提交,只需把开头的这两行交换下位置就OK了,交换位置后保存。

  把pick改为reward   修改某个提交。

  pick改为squash     把这个行合到上一行提交。

22、git revert <commit-id>

  撤销提交。

23、git reset [options] <commit>

  git reset会修改HEAD到指定的状态 

  • --soft: 只改变HEAD的State,不更改工作区与暂存区的内容
  • --mixed(默认): 撤销暂存区的修改,暂存区的修改会转移到工作区
  • --hard: 撤销工作区与暂存区的修改

24、git branch <branch-name>

  新建分支

25、git checkout -b <branch-name>

  切换分支到新建的分支

git banch -b demon user/demon

26、git branch -d <branch-name>

  删除分支

27、git branch -D <branch-name>

  如果在指定的分支有一些unmerged的提交,删除分支会失败,这里可以使用-D参数强制删除分支。

28、git checkout <branch-name> | <commit>

  检出某一分支或某一提交是同一个命令

29、git checkout -b [branch_name] --track|-t <remote>/<remote-banch>

  远程分支以(远程仓库名)/(分支名)命令,远程分支在本地无法移动修改,当我们clone一个远程仓库时会

  自动在本地生成一个名叫original的远程仓库,下载远程仓库的所有数据,  并新建一个指向它的分支

  original/master,但这个分支我们是无法修改的,所以需要在本地重新一个分支,比如叫master,并跟踪

  远程分支。

  Clone了远程仓库后,我们还会在本地新建其他分支,并且可能也想跟踪远程分支,这时可以用以下命令

30、git fetch <remote>

  拉取某个远程仓库的数据

31、git pull

  本地与远程同步

32、git push <remote> <local-branch>:<remote-branch>

  当在本地修改提交后,我们可能需要把这些本地的提交推送到远程仓库,这里就可以用git push命令,由于

  本地可以由多个远程仓库,所以需要指定远程仓库的名字,并同时指定需要推的本地分支及需要推送到远程

  仓库的哪一个分支

33、git push <remote> <branch-name> 等价于 git push <remote> refs/heads/<branch-name>:refs/for/<branch-name>

  如果本地分支与远程分支同名,命令可以更简单

  如果本地分支的名字为空可以删除远程分支

33、git remote add <short-name> <url>

  添加远程分支的方法

一个Git对象(object) 包括三个部分:类型,大小和内容。大小就是指内容的大小,内容取决于对象的类型,有四种类型的对象:"blob"、"tree"、 "commit" 和"tag"。

  • “blob”用来存储文件数据,通常是一个文件。
  • “tree”有点像一个目录,它管理一些“tree”或是 “blob”(就像文件和子目录)
  • 一个“commit”指向一个"tree",它用来标记项目某一个特定时间点的状态。它包括一些关于时间点的元数据,如提交时间、提交说明、作者、提交者、指向上次提交(commits)的指针等等。
  • 一个“tag”是来标记某一个提交(commit) 的方法。

git命令(一)的更多相关文章

  1. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  2. 工作中常用的git命令

    一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...

  3. 常用 Git 命令清单

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  4. 常look的Git命令

    常用的Git命令   命令  简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply   应用补丁 git am  应用邮件格式补丁 git a ...

  5. ***Linux下使用git命令及github项目

    在linux下搭建git环境1.创建Github账号,https://github.com2.Linux创建SSH密钥: ssh-keygen  ##一直默认就可以了 3.将公钥加入到Github账户 ...

  6. 我所记录的git命令(非常实用)

    一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...

  7. GIT命令行的使用

    新手了解 有不对的地方指点下 首先, 了解下什么是GIT,GIT是一款开元的分布式版本控制工具, 在世界上的所有分布式版本控制工具中,GIT是最简单,最流行,同时也是最常用的 相比于其他版本的控制工具 ...

  8. 简明 Git 命令速查表(中文版)

    原文引用地址:https://github.com/flyhigher139/Git-Cheat-Sheet/blob/master/Git%20Cheat%20Sheet-Zh.md在Github上 ...

  9. 常用 Git 命令清单 转

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  10. 日常开发使用GIT命令

    git是一种分布式的版本管理工具,现在我总结下日常使用的git命令 1)检出 git clone 地址 --检出代码 #这里的地址是代码池的地址,如Github或bitbucket 2)增加文件 gi ...

随机推荐

  1. IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)

    转:http://blog.csdn.net/zht666/article/details/8673609/ 本文主要使用图解介绍了使用IntelliJIDEA 12创建Maven管理的JavaWeb ...

  2. LeetCode Reverse Words in a String III

    原题链接在这里:https://leetcode.com/problems/reverse-words-in-a-string-iii/#/description 题目: Given a string ...

  3. queue容器

    一.queue特性 queue是一种先进先出(first in first out,FIFO)的数据结构,它有两个口,数据元素只能从一个口进,从另一个口出.队列只允许从队尾加入元素,队头删除元素,必须 ...

  4. nodejs渲染到页面的理解

    一般逻辑都是: 打开页面,前端发请求到服务端,服务端返回数据到前端,前端根据数据生成DOM节点,然后append到DOM中. 如果是nodejs渲染到页面,我的理解是: 打开页面,服务端直接把数据查询 ...

  5. microsoft windows network 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接

    运行CMD在命令行中运行net use * /del /y 命令中断开所有连接最后,你再次访问 ,就不会有问题了. 而且可以连接多个samba用户.

  6. 并集(union和union all的区别)、交集、差集、全连接

    一.并集 Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需 ...

  7. JAVA方法中的参数用final来修饰的效果

    很多人都说在JAVA中用final来修饰方法参数的原因是防止方法参数在调用时被篡改,其实也就是这个原因,但理解起来可能会有歧义,我们需要注意的是,在final修饰的方法参数中,如果修饰的是基本类型,那 ...

  8. handlebars中的partial

    高级玩家:partial 比较推崇使用分页来实现组件化.分页跟helper一样需要先注册.在hbs模块中可以批量注册,比较简单. hbs.registerPartials(__dirname + '/ ...

  9. 浅析JAVA Runtime原理与过各大厂商免杀webshell制作

    Author:Sevck Date:2017年6月24日 昨天在网络尖刀老年活动中心群里,忽然想到一个问题,就是JAVA在运行Runtime执行命令的时候会不会调用bash,因为php等语言会调用ba ...

  10. python(时间模块,序列化模块等)

    一.time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon ...