Git总结笔记
git相关配置
# 设置你的 Git 用户名
git config --global user.name "<Your-Full-Name>" # 设置你的 Git 邮箱
git config --global user.email "<your-email-address>" # 确保 Git 输出内容带有颜色标记
git config --global color.ui auto # 对比显示原始状态
git config --global merge.conflictstyle diff3 git config --list #配置编辑器
git config --global core.editor "'E:/Sublime Text3/sublime_text.exe' -n -w" #配置定制化输出
git config --global alias.mylog "log --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(yellow)%h %Cblue%cn %Cred%ad %Creset%s'"
创建git仓库
#初始化目录
git init #克隆项目
git clone <远程仓库地址> <本地生成目录名>
查看仓库历史记录
#初始化目录
git init #克隆项目
git clone <远程仓库地址> <本地生成目录名> #查看仓库状态 重点命令
git status #查看日志
git log
--oneline 每行显示一个commit
--stat 显示统计信息
--graph 用图像展示分支信息
-p 查看具体改动信息
-w 忽略空格变化
<commit_sha> 显示指定的commit信息 ***关于分页器
要向下滚动,按下
j 或 ↓ 一次向下移动一行
d 按照一半的屏幕幅面移动
f 按照整个屏幕幅面移动
要 向上滚动,按上
k 或 ↑ 一次向上移动一行
u 按照一半的屏幕幅面移动
b 按照整个屏幕幅面移动
按下 q 可以退出日志(返回普通的命令提示符)
向仓库中添加commit
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

#添加文件 从工作区添加到暂存区
git add <file1> <file2> … <fileN> #移除文件 从暂存区
git rm --cached <file1> <file2> … <fileN> #提交 暂存区的文件到版本库
git commit -m "<提交说明信息>" ***良好的提交说明
建议
消息篇幅简短(少于 60 个字符)
解释提交的作用(不是如何更改或为何更改!)
禁忌
请勿解释为何做出了这些更改(下文会深入讲解这一点)
请勿解释如何进行了更改(这是 git log -p 的目的!)
请勿使用单词"and"
如果你必须使用 "and",则你的提交说明可能进行了太多的更改,将这些更改拆分为独立的 commit
例如 "make the background color pink and increase the size of the sidebar" #查看已被加入但是尚未提交的更改。
git diff
= git log -p #忽略文件,不加入版本控制
修改.gitignore文件
支持通配符
空白行作为空格
# - 将行标记为注释
* - 与 0 个或多个字符匹配
? - 与 1 个字符匹配
[abc] - 与 a、b 或 c 匹配
** - 与嵌套目录匹配 - a/**/z 与以下项匹配
a/z
a/b/z
a/b/c/z
标签、分支、合并
#tag是固定的,分支是随着commit在移动的,HEAD是指向活跃的分支,也就是工作目录看到的分支,切换分支,也就是让
HEAD指向不同的分支 #创建标签
git tag <tagName>
-a带注释
-d删除标签
<commit_sha> #列出所有分支
git branch
<branch_name>创建分支
-d 删除分支
-D 强制删除 #给分支改名
git branch -m <old_name> <new_name> #切换分支/检出分支
git checkout <branch_name> #在某个分支基础上创建新的分支,并检出
git checkout -b <new_branch_name> <old_branch_name> ###快进合并
如果当前的分支和另一个分支没有内容上的差异,就是说当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个“快速向前”(fast forward)操作;git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支。 #合并分支
git merge <name-of-branch-to-merge-in> #撤销合并
git reset --hard HEAD^
^属于“相对 commit 引用”并表示“父 级 commit” #查看分支情况,可以看到分支图
git log --oneline --decorate --graph --all #查看合并冲突
git status #合并冲突指示符解释
编辑器具有以下合并冲突指示符:
<<<<<<< HEAD 此行下方的所有内容(直到下个指示符)显示了当前分支上的行
||||||| merged common ancestors 此行下方的所有内容(直到下个指示符)显示了原始行的内容
======= 表示原始行内容的结束位置,之后的所有行(直到下个指示符)是被合并的当前分支上的行的内容
>>>>>>> heading-update 是要被合并的分支(此例中是 heading-update 分支)上的行结束指示符 #解决合并冲突
git 使用合并冲突指示符来告诉你两个不同分支上的哪些行导致了合并冲突,以及原始行是什么。要解决合并冲突,你需要:
1.选择保留哪些行
2.删掉所有带指示符的行 遇到合并冲突:
1.打开编辑器,搜索合并冲突标记
2.移除带有标记的行
3.找出你要保留的行
4.保存文件、暂存文件、提交 #commit 合并冲突
删掉所有包含合并冲突指示符的行并选择保留哪些代码后,直接保存文件,并将其添加到暂存区,然后 commit!就像普通合并一样,代码编辑器会弹出,并让你提供 commit 消息。和之前一样,我们经常会使用自动生成的合并 commit 消息,因此在编辑器打开后,直接关闭编辑器并使用自动生成的 commit 消息。
撤销更改
#更新最后一个更改
git commit --amend #还原更改
git revert <commit_sha>
此命令将撤消目标 commit 所做出的更改
创建一个新的 commit 来记录这一更改 #重置更改,某个commit不在仓库中,则它所包含的内容也会消失
git reset <commit_sha>
--mixed 默认,将撤销的提交更改移到工作目录
--soft 将撤销的提交更改移到暂存区
--hard 将撤销的提交更改直接删除,丢到垃圾桶 #在进行重置分支命令前,最好备份分支
git branch backup 不过git还是会持续跟踪30天,调用则git reflog
###还原会创建一个新的commit,并还原或撤消之前的 commit。但是重置会清除 commit! ###
^表示父commit
~表示第一个父commit
父 commit – 以下内容表示当前 commit 的父 commit
HEAD^
HEAD~
HEAD~1
祖父 commit – 以下内容表示当前 commit 的祖父 commit
HEAD^^
HEAD~2
曾祖父 commit – 以下内容表示当前 commit 的曾祖父 commit
HEAD^^^
HEAD~3
合并 commit 具有两个父级。对于合并 commit,^ 引用用来表示第一个父 commit,而 ^2 表示第二个父 commit
Git总结笔记的更多相关文章
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- 《Pro Git》笔记3:分支基本操作
<Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...
- git使用笔记(三)(图文说明) 图解提交更改内容的不同方式,涉及代码
此步之前的工作和示例请参考以下帖子: git使用笔记(一)Git的下载与配置 git使用笔记(二) 如何把GitHub上项目同步到本地 -------------------------------- ...
- git入门笔记汇总——(廖雪峰博客git入门)
本文内容是对廖雪峰老师Git教程做的笔记,外加一些自己的学习心得,还抱着学以致用的心态来实践一番 如有显示错误 请移步本人github:git教程小结 Git学习笔记 Git简介 安装Git 创建版本 ...
- Git学习笔记---协作的一般流程
一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...
- 【转帖】Git学习笔记 记录一下
本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...
- 【Git 使用笔记】第四部分:git在公司中的开发流程
先声明几个变量 仓管A:主分支,只有master分支仓管B:开发分支,只有各个业务开发分支 仓管B fork 于 A 如下图 为了保证 代码的稳定性,只有 仓管B中的某个分支测试完毕并进行了代码r ...
随机推荐
- HTTP GET的VC三种方式
一.第一种方式(包装类的方式) a.在VC++添加类,选择typelib b.选择文件:C:\Windows\System32\winhttp.dll 选择到右边生成的类,最后点完成,即产生了一个CW ...
- 学习笔记<3>View接触
一.View基本概念 1.界面上显示所有的控件都是用对象表示的,即有类,这些类都是View的子类. 2.View的种类 二.在Activity当中获取代表View的对象 1.根据ID可以用方法获取到对 ...
- Python全栈-day6-day7-字符编码和文件处理
一.字符编码 1.编码基础 定义:人在使用计算机时,使用的是人类能够读懂的字符,使用者必须通过一张字符和数字间的相对应关系表实现人机交互,这一系列标准称为字符编码 Python应用中解决核心字符串乱码 ...
- html5-了解元素的属性
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 【转】阿里出品的ETL工具dataX初体验
原文链接:https://www.imooc.com/article/15640 来源:慕课网 我的毕设选择了大数据方向的题目.大数据的第一步就是要拿到足够的数据源.现实情况中我们需要的数据源分布在不 ...
- Vim 文本编辑器的基本使用
Vim文本编辑器是Linux/Unix系统下最常用的工具之一,通过该工具可以很方便的建立.修改.编辑文档或者程序文件,其作用类似与windows系统下的记事本或者notepad++,因此熟练掌握该工具 ...
- 【封装函数】当前元素距离html文档顶部距离
function getPositionTop(node) { var top = node.offsetTop; var parent = node.offsetParent; while(pare ...
- SQL优化(转)
1. 负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好习惯 可以优化为in查询: ...
- 通过百度api 获取当前城市3种方法
方法一:function showLocation(data) { console.log(data.content); //alert(data.content.address_detail.cit ...
- CSR8670的A2DP与AVRCP的应用笔记
1. A2DP1.1. 基本概念阅读A2DP SPEC V12的1.1章,可知: Advanced Audio Distribution Profile(A2DP)典型应用是立体声音乐播放器的音乐到耳 ...