写在前面的话:
使用Git工具有好几年了,一直使用的图形工具,总觉得工作很忙,就没有去了解Git命令,导致使用起来颇有不便。近来越来越觉得因为忙,导致自己忘记了成长,遂决定拾起份内之事,以下为自己学习Git工具的心得,这里需要指明的是,学习Git工具最重要的是:1、执行每个命令要有工作区、暂存区、本地仓库、远程仓库的概念,有了这一点就可以心中有数了。2、出现问题时,不要放弃,继续尝试直到解决问题为止。
Git是一个开源的分布式版本控制系统,Git的内容存储使用的是SHA-1哈希算法。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
https://git-scm.com/book/zh/v2
这里介绍一个有趣的学习git的网站:https://learngitbranching.js.org/?locale=zh_CN,可以通过玩游戏的方式学习Git
!!!当对工作区修改的文件执行git add命令时,暂存区的目录树更新。
!!!当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
!!!当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。
!!!当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
!!!当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
workspace:工作区
staging area:暂存区/缓存区
local repository: 本地仓库
remote repository: 远程仓库
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
当你以此方式在上次提交更新之后创建了新分支,如果后来又有更新提交, 然后又切换到了 testing 分支,Git 将还原你的工作目录到你创建分支时候的样子。
6.1 配置默认编辑器
git config --global core.editor notepad++
git config --list (查看所有配置项)
git config --list --show-origin(查看配置的路径)
git help config(查看git config命令的帮助文档)
1、下载代码
不指定分支:git clone <remote_repo>
指定分支:git clone -b <branch> <remote_repo>
2、创建一个分支,并关联到远程分支
git checkout -b master origin/master
3、切换分支,更新代码
git checkout 选择远程(remote)需要切换的分支,拉下来时选择全部覆盖(全选)
git pull 将当前分支代码更新到最新
git pull = git fetch + git merge
4、查看状态
git status
5、提交到暂存区, 或者从暂存区回滚文件
git add src/com res/ 此处目录或文件皆可
git add -A (将new files、modified files、deleted files都放到暂存区)
git add . (Git 1.x版本不会将deleted files 文件放在暂存区)
git add -u (new files文件不会放到暂存区)
git reset 文件 将文件从stage到unstage
git diff 工作区和暂存区比较
git diff --cached 暂存区和HEAD比较
git diff HEAD 工作区和HEAD比较
6、提交到本地仓库
git commit -s -m "描述语言"
7、推送到远程仓库
git push origin master(简化命令)
git push origin refs/heads/master:refs/heads/master(完整命令)
Gerrit提交:
git push -f origin HEAD:refs/for/rom/stable/cloudsync_contact
git push -f origin master:refs/for/master (refs/for/空间)
ALM提交:git push -f origin dev master
git push origin beta-R:feature_beta-R --force
git push -f origin beta-R:feature_beta-R_1125
8、重置引用
git reset [--soft|--mixed|--hard] [<commit>]
git reset --hard (用本地仓库commit覆盖本地仓库、暂存区、工作区)
git reset (用本地仓库commit覆盖本地仓库、暂存区,工作区不覆盖)
git reset --soft(用本地仓库commit覆盖本地仓库,暂存区、工作区不覆盖)
回退到某笔代码(某个hash值)
回退不清掉代码:git reset --soft hash值
回退清掉代码:git reset --hard hash值
9、补充提交
git commit --amend
10、Git 查看历史记录
gitk
git log --author=Linus --oneline -5
git log --graph
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
git log --oneline decorate
11、分支合并
git merge 分支名 (将分支名合并到当前分支)
12、删除标签
git log --decorate
git tag -d beta-R
13、rebase前三项(变基)
git rebase -i head~3
git rebase [--onto <newbase>][<upstream>][<branch>]
git rebase -i topicA~5 如果需要删除哪项,就将pick 中对应的哪项删除
14、其他分支cherry-pick某笔到当前分支
git cherry-pick hash值
15、出现冲突、修改冲突文件
vim 文件,然后解决冲突,执行git add
git cherry-pick --continue
git 解决冲突的最佳方式,回退到某一笔的方式
16、比较差异
git diff的比较是从右向左。
git diff 比较暂存区与工作区文件的区别。
git diff --cached 比较仓库与暂存区文件的区别。
git log origin/rom/feature/v8.21..origin/rom/feature/v8.22 --pretty=tformat:--numstat > code.txt 比较分支之间代码修改差异
git log origin/rom/feature/v8.22..origin/rom/feature/v8.23 --pretty=tformat: --numstat > code.txt
17、查看设置的所有跟踪分支
git branch -vv
写在此小节最后的话
文件的流转方向是由工作区创建,add进入暂存区,commit进入仓库,执行命令的时候弄清楚文件的走向即可。
【解决方法】
1、git tag查看是不是多了一个beta-R的tag
2、git tag -d beta-R 删除多的tag
$ git cherry-pick ec688198cf46bbbc910273a3e8fcd828e35ccc9d
fatal: bad object ec688198cf46bbbc910273a3e8fcd828e35ccc9d
【解决方法】
原因:git cherry-pick是本地特性,本地要有这个commit id才可以被git cherry-pick,如果没有,就会报上述错误。
1、git fetch
2、git cherry-pick ec688198cf46bbbc910273a3e8fcd828e35ccc9d
【原因】cherry-pick 出现了冲突,需要解决冲突
【解决方法】AndroidStudio: VCS——Git——Resolve Conflicts,解决完冲突选择apply即可
【原因】本地仓库有一笔修改未同步
【解决方法】
1、git commit 提交到本地仓库
参考以下网站:https://android.googlesource.com/platform/packages/apps/Contacts/
【操作及错误提示】
$ git clone https://android.googlesource.com/platform/packages/apps/Contacts
Cloning into 'Contacts'...
fatal: unable to access 'https://android.googlesource.com/platform/packages/apps/Contacts/': SSL certificate problem: unable to get local issuer certificate
【分析】
系统判断这个行为会造成不良影响,所以进行阻止,只要设置跳过SSL证书验证就可以了
【解决方法】
git config --global http.sslVerify false
【验证】
$ git clone https://android.googlesource.com/platform/packages/apps/Contacts
Cloning into 'Contacts'...
remote: Sending approximately 37.12 MiB ...
remote: Counting objects: 985, done
remote: Total 168498 (delta 89372), reused 168498 (delta 89372)
Receiving objects: 100% (168498/168498), 37.12 MiB | 5.87 MiB/s, done.
Resolving deltas: 100% (89372/89372), done.
【操作及错误提示】
$git rebase --continue
***** Bad Address Cannot read HEAD
【解决方法】更新git windows版本,之前版本是2.17.0更新到2.30.0之后就可以了。
【解决方法】git不想每次输入用户名和密码
git config --global credential.helper store
执行一次git pull输入username和password后,下次就不用了
【解决】此时需要通过git fetch来进行更新
【解决】
1、先使用git reset 从暂存区回退到工作区
2、然后使用git clean -df fileName 删除文件
补充说明:git reset 删除的是已跟踪的文件;git clean删除的是未跟踪的文件
【问题】更新火眼插件后,下载代码异常
$ git clone http://gitlab.os.adc.com///.git
Cloning into ''...
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://gitlab.os.adc.com///***.git'
【解决】
1、C:\Program Files\CodeReview\codereview\config\httpKey 检查上述目录下的密码是否正确,这里遇到过更新火眼插件后,上述目录下的httpKey中特殊字符@变成了%,导致密码不正确,如果密码不正确,记得取gitlab上更改http克隆密码。
2、检查“控制面板---所有控制面板项----凭据管理器” 中“Windows凭据---普通凭据”下密码是否正确,将密码更改为gitlab上更改后的密码。
3、gitlab上更改密码后,就可以不用再动了。
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec