• git init 初始化一个本地git仓库repository
  • git status 查看状态
  • git add <file> 将工作区修改加到暂存区(stage)
  • git commit -m "<some message>" 将暂存区(stage)提交到仓库(repository)并写一些备忘信息
  • git reset --hard HEAD^ 或者 git reset --hard HEAD~1 将工作区退回到仓库(repository)中上一个版本
  • git checkout -- <file> 将工作区中file文件的修改撤销,包括把删除的file复原(在添加到stage之前才有效,如果将工作区文件的修改add到了stage,那么再使用这个命令就会无效,这时应该先把stage的unstage撤销掉再使用上面的命令)
  • git reset HEAD <file> 将添加至stage的file文件unstage掉
  • git rm <file> 把file从repository中删除,之后再用commit就行
  • git remote add origin git@server-name:path/repo-name.git 关联一个远程库
  • git push -u origin master 第一次将本地的repository的master分支推送到远程,以后再push就不用加-u了
  • git clone git@server-name:path/repo-name.git 从远程仓库clone一个仓库到本地,同时会关联到远程仓库
  • git clone -b <branchName> git@server-name:path/repo-name.git 从远程clone指定分支到本地
  • git branch <name> 创建一个名为name的分支
  • git checkout <name> 切换到name分支上
  • git chekout -b <name> 上面两条命令合并之后的简写,即创建一个名为name的分支并切换到那个分支
  • git branch 查看本地所有分支,当前所在分支前面有一个*号
  • git branch -r 查看远程所有分支
  • git branch -a 查看本地和远程所有分支
  • git branch -d <name> 删除名为name的分支
  • git branch -D <name> 强行删除名为name的分支,用d删除的话,如过name分支没有被合并就无法删除,那么就要用D
  • git merge <name> 将指定name的分支合并到当前分支,其实就是把当前分支的内容更新为指定name分支的内容(前提是name分支的修改是上次commit之后最新的修改,或者说在上次commit之后name分支commit的次数比当前分支commit的次数多),如果name分支和当前分支的修改都是在上次commit之后最新的修改且内容不一样(或者说这两个分支自上次commit之后各自commit的次数是一样的),那么 就会产生冲突,需要解决冲突才能在当前分支上完成合并。解决冲突的方法就行修改当前分支内容,确定你想要当前分支的内容,然后再在当前分支上add和commit一次就可以了,这时,当前分支会比name分支多一次提交,也就是当前分支的修改比name分支的修改要新(如果此时你切换到name分支上,再merge当前分支,那么就会直接合并了,因为当前分支比name分支要新)
  • git merge <name> 时,如果name分支没有当前分支新,那么就会提示Already up to date,就是说当前分支比起name分支是新的。
  • git log 查看提交的日志信息
  • git log --pretty=oneline 查看只有一行的简略日志信息
  • git log --graph 查看日志信息的图示信息
  • git merge --no-ff 表示在系统采取fast-forward时让系统采用普通合并方式,而不是采用快速合并,普通合并会多一次commit,这样在以后查看时能够看到合并历史,而fast-forward合并则看不到曾经做过的合并
  • 分支管理策略:一般来说都是一个master分支,这个分支只用来发布新版本,不在上面干活,应该新建一个dev分支,平时都在dev上面干活,每个人一个分支,之后合并到dev上面就行,要发布时就把dev合并到master分支上即可。
  • git stash 把当前工作现场先存起来(不是add也不是commit),可以暂时去做其他事,之后(主要应用场景是当前手头工作没做完不能commit,但是又有紧急的bug需要切换到其他分支上去修复)
  • git stash list 查看所有存起来的工作现场
  • git stash apply <指定stash> 或者 git stash pop <指定stash> ,两者区别就是前者恢复工作现场后stash list当中并不删除指定stash,而后者就是直接将stash list中的pop出去删除了。
  • git remote 查看远程库信息,远程库默认名字是origin, git remote -v 查看更详细的信息
  • git push origin <brancName> 将分支推送到远程的branch分支上
  • 如果在git clone时不指定branch名称,那么clone下来的只会包含远程的master分支,在这之后如果要切换到远程的某一分支上,例如dev分支,那么就需要 git checkout -b dev origin/dev ,用这个命令创建本地的dev分支,然后就可以在这个dev上修改,并在之后随时push
  • 如果多个人同时关联了远程库(多人协作时),在push的时候,发现有人已经向remote推送了他的提交,而你对同样的文件做了修改,那么在push的时候就会报错rejected推送失败,因为有冲突,所以这时候应该git pull拉取最新的提交并(自动地)在本地合并,产生冲突,然后本地解决冲突之后再add、commit,再push。
  • git pull 从远程拉取最新的修改到本地并合并,如果有冲突则需要在本地解决。git pull相当于git fetch加上merge
  • 接着上面的说,如果本地解决冲突再push上去之后,其他的人是不会自动的获得更新消息的,就是说别人使用git status会提示up to date with origin/,他们需要git fetch或者git pull之后才能获取到远程最新的变动
  • git fetch 从远程取回所有分支的更新(但不会自动合并)
  • git fetch origin <branchName> 从远程取回branchName分支的更新(但不会自动合并)。使用fetch之后就可以用git status查看到本地和远程之后的变动了。
  • git rebase 变基
  • git diff <filename> 不带参数就是比较工作区和stage中filename文件的不同
  • git diff --cached <filename> 比较stage和repository中filename文件的不同
  • git diff HEAD <filename> 比较工作区和repository中filename文件的不同
  • 标签
  • git add . 只添加当前目录下的更改
  • git add -A 添加repository中所有目录下的修改
  • 在本地新建一个分支再push到远端: git checkout -b newbranchName 、 git push origin newbranchName
  • git cherry-pick <commitid> 、 git cherry-pick <commitid1>..<commitid2> 这里的<commitid>一般来说不是当前分支上的,而是另一个分支上的<commitid>,用于将另一个分支上的提交commit(或者说复制到、摘抄到)到当前分支,详见:git 场景——从一个分支cherry-pick一个或多个commit到另一个分支

git常用命令及用法小计的更多相关文章

  1. Git常用命令以及用法

    一 如何让单个文件回退到指定的版本 1.   进入到文件所在文件目录,或者能找到文件的路径 查看整个目录的修改记录 git log . 2.   回退到指定的版本 git reset f7a22076 ...

  2. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  3. Git 常用命令详解(二)

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  4. 【转】 Git 常用命令详解(二)----不错

    原文网址:http://blog.csdn.net/ithomer/article/details/7529022 Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如: ...

  5. Git常用命令(转)

    目前开发的新项目使用的版本控制工具基本用的都是Git,老项目用的还是Svn,网上Git资源也很多,多而杂.我整理了一份关于Git的学习资料,希望能帮助到正在学习Git的同学. 一. Git 命令初识 ...

  6. - Git常用命令 基础 总结 MD

    目录 目录 Git常用命令 帮助 help 常用操作 初始化 clone init 提交 push 暂存 更新 撤销修改 分支 branch 查看分支 创建分支 切换分支 checkout 删除分支 ...

  7. Ubuntu常用命令及git常用命令

    1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...

  8. Git 常用命令2

    Git 常用命令 Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ gi ...

  9. Git 常用命令 更新与提交

    整理了一下Git 常用命令,这个版本还是比较好用的,最后附上个人终结版,帮助你快速上手. 取得Git仓库 初始化一个版本仓库 git init Clone远程版本库 git clone yourgit ...

随机推荐

  1. [转]Win7 + Ubuntu 18.04 LTS (Bionic Beaver)双系统安装方法

    这里介绍在win7的基础上,安装ubuntu 18.04 LTS,实现双系统启动. 首先,假设你已安装了windows 7系统. 一. 制作ubuntu U盘启动盘. 方法见http://blog.p ...

  2. nginx的反向代理proxy_pass指令

    1. 首先什么是代理服务器?客户机发送请求时,不会直接发送到目的主机,而是先被代理服务器收到,代理服务器收到客服机的请求后,再向目的机发出,目的机就会返回数据给客户机,在返回给客户机之前,会被代理服务 ...

  3. jmeter(十二)关联之正则表达式提取器

    如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下一个请求的参数): 在jmeter中,可以利用正 ...

  4. async源码学习 - 控制流程waterfall函数

    waterfall函数会连续执行数组中的函数,每次通过数组下一个函数的结果.然而,数组任务中的任意一个函数结果传递失败,那么该函数的下一个函数将不会执行,并且主回调函数立马把错误作为参数执行. 以上是 ...

  5. [01] AJAX

    1.概述 AJAX,"Asynchronous JavaScript And XML"的简称,即"异步的JavaScript和XML".AJAX的作用在于页面中 ...

  6. 安全提示:IIS不要开启“WebDAV”扩展(转载)

    在IIS设置里,有一个“Web服务扩展”的设置,其中包括“WebDAV”扩展.许多人都不明白,这个“WebDAV”扩展是干嘛用的,要不要开启呢?有不少人的想法是“开启吧,以免影响网站运行,启用总比不启 ...

  7. bat基础知识

    1.打日志:使用重定向 eg:call test.bat>log/test.log 2.不关闭cmd窗口:使用pause eg: 结果: ps:注意,在自动化运维的时候,比如创建自动发版的脚本的 ...

  8. 省市区三级联动,JS实现

    文件下载地址:http://files.cnblogs.com/files/chenwolong/jsAddress.rar 示例截图: 在这里自己记录一个方法: function cmbAddOpt ...

  9. 【php增删改查实例】第十九节 - session的使用: 让服务器知道你是谁?

    因为HTTP请求是一种无状态的请求,所谓无状态,就是服务器不会记录下你本次请求的信息.http它是基于请求 - 相应模式的一种数据传输协议.就是说,你发送一个请求,我服务器给你一个响应,这件事情就算完 ...

  10. ElasticSearch实践系列(一):安装

    Elasticsearch简介 Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎.它允许您快速,近实时地存储,搜索和分析大量数据.它通常用作底层引擎/技术,为具有复杂搜索功能和要求的 ...