常用

  • git init git 初始化
  • git clone https://github.com/wsxx111/thisStudy.git 从远端拉下来
  • git status 查看跟踪状态
  • git status -s (喜爱简介版本)
  • git add readme.txt 添加到暂存区
  • git commit -m '新提交' 从暂存区到提交到库存
  • git commit -am'新提交' 直接略add过暂存区,提交到库存 (书上不怎么推荐)
  • git commit --amend -m '重新提交' 修复上次提交的 ,相当于 git reset head^ 了一下,又重新提交了

查看

  • git remote 查看远端仓库名
  • git remote -v 查看远端地址
  • git remote show origin 查看本地和远端分支信息

日志

  • git log 查看日志
  • git log -3 查看前3条日志 (分支下的记录,不是所有的)
  • git log -s -2 (简单版)
  • git log --graph 左边有分支图
  • git log --pretty=oneline 版本号一目了然
  • git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录

分支

  • git branch 查看本地分支
  • git branch -r 查看远程分支
  • git branch -a 查看本地和远程分支
  • git branch dev 新建未存在的分支dev
  • git branch -d test 删除分支test
  • git branch -D test 当上面提示:分支有没有合并到当前分支的内容,没法删除时 就需要强制删除了,这个就是强制删除
  • git push --delete origin test 删除远端分支test
  • git branch -d -r new // 删除远程new分支
  • git checkout test 切换到已存在的分支test上
  • git checkout -b test 新建并切换test分支上,基于本地创建分支
  • git checkout -b dev origin/dev 基于远程分支创建本地分支,注意不能这么写 git checkout -b develop origin develop
  • git branch -m | -M oldbranch newbranch // 重命名分支,如果newbranch名字已经存在,需用-M强制重命名
  • 当前分支为dev, git checkout master =git checkout dev master 是dev相对于master发生的改变

  • git branch -v // 显示分支信息

  • 你在一个分支中工作,但是像获取另一个分支中的某个文件。
     git checkout <branch> -- <file>
    例如master 有个a.txt文件,现在dev分支上执行 git checkout master -- a.txt
    之后,dev分支会多一个a.txt,(是跟踪未add状态)

撤销

  • git reset --hard 撤销修改 到未修改的干净状态
  • git reset --hard head 与上面一样(对未add命令的和已add未commit的撤销到未add的未修改干净状态)
  • git reset --hard 34csdds 撤销到某个版本
  • git reset --hard head^ 撤销到未修改的干净状态的上一个提交版本
  • git reset --hard head^^ 撤销到未修改的干净状态的上两个提交版本
  • git reset --hard head~4 撤销到未修改的干净状态的上四个提交版本
  • git checkout -- readme.txt (对未add但修改了,撤销到未修改,对已经add又修改了,撤销到未修改已add状态) 去掉 -- 也是一样的(git checkout readme.txt),但建议带着 避免与切换分支产生分歧就不好了
  • git reset (等于 git reset --soft) 或者git reset head 把add暂存区里面的给撤回到未add的工作区中,注意,只是改变状态,没有改变文件里面的内容,而chekout --改变的是内容,不涉及状态
  • git reset HEAD readme.txt 撤销某文件,但不能硬撤销某文件,只能软撤销
  • git reset --hard 或者git reset --hard head 这个是回复到未修改的工作区,即未add的工作区中,和上面 git reset 还是不一样的,git reset 默认是git reset --soft

合并

  • git merge test 把test分支合并到当前分支 (合并前记得切换好分支),可以加 -m 进行解释
  • git merge --ff test 和上面一样。 --ff是指fast-forward命令。当使用fast-forward模式进行合并时,将不会创造一个新的commit节点。默认情况下,git-merge采用fast-forward模式。当前分支合并到另一分支时,如果没有分歧解决,就会直接移动文件指针。这个过程叫做fast forward。

    例如,开发一直在master分支进行,但忽然有一个新的想法,于是新建了一个develop的分支,并在其上进行一系列提交,完成时,回到 master分支,此时,master分支在创建develop分支之后并未产生任何新的commit。此时的合并就叫fast forward。master在合并develop分支的时候并没有产生新的节点,如果是--no-ff 会生成一个节点

  • git merge --no-ff -m '提交合并' 不fast-forward合并
  • git merge --abort 该命令仅仅在合并后导致冲突时才使用。git merge --abort将会抛弃合并过程并且尝试重建合并前的状态。但是,当合并开始时如果存在未commit的文件,git merge --abort在某些情况下将无法重现合并前的状态
  • git merge dev --squash 当一个合并发生时,从当前分支和对方分支的共同祖先节点之后的对方分支节点,一直到对方分支的顶部节点将会压缩在一起,使用者可以经过审视后进行提交,产生一个新的节点。

    在看到冲突以后,你可以选择以下两种方式:

    决定不合并。这时,唯一要做的就是重置index到HEAD节点。git merge --abort用于这种情况。
    解决冲突。Git会标记冲突的地方,解决完冲突的地方后使用git add加入到index中,然后使用git commit产生合并节点。

    你可以用以下工具来解决冲突:

    使用合并工具。git mergetool将会调用一个可视化的合并工具来处理冲突合并。

    查看差异。git diff将会显示三路差异(三路合并中所采用的三路比较算法)。

    查看每个分支的差异。git log --merge -p <path>

    将会显示HEAD版本和MERGE_HEAD版本的差异。

    查看合并前的版本。git show :1:文件名显示共同祖先的版本,git show :2:文件名显示当前分支的HEAD版本,git show :3:文件名显示对方分支的MERGE_HEAD版本。

    git merge test 如果有冲突,想撤销就
    git reset --hard或者 git reset --hard head 就能还原到未合并前

衍合

  • git rebase master 衍合,把 从当前分支和master的最近祖先开始到当前分支的 所有提交节点 合到master之后,就是换基
  • rebase介绍

区别

  • git diff 当前工作区 与 暂存区 比较 显示add之后的变化
  • git diff --cached 或者 git diff --staged 是比较的暂存区与库存head的 ,显示的是如果要commit后,提交的新变化
  • git diff head 显示的是当前改变 与库存head的变化,包括 add的和add之后的改变 的汇总

关联

  • git clone https://github.com/wsxx111/thisStudy.git 从远端拉下来(从远端到本地的一种关联)
  • git remote add origin https://github.com/wsxx111/GGG.git 本地建立一个远端的仓库关联 注意地址要对,可以在github先建一个GGG仓库 (从本地到远端的一种关联)

拉取

  • git fetch 这将更新git remote 中所有的远程仓库 所包含分支的最新提交id, 将其记录到.git/FETCH_HEAD文件中,不包括文件
  • git fetch origin 这将名称为origin 的远程仓库上的所有branch的最新提交id,将其记录。
  • git fetch origin dev 这将这将名称为origin的远程仓库上的分支dev
  • git pull origin master 拉取远端到本地,并与本地的东西合并

    相当于执行了两步
    git fetch origin master 拉取远端到本地,不合并

    然后 git merge origin master
    这两步就是 git pull origin master 的操作

  • pull即 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。

推送

  • git push -u origin dev 把当前的分支与远段的dev分支关联,一般用于首次推送

    或者 git push --set-upstream origin dev 这个也可以 之后的推送就可以使用 git push 就行了,同时更新的时候也可以git pull 或者 git fetch 就行了,因为已经关联了。

    也可以git branch --set-upstream dev origin/dev 实现本地和远端的分支关联

  • git push origin dev 通用的推送,把当前分支推送到远端的dev分支

其他(不想写了)

  • git stash
  • git stashlist
  • git stash apply
  • git stash pop
  • git rm test.txt
  • git merge --no-ff -m "merged bug fix 101" issue-101
  • git remote rm origin 删除远程仓库
  • git remote add origin git@github.com:wsxx111/GGG.git
  • git tag v1.0
  • git tag
  • git show v0.9
  • git tag -d v0.1 删除一个本地标签
  • git push origin v1.0 推送一个本地标签
  • git push origin --tags 一次性推送全部尚未推送到远程的本地标签

# 删除 untracked files
git clean -f # 连 untracked 的目录也一起删掉
git clean -fd # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd # 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd搜索
git clean -nf
git clean -nfd

Git命令小总结的更多相关文章

  1. git命令小汇总和github

    Git 简介 是什么 Git 也是一个版本控制管理软件 有什么用,可以解决什么问题 保存历史记录 多人协作 有了 SVN,为啥要学 Git Git 火 Git 相对于 SVN 来说,更强大,用户也非常 ...

  2. git 命令小总结

    下载代码 git clone http://admin@192.168.0.208:7990/scm/klvchen/tale.git 设置用默认户名和密码登录,注意 URI 前面不允许有 http, ...

  3. 小技巧--tab键自动补齐Git命令

    Git是什么,你不清楚? 好吧,那么该篇内容对你也木有帮助,请绕道而行.. 我们在使用Git命令时,可以通过tab键,自动补齐Git,特别是在切换分支时特别有用. 如下,当我们想将当前分支切换到bug ...

  4. 我 Git 命令列表 (2)【转】

    转自:http://www.microsofttranslator.com/bv.aspx?from=en&to=zh-CHS&a=http%3A%2F%2Fvincenttam.gi ...

  5. 30分钟Git命令入门到放弃

    git 现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中. 初学者非常容易被各种命令,参数吓哭.但实际上刚上手你并不需要了解所有命令的用途.你可以从掌握一些简 ...

  6. git命令使用方法

    git安装包 http://c35.yunpan.360.cn/my/?sid=#%2F%E5%AE%89%E8%A3%85%E5%8C%85%2FGit%E5%AE%89%E8%A3%85%2F g ...

  7. 常用Git命令清单。

    上期传送门:[清单]7个管理和优化网站资源的工具 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository: ...

  8. 使用git命令创建分支到团队项目

    背景 在我们的团队中,我作为管理者,创建了一个叫HelloWorld的项目,大家各自在本地进行开发,将自己的工作贡献到我们的团队项目中.为了便于审核,我希望大家先将自己的贡献先放在属于自己的一个分支上 ...

  9. Git项目协同开发学习笔记1:项目库开发基础git命令

    这年头git基本都是项目开发的标配,之前刚好碰到了就花了两天时间系统学习了下.本文内容基本来自以下tutorial:Learn Git(建议直接去看原文,因为这个网站是有更新的).这个是我看过对git ...

随机推荐

  1. 关于PyYAML报错问题解决

    转自:http://www.fwqtg.net/%E5%85%B3%E4%BA%8Epyyaml%E6%8A%A5%E9%94%99%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86% ...

  2. Spring+Struts2+Hibernate的整合

    这篇主要采用Maven搭建Spring+Struts2+Hibernate的整合项目,复习一下SSH框架,虽然spring提供自己的MVC框架, 但是Spring也提供和其他框架的无缝整合,采用组件形 ...

  3. MongoDbHelper 帮助类(下)

    对MongoDbHelper帮助类进行了一下整合,但是代码中一个方法需要将string类型转化为BsonValue类型一直出错.所以欢迎留言指正 using System; using System. ...

  4. storm-kafka编程指南

    目录 storm-kafka编程指南 一.原理及关键步骤介绍 (一)使用storm-kafka的关键步骤 1.创建ZkHosts 2.创建KafkaConfig 3.设置MultiScheme 4.创 ...

  5. 【例题5-3 UVA - 10815】Andy's First Dictionary

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用stringstream来处理中间的标点. ->直接把他变成一个空格. 然后重新输入进去. set默认的字典序就是升序的了. ...

  6. js中退出语句break,continue和return 比较 (转)

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...

  7. [Docker] Build a Simple Node.js Web Server with Docker

    Learn how to build a simple Node.js web server with Docker. In this lesson, we'll create a Dockerfil ...

  8. CTR深度学习

    深度学习在 CTR 中应用 一. Wide&&Deep 模型 首先给出Wide && Deep [1] 网络结构: 本质上是线性模型(左边部分, Wide model) ...

  9. word多出空标题,样式是列出段落 - -显示时,选择不勾选“隐藏文字”

    word多出空标题,样式是列出段落

  10. ios开发之坐标系转换

    1:坐标系转换最核心的问题就是:比较两个坐标是否包含,或者是重叠等,最主要的问题是先将两个坐标转换到同一个坐标系下再去比较.第一步先确定矩形框在某个view坐标系下的frame(该矩形框是以该view ...