Git介绍和常用指令

介绍:Git和SVN一样都是版本控制工具。不同的是Git是分布式的,SVN是集中式的。Git开始用可能感觉难点,等你用习惯了你就会觉得svn是有点恐怖。(如果一个项目有好多人一起开发,有好多分支切来切去,如果用SVN就会让你崩溃的)集中式大概就是有一个中心代码库,大家改完代码以后都忘这个代码库提交,同样都在这里更新代码。

分布式就是没有中心数据库每个人的电脑上都有一个完整的本本库,大家可以相互推送代码和更新(为了方便也会建立一个中心库,大家都通这个中心库进行交互)。

安装git:从git官网http://git-scm.com/download/下载git。选择命令行模式,然后基本上next 就行了。

介绍下git的常用概念:

本地仓库:在本地存放各个版本分支的地方,像一个仓库,只要你提交的东西他都会保存下来。

远程仓库:可以和你本地仓库进行交互的另一仓库。可以是别人的仓库也可以是大家都用的一个中心的仓库。

工作区:就是我们看到的当前分支和版本的代码的区域,就是存放我们当前正在修改的代码的地方。

索引区:存放已经在git管理中的代码的区域,通过提交指令添加到仓库。

常用指令:

1、 关于仓库:

查看远程仓库:git remote  –v (-v表示显示详细信息)显示为仓库别名和仓库地址,远程仓库的默认别名为origin。

添加远程仓库:git remote add {url}

重命名:git rename {oldname}  {newname}

删除:git rm {remotename}

剩下的就自己查看帮助吧:git remote –help

初始化本地仓库:到你想作为仓库的路径,然后执行git init。就会发现在当前目录下多了个.git目录。发现git自动显示在maser分支上。然后添加一个远程仓库git remote add origin https://github.com/tomdogxu/firstWebProject.git(这里是github上我的仓库地址)然后更新合并代码。

也可以克隆远程仓库到本地:跳转到相应目录执行git clone https://github.com/tomdogxu/firstWebProject.git。这时候查看仓库可以看到 origin仓库。

2、 查看状态:查看当前工作的状态 git  status显示如下图:

其中标注为Changes to be committed:的绿色显示部分是已经add到索引区的修改,提示我们可以用git reset撤销。

标注为Changes not staged for commit:的是修改过没有添加到索引区的,提示我们可以通过git add添加到索引区或者通过git checkout 重置已经修改的文件。标注为Untracked files:是不在git的检查中的文件比如新建的文件。可以add添加到索引区。

3、将改变添加到索引区:git add [path]

4、比较不同: git  diff  [path],是比较工作区间与索引区的不同,当有参数—catch的时候就是比较索引区与仓库的不同,当有参数 commitid的时候就是比较工作区间与仓库指定版本的不同。例子:git diff --cached 索引区与仓库的不同,

git diff HEAD工作区间与仓库间的不同。

git diff commitid 工作区间与仓库指定版本号的间不同。

git diff --cached HEAD^ 索引区与上一次提交的不同。

git diff commitid1 commitid2 仓库指定两个id的版本之间的不同。

git diff branch1 branch2 比较两个分支间不同 (--stat参数列举简单信息)

git diff branch1:path branch2:path 比较两个分支间指定文件的不同

git diff master.. origin/master  比较本地master 和远程master的区别。

5、撤销:git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD] 这个指令有四中模式,

先说—mixed模式,因为他是默认模式,是最常用的模式,就是当用git reset –mixed [path]就是说将索引区的文件重置,撤销add的指令。

git reset –hard commitid,回滚到指定版本号,并且重置工作区间和索引区,就是说在某个版本号之后的修改都会丢弃,而且是找不回来的。

git reset –soft commitid 将当前版本指向指定版本号,这个版本号之后的提交都会被撤销到索引区,工作区和索引区的不变。

git rm --cached 文件名:将文件从索引中删除变成Untracked 。

--merge和--keep用的不多。

git revert 也是撤销命令,区别在于reset是指向原地或者向前移动指针,git revert是创建一个commit来覆盖当前的commit,指针向后移动,就是不是真的撤销而是有一次提交得到撤销的效果。

6、关于分支指令:git branch +[branchname]新建分支,

git checkout [branchname] 切换到相应分支,

git checkout –b [branchname] 创建并切换到新的分支。

切换到别的分支之后执行git branch –d [branchname]删除分支

git branch 查看分支,

git branch –a 或者(git branch --remote)查看远程分支

git marge [branchname]合并指定分支到当前分支。

git fetch [remotename]更新远程仓库的分支,可以指定分支名或者更新全部,括号内为远程分支的别名。

git pull [remotename] [ branchname] 更新并合并远程分支,默认是origin仓库的master分支。

git push [remotename] [ branchname]将本地仓库的更改推送到远程分支,可以使用-u参数指定默认的推送的分支,之后就可以直接使用git push指令推送。

git branch [remotename] –delete [branchname]删除远程分支

git branch –d  [branchname]删除本地分支。

7、查看日志:git log

git log -p 显示详细信息,git log 路径 显示该路径下的日志 ,git log --no-merges 不显示合并版本的信息,git log --since="2 weeks ago" 显示最近两周的日志

8、其他关于设置全局变量等指令使用较少不做介绍,可以按提示操作即可。并且要学会多使用—help这个帮主指令。

git介绍和常用指令的更多相关文章

  1. Git介绍及常用操作演示(一)--技术流ken

    Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发 ...

  2. CI 知识 :Git介绍及常用操作

    Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发 ...

  3. vue.js介绍,常用指令,事件,以及制作简易留言版

    一.vue是什么? 一个mvvm框架(库).和angular类似,比较容易上手.小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作 二.vue和angular之间的区别 vue--简单易学 ...

  4. 一文搞定 Git 相关概念和常用指令

    我几乎每天都使用 Git,但仍然无法记住很多命令. 通常,只需要记住下图中的 6 个命令就足以供日常使用.但是,为了确保使用地很顺滑,其实你应该记住 60 到 100 个命令. Git 相关术语 Gi ...

  5. git中的常用指令名及其意义

    add 添加新文件到 Git 代码仓库的索引中 $ git add filename mv 移动或重命名文件 $ git mv old-filename new-filename rm 从工作目录和 ...

  6. Git笔记:Git介绍和常用命令汇总

    Git 是一个开源的分布式版本控制系统,与 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持. 工作流程 Git 的工作流程大致如下: 克隆 Git 资源作为 ...

  7. git介绍及常用命令

    Git简介 linus 用C语言编写 2005年诞生 分布式版本管理系统 速度快,适合大规模,跨地区多人协同开发 分布式管理 Git 生态 Git 分布式版本管理系统 Gitlab git私库解决方案 ...

  8. git介绍以及常用命令操作

    一.git与SVN的对比[面试] ①git是分布式的,SVN是集中式的(最核心) ②git是每个历史版本都存储完整的文件,便于恢复,SVN是存储差异文件,历史版本不可恢复(核心) ③git可离线完成大 ...

  9. git介绍和常用命令总结

    git中经常用的命令就是以下六个: 以下是命令总结: 另外,自己碰到的问题及解决方法: 在分支内提交远程仓库,-am: revert后进入vim,一直按住esc ,再连续按大写的z两次就退出来了: g ...

随机推荐

  1. ubuntu 下安装nodejs以及pm2

    ubuntu 12.04服务器可以使用apt-get方式安装Node JS,但是,安装完后的版本为v0.6.12的版本,如果我们想要使用新一点的版本需要做如下配置: 1 2 3 4 apt-get i ...

  2. 利用DFS求联通块个数

    /*572 - Oil Deposits ---DFS求联通块个数:从每个@出发遍历它周围的@.每次访问一个格子就给它一个联通编号,在访问之前,先检查他是否 ---已有编号,从而避免了一个格子重复访问 ...

  3. zap安装和部署

    1.zap的安装 注意一点测试环境新申请的linux系统java执行路径是/usr/install/java/bin/java,安装zap的时候,会提示找不到java运行环境,解决办法是:做一个软链接 ...

  4. Python中使用XMLRPC(入门)

    一.简介 RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用. 它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了 ...

  5. 为什么输入shutdown -h -t会报错:command not fount

    如果是直接用普通用户($)的身份进行输入[user@localhost ~]$ shutdown -h -t 是不能执行,因为普通用户没有关闭机器的权限. 然而直接使用[user@localhost ...

  6. BAT文件使程序具有以系统权限运行的效果

    @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.sh ...

  7. zoj 3882 Help Bob(zoj 2015年7月月赛)

    Help Bob Time Limit: 2 Seconds      Memory Limit: 65536 KB There is a game very popular in ZJU at pr ...

  8. @classmethod, @staticmethod和@property这三个装饰器的使用对象是在类中定义的函数。下面的例子展示了它们的用法和行为:

    class MyClass(object): def __init__(self): self._some_property = "properties are nice" sel ...

  9. 【C#】.NET提供了哪些类型来实现反射

    实现反射的类型大多数都定义在System.Reflection命名空间之下. Assembly 定义一个Assembly,它是可重用.无版本冲突并且可自我描述的公共语言运行库应用程序构造块. Asse ...

  10. OS之os.fork()

    有两种方式来实现并发性, 一种方式是让每个“任务"或“进程”在单独的内在空间中工作,每个都有自已的工作内存区域.不过,虽然进程可在单独的内存空间中执行,但除非这些进程在单独的处理器上执行,否 ...