【git】git实操笔记
目录
- git指南
- git常用命令
- 配置局部用户
- git credential helper 免密配置
- 代码提交规范
- push到远程仓库
- 根据git log修改和抢救
- git reset: 恢复到之前的commit(本地代码均未Push)
- git rebase的各种作用
- pull解决冲突
- 修改某一次commit的内容
- 强制push到远程分支【高危操作】
git指南
git常用命令
//do some modification
git diff
git checkout -f //This is used to throw away local changes//do some modification
git status
git add . //添加changes
git status //可以看到changes to committedgit commit -a -s -m "some info messages about changes"
git show //可以看到commit及用户签名
git log //可以看到他人的commitgit remote -v //origin
git branch //查看分支,例如,在master分支下
git push origin <本地分支>:<远程分支>----
本地分支重命名
git branch -m old new(不是当前分支)
git branch -m new(是当前分支)
配置局部用户
在代码库git下生成局部用户的git config文件,commit时有user信息。注意不要跟别人用同一个user name来提交(全局用户)。
cd /src/github.com/repo
git config user.name "user"
git config user.email "user@email.com"
cat .git/config
git credential helper 免密配置
起因:每次编译需要从gitlab上拉包都要输入用户密码,很麻烦,用git credential可以保存用户密码
//删除 manager配置
git config --global --unset credential.helper manager/store
//添加manager配置
git config --global credential.helper manager/store
代码提交规范
- 格式
type: description
- 其中type是commit的类别,包括
- fix - 修复bug
- add - 新功能
- update - 更新
- style - 代码格式改变
- test - 增加测试代码
- revert - 撤销上一次commit
- build - 构建工具改动
- description是对本次提交的简短描述。
- 不超过50个字符
- 每行不能超过72个字符
- 推荐以动词开头
- 其中type是commit的类别,包括
- 每个功能的实现作为一个commit
- 例如,单元测试的每一个测试函数都是一个功能,为了便于review,可以每写一个函数就一个commit,防止代码量太大,增加review负担。
- 每次commit的代码行数不要超过300行!10 lines - 10 bugs, 500 lines - looks fine!
push到远程仓库
- 如果在本地的master分支修改,然后在远程仓库:git remote有一个origin,那push到远程仓库的时候,可以不push到master分支,而是push到远程仓库的新建分支。可以把本地的master分支,推到远程的mybranch分支。
git push origin master(本地分支):mybranch(远程分支)
一般情况下最好是本地分支和远程分支重名,所以一开始pull的时候就checkout到一个新特性分支。通常情况下,一个分支对应一个新的特性。
先rebase再push
git pull --rebase origin master (把当前分支上所有的commit换成基于最新master分支的commit) git push origin 本地分支:远程分支
根据git log修改和抢救
git reset: 恢复到之前的commit(本地代码均未Push)
状态恢复到之前的commit,但是现有的修改保留
$git log ---- commit aaaaa (newest) commit bbbbb commit ccccc$git reset ccccc$git log --- commit ccccc (然后git status可以看到aaaa和bbbbb的修改,unstaged)
完全撤销,丢弃某一次commit之后的代码,恢复现场
$git reset --hard ccccc
git rebase的各种作用
http://jartto.wang/2018/12/11/git-rebase/
case1:多次无用commit可以合并到一条commit。
https://juejin.im/entry/5ae9706d51882567327809d0
- 对于一个小功能,多次无用commit不利于代码review,且会造成分支污染,不利于回滚。
git rebase -i HEAD~4 //合并最近四次提交记录 ---进入vim编辑模式,有相关命令
//pick+s+s+s,确定好每条commit如何处理后,:wq推出,会自动进入commit message编辑的界面
//编辑commit messagegit log //查看结果
- case2:分支合并
- 如果两个人在masterd的不同子分支上开发,然后最终要合并,直接merge会污染commit记录。可以先rebase再merge。
- case3:在一个过时的分支上进行开发,先rebase比较好。
- case4:修改某一次commit的内容
但是git rebase是一个危险命令,因为改变了历史,要谨慎使用。
只要分支上需要rebase的所有commits历史都没有被push过,就可以安全使用rebase。
pull解决冲突
- push前,可以先pull,注意pull和pull --rebase的区别
git pull --rebase origin master //把在当前分支上的所有修改rebase到orgin:master分支。
- 冲突解决
- 在IDE中可以直接选择,也可以手动修改。
- head====上半部是我的commit,下半部是pull到的修改。酌情选择。可以直接accept incoming change。
- 解决完了,要git add一下。再git rebase --continue。
修改某一次commit的内容
- 起因:用VScode导致有很多trailing space,别人无法用Patch来合并。要删除某一个commit中的这些无用空格。
- 修复:
- (git stash)
- git rebase -i(–interactive) [需要修改的commit的前一条的commit号]
- 对于需要修改的commit,把pick改成 edit
- 修改文件
- git add
- git commit --amend
- git rebase --continue
- (git stash pop)
强制push到远程分支【高危操作】
起因:之前没有rebase,直接push到了B分支。希望rebase后再push到B分支上(覆盖)。(远程仓库的分支只可以更新,不可以覆盖,除非force push)
local: git pull --rebase origin master //xxxx冲突,解决冲突.... git add xxxx git rebase --continue //ok git push [-f] origin 本地分支:远程分支
【git】git实操笔记相关推荐
- 记一次 Git GitHub 实操
记一次 Git & GitHub 实操 1.前言 之前写了一个名为 typora-tools 的小工具,主要实现了图片瘦身.标题编号.图片同步的功能,现在想将此项目上传至 GitHub 中,并 ...
- 浪潮式发售实操笔记(中国版)
浪潮式发售实操笔记(中国版) 覃小龙 中国互联网权威营销专家 沃克其人 产品发售公式的发明人叫杰夫·沃克,一个精彩的吊丝逆袭人生,他堪称互联网赚钱速度最快的人,目前是亚马逊创始人贝佐斯的创业教练. 杰 ...
- 实操笔记——笔记本加内存及清灰
实操笔记--笔记本加内存及清灰 写在前面 一.加内存 1 如何确定能否增加 1)当前电脑内存 2)系统是否支持 3)当前电脑支持的最大内存 4)内存条插槽数 2 如何选择内存条 首选确定当前内存条是几 ...
- 基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记
基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记 开发平台:创龙TL665x-EasyEVM: 基于TI KeyStone C66x多核定点/浮点DSP TMS320C665x, ...
- 小白也能看懂的git入门实操[狂神聊git学习笔记]
写在前面:本文为狂神聊git视频的学习笔记,仅供个人学习使用,如有侵权,请联系删除. 视频链接:https://www.bilibili.com/video/BV1FE411P7B3 文档参考:htt ...
- supervisor 守护多个进程_supervisor守护进程管理实操笔记
2020年年后工作中需开发一支持多数据源自动上报业务数据的程序,程序开发完部署上线时需要对其进程进行自动管理,不然哪天程序down了还不知,可就麻烦了,所以这里选用了强大的supervisor,以下文 ...
- 计算机系统要素-Project1实操笔记
目录 1 软件安装(环境搭建) 2 Project 1实操记录 2.1 Project 1目标: 2.2 实现方法一:用两个[Nand]实现一个[And] 2.3 实现方法二:先实现一个[非门],再用 ...
- php编程入门指南快学快用,会计:快学快用实操笔记
本书从企业的主要经济业务入手,本着为实际工作服务的宗旨,为读者介绍了会计基础知识和基本核算方法,并从企业管理的角度讲解了财产清查和税务方面的知识.书中主要内容包括重新认识会计.建立账户.会计凭证.登记 ...
- 郝健: github多人协作项目开发实操笔记
作者简介: 郝健(Artist),目前就职于赛尔网络CERNET技术开发部,研发项目经理:以前在天融信Topsec软件平台部做防火墙核心系统开发. 本文简介: 这是网友Artist在看完王玉成老师的g ...
最新文章
- python语言入门书籍推荐-入门python有什么好的书籍推荐?
- Ubuntu17.04安装WineQQ7.8及微信
- Radar Installation
- Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
- iOS强制切换横屏、竖屏
- oracle+内存错误,oracle使用内存的错误,ORA-27102: out of memory
- Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)
- Struts2中EL表达式的取值范围问题
- 创龙DSP6748开发板驱动LCD屏
- Ubuntu13.04配置优化(四)转贴
- R语言--字符串操作
- 在无锡调试的工作,到了泰安出错了
- linq to sql 语法 学习笔记(1)
- python二维数据读取对齐_[Python ] Python 多维数组转换的维度对齐问题
- MSI设计一个1位二进制全减器
- 南阳理工计算机与信息工程学院,南阳理工学院计算机与信息工程学院
- 为什么计算机打不开优盘,U盘打不开,且8G的U盘只报64M,为什么?
- 姓名: 张轩瑞(小名happy) 性别: 男 年龄:3周岁 走失时间: 2018年7月1日下午4:30 家属电话:18735352768
- 线性代数中自由变量为什么取0和1?
- 史上首次!个人所得税退税来了!如何退?怎么操作?
热门文章
- java生成随机用户名(工具类)
- win10查看USB设备接入记录
- “真正的”Apk增量更新方案ApkDiffPatch
- HFSS初探日志(四):毫米波相控阵喇叭馈源天线设计
- 轨迹发生器 matlab,GPS和INS组合导航程序,其中包括轨迹发生器、KALMAN滤波、模型建立、伪距伪距率组合方式进行仿真...
- 十二月英语总结--充满热情
- 基于python的接口录制平台的设计与开发
- slf4j绑定log4j使用
- 计算机辅助设计与制造的应用,计算机辅助设计与制造(UG)
- 误GHOST、误一键恢复灾难应急方案