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 ...
随机推荐
- iOS UI基础-11.0 UINavigationController
导航控制器 利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用 UINavigationController的使用 ...
- iOS - (集成支付宝第三方SDK大坑总结)
其实集成支付宝相对于集成微信支付来说,支付宝算是简单的了,后续有空再去研究微信支付,现目前先总结一下集成支付宝所遇到的坑,其实支付宝的坑也不算太多,细算下来大概5-6个左右,但是其报错方式有点恶心,不 ...
- Selenium基础知识(九)验证码
关于Selenium处理验证码总结下: 1.去掉验证码(这个为了测试,去掉可能性不大) 2.万能验证码(让开发给做一个万能验证码,可能性也不大) 3.OCR光学识别,python包Python-tes ...
- eclipse的调试模式以及断点运行
先在代码序号处打个点. 点击debug调试模式 然后再点击 如果有打断点,则会在断点处结束,如果没有,会一直一步一步向下直至结束.
- 16.和input相关的知识点
1.改变input里面placeholder颜色 <input class="pre_name" type="text" placeholder=&quo ...
- Unity shader学习之逐顶点漫反射光照模型
公式如下: Cdiffuse = Clight * mdiffuse * max(0, dot(n,l)); 其中,n 为表面法线,l 为指向光源的单位向量,mdiffuse 为材质温反射颜色,Cdi ...
- Yii数据对象笔记
要执行一个SQL查询,应该遵循以下步骤 - 创建一个 yii\db\Command 的 SQL查询命令 绑定参数(非必须) 执行命令 第1步 - 创建一个 actionTestDb()方法在 Site ...
- 20155228 获取技能的成功经验和关于C语言学习的调查
内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...
- FileChannel
1, FileChannel 虚拟类,不可以直接实例化,可以通过FileInputStream FileOutputStream 获取 例:文件的复制 public class ChannelDem ...
- jsp页面报错 javax.servlet cannot be resolved to a type
需要引入 Tomcat 中的两个 jar 包: servlet-api jsp-api.jar