git最小化配置:

  配置user.name 和 user.email

  git config --global user.name 'your_name'

  git config --global user.email 'your_email'     // email需要是有效的Email

  config的作用域

  缺省等同于local

    git config --local  只对某个仓库有效

    git config --global 对当前用户所有仓库有效

    git config --system 对系统所有登陆用户有效

  显示config配置,加--list

    git config --list --local

    git config --list --global

    git config --list --system

建Git仓库

  2种场景:

    把已有的项目代码纳入Git管理

      #cd 项目代码所在的文件夹

      #git init

    新建项目直接用git 管理

      #cd 某个文件夹

      #git init your_project  会在当前路径下创建和项目同名的文件夹

      #cd your_project

往仓库里添加文件:

  版本历史

  暂存区

  工作目录

    查看git工作状态

      #git status

    将文件加入到暂存区:

      #git add 文件或文件夹

    将暂存区文件正式提交

      #git commit  -m  "内容"

    查看版本历史的日志

      #git log

    将已经管理但是刚修改的文件添加到暂存区

      #git add -u

文件重命名:

    方案一:

    #mv readme readme.md

    #git add readme.md

    #git rm readme    原文件删除

    #git commit -m '内容'

    注:操作还原,清理暂存区所有变更

    #git reset --hard

    方案二:

    #git mv readme readme.md

    #git commit -m '内容'

查看git版本历史:

    #git log --online    简洁方式查看历史

    #git log --n4  查看最近4次历史

    #git log --all 查看所有分支的版本历史

    #git log --all --graph  父子关系展示版本历史

    注:git branch -v 查看本地分支

查看版本历史图形界面工具:

    gitk    

git目录:

    查看git 配置文件

    #cat .git/config

    

    .git/refs/  下存在heads和tags文件,heads下是分支文件的指针文件;tags下文件是哈希值文件;.git/objects/下文件是上传的文件

    #cd e8

    #git cat-file -t e8xxxx   // 查看文案类型

    #git cat-file -p e8xxx   //查看文件内容

    #git cat-file -p b72xxx

commit与tree与blob关系:(git对象的彼此关系)

查看git分支/切换分支:

  git branch -av  //查看分支

  git checkout master  //切换分支

  git checkout -b 子分支 父分支   //创建基于父分支的子分支

提交分支到远程:

  #git checkout --orphan cluster

  #git checkout cluster

  #git rm -rf .

  #vim README.md

  #git add README.md

  #git commit -m "ADD readme.md"

  #git push -u origin cluster

分离头指针:

  git checkout commit编号   //进入分离头指针

  文件编辑后,分离头要创建/加入某一分支

  git branch '分支名'  xxxxxx     //xxxx是分离头指针编号

head和branch关系:

  head不仅可以指向分支,还可以指向某个文件(分离头指针)

  

删除不需要的分支:

  git branch -D 分支名

修改commit信息:

  git commit --amend

修改老旧commit信息:

  git rebase -i commit的父ID  ==》进入说明文件 :wq! => 进入交互界面修改 ,保存  wq!

连续的多个commit合并成一个:

  commit的父ID查看:

  git log --graph  选定commitID的下一个即为父commit

  #git rebase -i commit的父ID

  ==》修改文件

  假设要合并4个文件,则保留一个pick,3个修改成s

再保存(wq!),进入交互界面

  修改文件,保存  wq!

间隔的多个commit合并成一个:

  #git rebase -i 最下面的commitID

  =》 在文件的最上面增加pick 最下面的commitID ,要合并的commit放在一起,保留一个pick,其余修改成s

  其余步骤同上

暂存区和head文件(最近commit的文件)差异:

  #git diff --cached

暂存区和工作区差异:

  #git diff

  #git diff -- readme.md //只比较readme.md文件差别

暂存区所有文件不保留(暂存区与工作区一致):

  #git reset HEAD

工作区文件恢复与暂存区一致:

  #git checkout -- <file>   //file 是文件名

取消暂存区部分文件的更改:

  #git  reset HEAD -- <file ...>

消除最近几只commit:

#git reset --hard  commitID   // 恢复到指定commitID位置

查看提交文件的差异://比较2个分支相同文件的差异

  #git diff 分支1  分支2  --  文件名

#git diff commitID1 commitID2  -- 文件名

删除文件:

  #git rm   file-name

  ex:删除远程仓库的目录/文件 

  #git rm -r --cached a/2.txt //删除a目录下的2.txt文件   删除a目录git rm -r --cached a
  #git commit -m "删除a目录下的2.txt文件" 
  #git push

加塞任务

  #git stash   //暂存区放置缓存

  #git stash list

  #git stash apply  //缓存内容放置工作区,缓存信息不丢失

  #git stash pop  // 缓存内容放置工作区,缓存信息丢失

git 仓库备份至本地

  

本地仓库同步至远程:

  #git  remote add 别名  远程项目地址

  #git remote -v  //查看远端别名连接地址

  #git push 别名  --all   //push 所有的分支

   

合并分支:

  #  git fetch origin 最新版本的线上分支:新建一个本地的分支//从远程的origin仓库的最新版本的线上分支下载到本地,并新建一个本地的新分支

  #  git diff 新建的本地的分支

  # git merge 新建的本地的分支//将新建一个本地的新分支和本地分支合并

  #  git branch -D 新建的本地的分支

  #  解决冲突

  #  git add .

  #  git commit -m '合并+解决冲突'

  #  git pull origin 最新版本的线上分支

  # git push origin 我本地的分支:最新版本的线上分支

  

Git知识的更多相关文章

  1. 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!

    git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...

  2. Git知识总览(二) git常用命令概览

    上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ...

  3. Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决

    前两篇博客集中的聊了git的一些常用命令,具体请参见<Git知识总览(一) 从 git clone 和 git status 谈起>.<Git知识总览(二) git常用命令概览> ...

  4. Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作

    上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...

  5. Git知识总结

    Git知识总结 Git安装 windows 在git官网中下载安装程序,然后按默认选项安装即可 安装完成后,在开始菜单里找到"Git"->"Git Bash&quo ...

  6. Git知识总览(一) 从 git clone 和 git status 谈起

    本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://git-scm.com/book/zh/ ...

  7. git知识总结-1.git基础之git reference

    1.前言 Git版本管理的内容,是一系列由40bytes SHA-1字符串所代表patch,而Git References,则是对这些字符串的引用(也可以理解为别名).为什么需要别名呢?因为这些字符串 ...

  8. 最近学到的Git知识,大厂的Git机制还是很方便的

    本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git com ...

  9. Git知识总览(五) Git中的merge、rebase、cherry-pick以及交互式rebase

    上篇博客聊了<git分支管理之rebase 以及 cherry-pick相关操作>本篇博客我们就以Learning Git中的关卡进行展开.下方列举了LearningGit中的 merge ...

  10. Git知识总览(六) Git分支中的远程操作实践

    前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...

随机推荐

  1. ssh报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    今天登陆远程主机的时候,出现如下的报错信息 ssh 10.0.0.1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WAR ...

  2. String hashcode的兴趣试玩

    今天突然看到Hashcode和equals,==比较时,一时兴起,想了解一下hashcode生成规则,为什么hashcode相同,无法说明对象相等,但用equals说明相同,却可以推出对象的hashc ...

  3. 使用BITSADMIN下载文件

    BITSADMIN /RAWRETURN /TRANSFER D /PRIORITY HIGH http://127.0.0.1:80/file.exe C:\ProgramData\file.exe

  4. C#中抽象类和接口的区别(二)

    一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外 ...

  5. 第六篇 flask中session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...

  6. golang 框架 之 CHI

    1,特性 golang 的 http框架已经有很多,究其原因:go 的net/http 已经做了大部分工作,封装一个框架的工作量,没有那么的大. 不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢 ...

  7. ASP.NET 创建WebService——简单例子

    Web service是一个基于可编程的web的应用程序,用于开发分布式的互操作的应用程序,也是一种web服务 WebService的特性有以下几点: 1.使用XML(标准通用标记语言)来作为数据交互 ...

  8. jquery easyui datagrid 如何第一次点击列标题时是降序排列

    使用 EasyUI的onBeforeLoad事件,在发回到服务器查询之前,修改排序和对应的图标样式. 1.配置回调函数 data-options='onBeforeLoad:fnOnBeforeLoa ...

  9. C# 复选框显示多项选择

    private void Form1_Load(object sender, EventArgs e) { checkedListBox1.Items.Add("语文"); che ...

  10. iOS代码组件化--利用cocoaPods创建私有库

    如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的 ...