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 ...
随机推荐
- ida信息获取函数
idc. http://www.cnblogs.com/fply/p/8503929.html 获取ida可执行文件路径 GetIdaDirectory() print GetIdaDirect ...
- 胸片和CT断层图像是怎么来的?
本文作者系医科大学青年教师,关注公众号"计算机视觉life"菜单栏回复"医学" 进群交流 如何得到CT断层图像? 相信小伙伴体检的时候都拍过胸片,假如哪个不幸的 ...
- catalog start with + switch database to copy的妙用
catalog start with + switch database to copy的妙用 环境:RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby R ...
- node.js初识09
1.node_module文件夹 如果你的require中没有写./,那么Node.js将该文件视为node_modules目录下的一个文件. 2.package.json文件 如果使用文件夹来统筹管 ...
- 011-Server服务器对象属性
Transfer:第一个页面直接调用第二个页面,执行完第二个页面后不再返回第一个页面,立即响应到客户端浏览器.Execute:第一个页面直接调用第二个页面,执行完第二个页面后再返回第一个页面执行,最后 ...
- VS2010和选中代码相同的代码的颜色设置,修改高亮颜色
使用Visual Studio 2010, 发现很难看清非活动的选中代码,研究了下,发现以下方法可以设置: 1. 菜单:工具 -> 选项 ->环境 ->字体和颜色 2. 在右边 ...
- vs2017创建支持多框架(net4.6.1;net4.6.2;netstandard2.0;netcoreapp2.0)版本
1.新建netcore或netstandard或net4.6.1项目 2.编辑项目文件: <Project Sdk="Microsoft.NET.Sdk"> < ...
- 解决ConfigParser配置option的大小写问题
通常情况下,我们会这样解析配置文件: confiig = ConfigParser.ConfigParser() config.read('xxx.ini') #这个read表示对某个文件用读打开, ...
- Java IO/NIO教程
Java IO教程 http://tutorials.jenkov.com/java-io/index.html Java NIO教程 英文版: http://tutorials.jenkov.com ...
- php实现多进程
转:http://www.jb51.net/article/71238.htm cd php-version/ext/pcntl phpize ./configure && make ...