Git知识
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 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知识的更多相关文章
- 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!
git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...
- Git知识总览(二) git常用命令概览
上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ...
- Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决
前两篇博客集中的聊了git的一些常用命令,具体请参见<Git知识总览(一) 从 git clone 和 git status 谈起>.<Git知识总览(二) git常用命令概览> ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- Git知识总结
Git知识总结 Git安装 windows 在git官网中下载安装程序,然后按默认选项安装即可 安装完成后,在开始菜单里找到"Git"->"Git Bash&quo ...
- Git知识总览(一) 从 git clone 和 git status 谈起
本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://git-scm.com/book/zh/ ...
- git知识总结-1.git基础之git reference
1.前言 Git版本管理的内容,是一系列由40bytes SHA-1字符串所代表patch,而Git References,则是对这些字符串的引用(也可以理解为别名).为什么需要别名呢?因为这些字符串 ...
- 最近学到的Git知识,大厂的Git机制还是很方便的
本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git com ...
- Git知识总览(五) Git中的merge、rebase、cherry-pick以及交互式rebase
上篇博客聊了<git分支管理之rebase 以及 cherry-pick相关操作>本篇博客我们就以Learning Git中的关卡进行展开.下方列举了LearningGit中的 merge ...
- Git知识总览(六) Git分支中的远程操作实践
前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...
随机推荐
- angularJs实现数据双向绑定的原理
angular1.x在指定的事件触发时(比如dom事件,xhr响应事件,浏览器定位变更事件,定时器事件),通过脏值检测的方式比对数据是否有变更,来决定是否更新视图. angular2使用了zone.j ...
- python3 request模块初使用
import requests class Interface_Request: def __init__(self,url,mobilephone,pwd): '''login参数初始化''' se ...
- 潭州课堂25班:Ph201805201 tornado 项目 第五课 增加用户系统-用户中心(课堂笔记)
tornado 相关说明 在 users 表中创建记录,做测试 在项目根目录下创建 test.py # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/27 ...
- CSS(五)
定位 关于定位 我们可以使用css的position属性来设置元素的定位类型,postion的设置项如下: relative 生成相对定位元素,元素所占据的文档流的位置不变,元素本身相对文档流的位置进 ...
- 使用boost.python封装C++库
使用boost.python封装C++库 C++以高性能著称,但是编写较为复杂.而简洁是Python的强项.如果能珠联璧合,就能发挥两家之长.本文尝试用boost库的python模块封装C++ 前期准 ...
- python学习:注释、获取用户输入、字符串拼接、运算符、表达式
注释 #为单行注释'''三个单引号(或者"""三个双引号)为多行注释,例如'''被注释的内容''' '''三个单引号还可以起到多行打印的功能. #ctrl+? 选中的多行 ...
- UIButton设置标题左对齐
Button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//左对齐(UIControlContentHo ...
- CSS入门介绍(一)
css 层叠样式表(英文名:Cascading Style Sheets),主要用于美化网页 1.css的表现形式 1.1 行内样式(内嵌样式) 写在标签内的样式,写在标签的开始部分的内部,style ...
- __x__(46)0910第六天__框架集
框架集frameset 和 内联框架iframe 的作用类似: 在一个页面中,引入其他的外部html页面. 框架集可以同时引入多个页面. 在 html5 中,推荐使用框架集,而不推荐使用iframe ...
- Go语言基础之time包
Go语言基础之time包 时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time包的基本用法. Go语言中导入包 Go语言中使用import关键字导入包,包的名字使用双引号(”)包裹 ...