git 笔记

git 常用命令

git fetch

将提交、文件和引用从远程存储库下载到本地存储库中。更新远程仓库的本地镜像。
fetch + merge = pull

git add

  • git add .
    监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。

  • git add -u
    仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)

  • git add -A
    是上面两个功能的合集(git add --all的缩写),将新增、删除、修改的文件改动全保存至缓存区

git commit

将代码从缓存区保存至本地仓库

git commit 使用 -m 选项以在命令行中提供提交注释。
git commit -m "first commit"

git clone

将远程仓库clone到本地仓库 + 工作区

git push

将本地仓库的代码更新到远程仓库。

  • 直接更新到远程仓库
    git push <远程主机名> <本地分支名>:<远程分支名>

  • 一般远程仓库和本地镜像的分支存在追踪关系(git remote),可直接更新到本地镜像:
    git push origin <branch>

git checkout

  • 切换分支
    git checkout (branchname)

  • 切换到分支时,如果分支不存在,使用-b选项可以新建
    git checkout -b (branchname)

  • 将目录下所有文件restore到 最近一次commit 或者指定commit
    git checkout [commit Id] <目录>

git stash

将add但是还没有commit的文件移动到stash区,注意是移动不是复制。新增的文件,直接执行stash是不会被存储的,需要先add

git rebase

合并多次提交,简化分支合并记录线

git rebase --continue
git rebase --abort
git rebase -i [startpoint] [endpoint]
其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit。该区间指定的是一个前开后闭的区间

交互式编辑界面,指令类型

pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)

git revert

与git reset类似,用于代码回退。但是会增加一个新的commit id而不是删除当前的commit id,例如:
git log --graph: 1->2->3
git reset : 1->2
git revert: 1->2->3->2

git merge

git merge --abort
当merge发生冲突时,merge --abort 将会放弃merge并恢复merge前的状态。注意:如果有未commit的改变, merge --abort可能无法恢复,因此建议在merge前一定先commit所有的change

git cherry-pick <commit id>

将指定的commit反合于其他分支。

git branch

创建和管理分支

创建分支命令:
git branch (branchname)

删除分支命令:
git branch -d (branchname)

git init

在当前存储库上初始化 Git

git log

查看历史提交记录

git remote

添加远程版本库命令
git remote add [shortname] [url]

git diff

显示当前分支与其它分支之间差异

git代码区域

工作区间: 即我们创建的工程文件, 在编辑器可直观显示;

缓存区: 只能通过git GUI或git shell 窗口显示,提交代码、解决冲突的中转站;

本地仓库: 只能在git shell 窗口显示,连接本地代码跟远程代码的枢纽,不能联网时本地代码可先提交至该处;

远程仓库: 即保存我们代码的服务器

工作暂存区(stash)

代码回退

head^
head^数字

Angular 提交规范

Angular规范

<type>(<scope>): <subject>
//
<body>
//
<footer>

type

docs:对文档进行了修改
feat:增加新的特征
fix:修复bug
refactor:既不是修复bug也不是添加特征的代码重构
style:不影响代码含义的修改,比如空格、格式化、缺失的分号等
test:增加确实的测试或者矫正已存在的测试
chore:构建过程或辅助工具的变动

pref:提高性能的代码更改
build:对构建系统或者外部依赖项进行了修改
ci:对CI配置文件或脚本进行了修改

Git Flow

Master分支
主干,常驻。该分支是最近发布到生产环境的代码。该分支只能从其他分支合并,不能在这个分支直接修改。

Develop 分支
开发分支,常驻。该分支是我们是我们的主开发分支,包含开发中的最新代码。这个主要合并与其他分支,比如Feature分支,不能在直接在该分支上开发。

Feature 分支
特性分支,临时。一个新功能会基于Develop分支创建一个Feature分支,开发完成后,会将Feature分支合并到Develop分支。分支名建议为feature/<特性描述xxx>

Release分支
发布分支,临时。版本发布阶段用于预发布的分支。基于Develop分支创建一个Release分支并提交测试,测试中遇到的问题在Release分支上修改;版本发布后,将Release分支合并到Master和Develop分支。分支名建议为release/<版本号vxxxx-xxx>

Hotfix分支
补丁分支,临时。当在Master分支发现新的Bug时,需要创建一个Hotfix分支, 问题修复后,将Hotfix分支合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release。分支名建议为hotfix/<故障描述xxx>

相关指令实例

  • 创建develop分支
    git branch develop

  • 将分支推到远程仓库
    git push -u origin develop

  • 通过develop新建feaeure分支
    git checkout -b feature develop

  • 切换到develop分支
    git checkout develop

  • 将feature合并到当前分支
    git merge --no-ff feature
    --no-ff:保留分支的commit历史,所有的 commit 都会加到 master 分支上,并且会生成一个merge commit
    --squash:使用squash方式合并,把多次分支commit历史压缩为一次

  • 删除本地分支
    git branch -d <some-feature>

  • 删除远程feature分支:
    git push origin --delete feature

  • 给master分支打标签
    git tag -a v0.1.0 master

  • 提交标签到远程仓库
    git push --tags

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • 最近使用Git时感到有些生疏,所以利用晚上空余时间将廖雪峰Git教程重新系统的学习一边并做了笔记,温故知新。 Gi...
    LannisZheng阅读 665评论 1 3
  • 分支模型 常驻型分支: master:每个提交都是稳定版本,每次提交打tagdevelop:每次提交都是可完整编译...
    Wavky阅读 345评论 0 0
  • 目录 Git 笔记系列(一)—— Git简介 Git 笔记系列(二)—— Git工作流程 Git 笔记系列(三)—...
    吃蘑菇De大灰狼阅读 3,357评论 0 8
  • 配置 查看配置信息:git config --list 直接查看某个环境变量的设定:git config user...
    BoomLee阅读 912评论 0 2
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,421评论 0 7