关于存储:云效安全那些事儿访问控制与数据安全

简介:云效 Codeup 提供了代码 GPG 签名,回绝未签名的提交;反对代码属主验证,束缚提交记录属主。 在品质管控上,云效 Codeup 精细化读写权限管控,反对代码提交卡点机制,保障提交品质。 接下来咱们一起看看云效 Codeup 的这些平安防护性能如何应用。曾经聊了三期和平安相干的话题,波及平安审计和洞察、源码平安检测、数据备份和复原,明天咱们来聊聊访问控制与数据可信。 互联网这个虚构的世界,有数的人们在其中交互沟通,发明着海量的数据和信息。在这个世界中,天然也存在居心叵测的歹意用户,心愿通过信息夺取利益。因而,服务提供者通常会采取一系列访问控制措施,对不受信赖的访问者执行隔离。 那么什么是访问控制? 访问控制,就是根据受权,对提出的资源拜访申请进行管制,避免未受权的拜访,防止未经受权的应用、泄露、销毁和篡改。 防控住拜访权限之后,企业还须要关怀的是数据自身的安全性,包含数据提交的可信性、提交的合规性和品质,防止危险入库,影响线上平安。 链接针对数据可信,云效 Codeup 提供了代码 GPG 签名,回绝未签名的提交;反对代码属主验证,束缚提交记录属主。 在品质管控上,云效 Codeup 精细化读写权限管控,反对代码提交卡点机制,保障提交品质。 接下来咱们一起看看云效 Codeup 的这些平安防护性能如何应用。 访问控制 —— IP白名单访问控制首先是要让危险进不来,Codeup 反对对仓库的拜访 IP 进行限度,包含页面拜访限度和部署密钥拜访限度。 页面拜访限度:包含 Codeup 的全副页面拜访、部署密钥拜访、代码克隆、下载、提交、合并等行为统一受限;部署密钥拜访:齐备思考了部署密钥因为人员治理不善被盗用的危险场景,禁止白名单之外的 IP 应用部署密钥拜访企业代码库,加固代码库平安; 访问控制 —— 代码不落盘古代企业经常须要雇佣外包团队反对开发工作,然而因为外包流动性强,规范性绝对较弱,企业通常心愿可能限度局部人员对代码的下载权限,然而不下载代码怎么进行开发工作呢?云效 Codeup 为这类场景提供了解决方案。 代码不落盘即数据不落本地磁盘,保障代码不被意外或歹意带走泄露,反对设置哪些角色容许下载代码到本地,针对无奈下载代码的开发人员容许其应用云端 WebIDE 进行开发工作。 数据可信 —— GPG 签名GPG 签名能够杜绝提交伪造事件。Git 尽管是明码级平安的,但并不是十拿九稳的。当用户明码泄露,或者有人想歹意伪造别人的提交,就有可能冒名信赖的人,向你的代码仓库提交恶意代码。你能够应用GPG 在本地签订你的提交记录(Commit)或者标签(Tag), Codeup 将对这些签名做验证,来确保提交记录或者标签来自受信赖的起源。  数据可信 —— 提交属主查看在开始应用 git 进行版本治理之前,咱们都晓得须要先进行用户配置。 git config --global user.name "你的名字"git config --global user.email "你的邮箱" ...

March 25, 2021 · 1 min · jiezi

关于git:聊聊git-push到远程服务器出现RPC-failed问题

前言最近小组成员跟我说,他git提交不了代码。我问了下起因,他说他代码一提交就会报 error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413fatal: the remote end hung up unexpectedlyfatal: the remote end hung up unexpectedlyEverything up-to-date而后他跟我说他百度几种办法,都不论用。下文列下他百度进去的计划 计划一:批改本地git postbuffer大小git config --global http.postbuffer 524288000计划二:批改我的项目.git/config文件,增加如下内容[http] postBuffer = 524288000计划三:用治理账号在gitlab中的Account and limit加大Maximum attachment size (MB)和Maximum push size (MB)能够参考该链接https://blog.csdn.net/techfield/article/details/70198077因为小伙伴不是管理员,前面我尝试了该计划,不论用 问题复盘1、先看git push抛出来的问题error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413对咱们无效的信息,预计就是413这个状态码,咱们能够先从这个状态码动手 这个状态码的含意是 413 Request Entity Too Large服务器回绝解决以后申请,因为该申请提交的实体数据大小超过了服务器违心或者可能解决的范畴。此种状况下,服务器能够敞开连贯免得客户端持续发送此申请。注: 查看http状态码信息,能够通过https://www.php.cn/web/web-http.html进行查阅 由状态码的含意,咱们能够得出上传的代码可能过大。于是我让小伙伴看下,他上传的代码量有多少,好家伙,一共有4,50M的大小 2、解决方案计划一:代码进行分批上传,不要一次性上传小伙伴按这个计划果然解决了问题,然而他说这样好麻烦,总不能当前每次都要分批上传,这样提交代码的效率很低 计划二:增大http形式上传的大小这个计划就是最开始的设置postbuffer,但问题就是不论用。前面就狐疑说是不是因为配置域名的起因,于是我就采纳内网ip的形式间接去push代码,后果居然能够了。 接着去ping下gitlab的域名,发现那个ip不是gitlab的内网ip,当然ping进去的也可能是外网ip,于是我就把ping进去的ip通过百度一下,显示该ip是本地局域网。 ...

March 23, 2021 · 1 min · jiezi

关于git:git-blame使用示例查看openjdk源码中Socket代码谁写的

前言我是在去年,也就是2020年的时候,进入一家新的公司才学习的 Git。 有时候,咱们想要弄清楚某一行代码到底是谁退出进来的,此时咱们须要从 git log 中翻找,很是麻烦。 最近才偶尔发现 git blame 这个命令,正是解决“找出真凶”这个问题的疾速办法。 找出“真凶”首先,你要须要有一个我的项目,我最近须要查阅 openjdk 的源码剖析一个问题,所以罗唆就用它吧。 1.从 Gitee 克隆近程库:git clone https://gitee.com/mirrors/openjdk.gitopenjdk 当初曾经在 Github 下面开源了, 下载比以前用 Mercurial 从 openjdk.java.net 下载不便多了国内 Gitee 下面每天从 GitHub 上同步的 openjdk 镜像,对于国内开发者而言,那就更爽了。 2.进入工作目录cd openjdk3.查看标签git tag按方向键 ↑ 或者 ↓ 能够滚动查看, 输出 q 能够退出以后的查看。 加上 -l 或者 --list 命令应用通配符来过滤 tag。例如过滤 jdk8 的标签 git tag -l "jdk8*"4.切出标签git checkout jdk8-b120如果须要批改,比方加上集体的正文,须要依据标签 jdk8-b120 新切一个分支 feature-jdk8-b120 git checkout -b feature-jdk8-b120 jdk8-b1205.查看文件目录ls -al列出文件目录:如果咱们要找 java.net.Socket, 那么就应该去 /jdk/src 目录上来寻找。 ...

March 23, 2021 · 1 min · jiezi

关于devops:Git教程-Git-命令与操作

【注】本文译自:https://www.edureka.co/blog/g... 学习 Git 与应用该工具一样容易。这个 Git 教程的目标就是要把这个难题从您的脑海中剔除。我置信,通过这个 Git 教程,您将理解到所有的概念。 我心愿您曾经理解了 Git 的基本概念和术语,并在我的 Git 教程系列的第一个博客中理解了无关版本控制的所有常识。 在本教程中,您将学习: Git 命令Git 操作还有一些应用 Git 无效地治理我的项目的提醒和技巧。 在开始应用命令和操作之前,让咱们首先了解 Git 的次要目标。 Git 的目标是治理一个我的项目或一组随着工夫变动的文件。Git 将这些信息存储在称为 Git 存储库的数据结构中。存储库是 Git 的外围。 如何查看我的 GIT 存储库? 明确地说,Git 存储库是寄存所有我的项目文件和相干元数据的目录。 Git 通过从索引中创立树形图来记录我的项目的以后状态。它通常采纳有向无环图(DAG)的模式存在。 当初您曾经了解解了 Git 的指标,让咱们持续探讨操作和命令。 如何学习 Git 命令? Git工作原理的根本概述: 应用 git 托管工具(如 Bitbucket)创立“存储库”(我的项目)将存储库复制(或克隆)到本地计算机将文件增加到本地存储库并“提交”(保留)更改将更改“推送”到主分支应用 git 托管工具对文件进行更改并提交将更改“拉”到本地计算机创立一个“分支”(版本),进行更改,而后提交更改关上一个“拉取申请”。将您的分支“合并”到主分支Git Shell 和 Git Bash 有什么区别? Git Bash 和 Git Shell 是两个不同的命令行程序,可让您与底层的 Gi t程序进行交互。Bash 是基于 Linux 的命令行,而 Shell 是本机 Windows 命令行。 ...

March 22, 2021 · 3 min · jiezi

关于git:git-使用-push-提交到远程仓库出现-The-requested-URL-returned-error-403-错误

原文地址:https://blog.csdn.net/u013455...

March 22, 2021 · 1 min · jiezi

关于git:Git-常用命令

最常见# 查看 git 客户端版本git --version# 失去一个残缺的 git 子命令列表git help -all# 创立一个新的 Git 版本库git init# 减少该目录下的某个文件到版本库中git add file# 把当前目录及子目录中的文件都增加到版本库里git add.# 从版本库中删除文件: foo.txt; 会将文件从索引区和工作目录中都删除。git rm foo.txtgit commit -m "delete foo.txt"# 版本库文件重命名; 把 foo.txt 改为 foo_new.txtgit mv foo.txt foo_new.txtgit commit -m "rename foo.txt to foo_new.txt"# 显示 add 后然而没有 commit 的变更git status# 查看版本库里一系列独自提交的历史,如果持续看更早的就按 "E"git log# 按住 Esc 间断按 2 次 大写的 "Z",就能退出以后命令# 创立版本库正本;git clone# 从本地的仓库 HelloWorld 创立正本 MyHelloWorldgit clone HelloWorld MyHelloWorld# 从 Git 服务器上创立正本,如从 GitHub 的一个仓库创立正本:git clone https://github.com/kamaihamaiha/Notes MyNotes# 创立一个 Tag(带附注的),commit_ID 在指定的提交 ID 下创立。git tag -m "Tag version 1.0" V1.0 commit_ID配置相干命令# 配置提交作者用户名; 也能够加上 --global 选项,用来作用域全局设置。git config user.name "张三"# 配置提交作者邮箱git config user.email "zhangsan@gmail.com"# 查看整组配置文件里独特查找的所有变量的设置值git config -l# 只看版本库特定的设置cat .git/config# 移除用户名设置和邮箱设置,也能够加上 --global 选项,用来作用域全局设置。git config --unset user.namegit config --unset user.email分支# 查看分支git branch 查看本地分支git branch -r 查看近程分支git branch -a 查看所有分支git branch -v 查看本地分支,含 HEAD 值,提交信息。# 创立分支:hot_fixgit branch hot_fix# 切换分支,切换到 hot_fix 分支git checkout hot_fix# 合并分支①:切换到合并指标的分支-mastergit checkout master②:执行 合并操作。把 hot_fix 合并到 mastergit merge hot_fix# 删除分支git branch -d 分支名# 重命名分支第一步:重命名本地分支:1. 切换到本分支下2. git branch -m new-name第二步:删除近程旧分支名,而后把本地的新的分支名字推送下来:1. git push origin :old-name new-name第三步:给本地的新名字的分支从新设置上传流。git push origin -u new-name# 创立空白新分支1. git branch <new_branch>2. git checkout <new_branch>3. git rm --cached -r .4. git clean -f -d5. git commit --allow-empty -m "..."6. git push origin <new_branch># 在本地创立分支【关联近程分支】并切换到该分支git checkout -b dev(本地分支名) origin/dev(近程分支名称)# 近程仓库建了一个新分支,本地想要查出来git remote update origin -plog 命令1. git log查看提交日志2. git log --pretty=oneline查看提交日志,每次递交都依照一行展现3. git log --oneline查看提交日志,每次递交都依照一行展现,并且事实以后版本及以前的版本提交日志。其中 HEAD 的哈希值只显示前几位。4. git reflog查看提交日志,显示提交的索引值。5. git rev-list HEAD --count查看以后分支提交次数6. git log --follow specify_file查看指定文件(specify_file)相关联的整个历史记录diff 命令1. git diff工作区和暂存区到差异, 前面能够加上文件2. git diff --cached历史库和暂存区到差异查看提交# 查看特定提交更加具体的信息,commit_ID 是具体的提交 IDgit show commit_ID# 查看提交信息单行摘要,--more=10 是最近的 10 个提交,不加上就显示最新的提交git show-branch --more=10# 查看提交差别,commitA_ID 和 commitB_ID 是两次提交的 ID。git diff commitA_ID commitB_IDreset 命令用来进行后退和后退。reset 三个参数:--hard, --mixed, --soft ...

March 21, 2021 · 2 min · jiezi

关于git:Git-小白上手

假如第一次应用 Git,啥都不晓得,那么最疾速的上手步骤如下: 在某一个 Git 服务器下面注册了用户电脑装置了 Git 客户端程序配置本人的身份查看是否配置胜利创立代码仓库提交本地代码近程关联仓库将本地仓库推送到近程仓库1. 在某一个 Git 服务器下面注册了用户在 GitHub、码云或者公司的 GitLab 服务器等,注册了用户 2. 电脑装置了 Git 客户端程序安装包下载地址 3. 配置本人的身份(这里是全局配置)关上终端 # 配置用户名git config --global user.name "your name" # 配置邮箱git config --global user.email "xxx.@gmail.com"4. 查看是否配置胜利关上终端 # 查看用户名 git config --global user.name # 查看邮箱 git config --global user.email5. 创立代码仓库仓库(Repository)是用于保留版本管理所需信息的中央,所有本地提交的代码都会被提交到代码仓库中,如果有须要还能够再推送到近程仓库中。 操作: 到任意一个我的项目的目录下,关上 git bash ,输出:git init此时,该目录下多了一个文件夹:.git,该文件夹就是记录本所有 git 操作信息,要删除本地仓库,只有删除这个暗藏的文件夹即可。 6. 提交本地代码# 先增加文件git add file.name# 或者增加所有的文件git add .# 提交git commit -m "commit info"7. 关联近程仓库git remote add origin "remote respository address"8. 将本地仓库推送到近程仓库git push -u origin master

March 21, 2021 · 1 min · jiezi

关于kubernetes:一通百通一文实现灵活的K8S基础架构

作者简介VIGNESH T.V.,Timecampus CEO、CTO及创始人。 Kubernetes是以后最为风行的开源容器编排平台,成为泛滥企业构建基础架构的首选。在本文中,咱们将探讨针对你的用例构建基础设施的最佳形式,以及你可能要依据各种限度条件做出的各种决定。 架构设计你的架构应该在很大水平上围绕你的用例来设计,因而在设计过程中你须要十分认真以确保该基础架构可能撑持你的用例,在必要的时候也能够寻求内部业余团队的帮忙。在架构设计的开始保障方向正确非常重要,然而这并不意味着不会产生谬误,而且随着每天都有新的技术或钻研横空出世,你能够看到改革曾经成为常态,并且你的架构设计思维有可能过期。 这就是为什么我强烈建议你采纳Architect for Chang的准则,让你的架构成为一个模块化的架构以便在将来有须要的时候你能够灵便地在外部进行扭转。 让咱们看看在思考client-server模型的状况下如何实现零碎架构的指标。 切入点:DNS在任何典型的基础架构中(无论是否是云原生架构),一个音讯申请必须先由DNS服务器解析,并返回服务器的IP地址。设置你的DNS应该基于你所须要的可用性。如果你须要更高的可用性,你可能想要将你的服务器散布到多个区域或者云提供程序上,具体的实现要基于你想要达到的可用性等级。 内容散发网络(CDN) 在某些状况下,你可能须要尽可能地以最小的提早为用户提供服务,同时缩小服务器的负载。这就是内容散发网络(CDN)施展重要作用的中央。Client是否常常从服务器上申请一组动态资产?你是否心愿进步向用户交付内容的速度,同时缩小服务器的负载?在这种状况下,采纳边缘的CDN为一组动态资产提供服务,实际上可能有助于升高用户的提早和服务器的负载。 你所有的内容都是动静的吗?你是否能够在肯定水平上为用户提供提早的内容,以缩小复杂性?或者你的应用程序接管很低的流量吗?在这种状况下,应用CDN可能没有太大的意义,你能够将所有的流量间接发送到全局负载均衡器。但要留神的是,领有CDN也的确有调配流量的劣势,这在你的服务器受到DDOS攻打时是很有帮忙的。 CDN提供程序包含Cloudfare CDN、Fastly、Akamai CDN、Stackpath,此外你的云提供商也有可能会提供CDN服务,比方谷歌云平台的Cloud CDN、AWS的CloudFront、微软Azure的Azure CDN等。 Load Balancer如果有一个申请不能被你的CDN服务,这个申请下一步会传送到你的负载均衡器上。而这些能够是区域性的IP,也能够是全局性的Anycast IP。在某些状况下,你也能够应用负载均衡器来治理外部流量。 除了路由和代理流量到适合的后端服务,负载平衡还可能承当SSL终止、与CDN集成,甚至治理网络流量的某些方面等职责。 尽管存在硬件负载均衡器,但软件负载均衡器提供了弱小的灵活性、缩小了老本开销以及弹性伸缩性。 与CDN相似,你的云提供程序应该也可能为你提供一个负载均衡器(如GCP的GLB、AWS的ELB、Azure的ALB等),但更乏味的是你能够间接从Kubernetes中调配这些负载均衡器。例如,在GKE中创立一个Ingress也会在后端为你创立一个GLB来接管流量,其余性能如CDN、SSL重定向等也能够通过配置你的ingress来设置,拜访以下链接查看详情: https://cloud.google.com/kube... 尽管一开始总是从小开始,然而负载均衡器能够让你逐渐扩大至具备以下规模的架构: 网络及平安架构下一件须要关注的事件是网络。如果你想要进步安全性,你可能须要一个公有集群。在那里,你能够调节入站和出站流量,在NATs前面屏蔽IP地址,在多个VPC上隔离多个子网的网络等。 如何设置网络通常取决于你所谋求的灵活性水平以及如何实现它。设置正确的网络就是要尽可能地缩小攻击面,同时还能放弃失常的运行。 通过设置正确的网络来爱护你的基础设施通常还波及到应用正确规定和限度条件设置的防火墙,以便限度来自各后端服务的流量的进出,包含入站和出站。 在很多状况下,能够通过设置堡垒主机并通过隧道进行集群中的所有操作来爱护这些公有集群,因为你须要向公共网络公开的就是堡垒(又称Jump host),通常是在与集群雷同的网络中设置。 一些云提供商在实现零信赖平安的办法上也提供了定制化的解决方案。例如,GCP为其用户提供身份意识代理(IAP),可用于代替典型的VPN实现。 所有都解决好之后,下一步是依据你的用例在集群自身内设置网络。这牵涉到以下工作: 设置集群内的服务发现(可由CoreDNS解决) 如果需要的话,设置一个服务网格(如LinkerD、Istio、Consul等) 设置Ingress controller和API网关(例如:Nginx、Ambassador、Kong、Gloo等) 设置应用CNI的网络插件,不便集群内的联网 设置网络策略,调节服务间的通信,并依据须要应用各种服务类型裸露服务 应用GRPC、Thrift或HTTP等协定和工具,设置不同服务之间的服务间通信 设置A/B测试,如果你应用像Istio或Linkerd这样的服务网格,实现起来能够更容易 如果你想看一些示例实现,我倡议你看看这个repo(https://github.com/terraform-...),它能够帮忙用户在GCP中设置所有这些不同的网络模型,包含通过VPN的hub和spoke、用于外部的DNS和Google Private Access、反对GKE的共享VPC等等,所有这些都应用Terraform。而云计算中网络的乏味之处在于,它不局限于你所在地区的云服务商,而是能够依据须要逾越多个地区的多个服务商。这就是Kubefed或Crossplane这样的我的项目能够提供帮忙的中央。 如果你想摸索更多对于设置VPC、子网和整体网络时的一些最佳实际,我倡议你拜访下方网页,同样的概念也实用于你退出的任何云提供商: https://cloud.google.com/solu... Kubernetes如果你应用的是GKE、EKS、AKS这样的托管集群,Kubernetes是主动治理的,从而升高了用户操作的复杂程度。 如果你本人治理Kubernetes,你须要解决很多事件,比方,备份和加密etcd存储,在集群中的各个节点之间建设网络,定期为你的节点打上最新版本的操作系统补丁,治理集群降级以与上游的Kubernetes版本保持一致。基于此,只有当你领有一个专门的团队来保护这些事件的时候,才倡议这样做。 Site Reliability Engineering (SRE)当你保护一个简单的基础设施时,领有适合的可察看性堆栈是十分重要的,这样你就能够在用户留神到谬误之前就检测到谬误以及预测可能的变动,进而辨认异样,并有余力深刻钻研问题到底在哪里。 当初,这就须要你有代理,将指标裸露为特定的工具或利用来收集剖析(能够遵循pull或push机制)。而如果你应用的是带有sidecars的服务网格,它们往往会自带指标,而不须要自定义配置。 在任意场景下,都能够应用Prometheus这样的工具作为时序数据库,为你收集所有的指标,以及借助相似于OpenTelemetry的工具,应用内置的exporter从应用程序和各种工具中公开指标。借助Alertmanager之类的工具能够向多个渠道发送告诉和告警, Grafana将提供可视化仪表板,给用户提供整个基础设施的残缺可见性。 综上,这就是Prometheus的可察看性的解决方案:起源:https://prometheus.io/docs/in... 领有这样简单的零碎,还须要应用日志聚合零碎,这样所有的日志就能够流到一个中央,便于调试。大部分企业偏向于应用ELK或EFK堆栈,Logstash或FluentD依据你的限度条件为你做日志聚合和过滤。但日志畛域也有新的玩家,比方Loki和Promtail。 下图阐明了相似FluentD的日志聚合零碎如何简化你的架构:起源:https://www.fluentd.org/archi... 然而,如果要追踪逾越多个微服务和工具的申请呢?这是分布式跟踪开始发挥作用的中央,特地是思考到微服务的复杂性。像Zipkin和Jaeger这样的工具始终是这个畛域的先驱,最近进入这个畛域的新兴工具是Tempo。 尽管日志聚合会给出各种起源的信息,但它不肯定能给出申请的上下文,这才是做跟踪真正有帮忙的中央。然而请记住,在你的堆栈中增加跟踪会给你的申请减少很大的开销,因为上下文必须和申请一起在服务之间流传。 下图是一个典型的分布式跟踪架构:起源:https://www.jaegertracing.io/... 然而,网站的可靠性并不仅仅止于监控、可视化和告警。你必须筹备好解决零碎任何局部的任何故障,并定期进行备份和故障切换,这样至多能够将数据损失的水平降到最低。你能够借助相似Velero的工具实现。 Velero通过利用你应用的雷同Kubernetes架构,帮忙你保护集群中各种组件的定期备份,包含你的工作负载、存储等。Velero的架构如下:正如你所察看到的,有一个备份controller,它定期对对象进行备份,依据你设置的打算将它们推送到特定的目的地,其频率是基于你设置的打算。这能够用于故障转移和迁徙,因为简直所有的对象都有备份。 存 储有许多不同的存储程序和文件系统可用,这在云提供程序之间可能存在很大的不同。这就须要像容器存储接口(CSI)这样的规范,该规范能够帮忙大部分volume的外置插件,从而使其易于保护和倒退而不会成为外围瓶颈。 下图是CSI架构,通常能够反对各种volume插件:起源:https://kubernetes.io/blog/20... 分布式存储带来的集群、扩大等各种问题怎么办?这时Ceph这样的文件系统曾经证实了本人的能力,不过思考到Ceph并不是以Kubernetes为核心构建的,部署和治理起来存在一些难度,此时能够思考Rook这样的我的项目。 尽管Rook没有和Ceph耦合,也反对其余文件系统,比方EdgeFS、NFS等,但Rook与Ceph CSI就像是天作之合。Rook与Ceph的架构如下:起源:https://rook.io/docs/rook/v1.... ...

March 18, 2021 · 1 min · jiezi

关于devops:什么是-Git-探索分布式版本控制工具

【注】本文译自:https://www.edureka.co/blog/w... Git是一个收费的开源分布式版本控制系统工具,旨在疾速高效地解决从小型到大型的所有我的项目。它是由 Linus Torvalds 在2005年创立的,用于开发 Linux 内核。Git具备大多数团队和开发人员所需的性能、性能、安全性和灵活性。它还用作重要的分布式版本控制 DevOps 工具。 在本文中,你将学到: 为什么会有 Git?Git 是什么?Git 的个性Git 如何在 DevOps 中施展至关重要的作用?微软和其余公司如何应用GitGit 的来由 咱们都晓得“须要是所有创造之母”。同样,Git 的创造也是为了满足开发人员在 Git 呈现之前所面临的某些需要。 Git 的目标是什么? Git 次要用于治理您的我的项目,包含一组可能会更改的代码/文本文件。 然而在进一步探讨之前,让咱们回顾一下所有无关版本控制系统(VCS)的常识,以及 Git 是如何诞生的。 版本控制是对文档、计算机程序、大型网站和其余信息收集的变更进行治理。 VCS 有两种类型:集中版本控制系统(CVCS)分布式版本控制系统(DVCS)集中式 VCS 集中式版本控制系统(CVCS)应用地方服务器来存储所有文件并反对团队合作。 它在单个存储库上工作,用户能够间接拜访该存储库。 请参考下图,以更好地理解CVCS: 上图中的存储库批示一个地方服务器,能够是本地的,也能够是近程的,它间接连贯到每个程序员的工作站。 每个程序员都能够应用存储库中存在的数据来提取或更新其工作站,或者能够对数据进行更改或提交到存储库中。每个操作都间接在存储库上执行。 只管保护单个存储库仿佛很不便,但它也有一些次要毛病。其中一些是: 它在本地不可用; 这意味着您始终须要连贯到网络能力执行任何操作。因为所有内容都是集中式的,在任何状况下地方服务器都解体或损坏都将导致失落整个我的项目的数据。 分布式 VCS 就是这些问题的救星。 分布式 VCS 这些零碎不用依赖地方服务器来存储我的项目文件的所有版本。 在分布式VCS中,每个贡献者都有主存储库的本地正本或“克隆”,即每个人都保护本人的本地存储库,其中蕴含主存储库中存在的所有文件和元数据。 参考下图,您会更好了解: 如上图所示,每个程序员都本人保护一个本地存储库,它实际上是其硬盘驱动器上的地方存储库的正本或克隆。他们能够提交和更新其本地存储库,而不会受到任何烦扰。 他们能够通过“拉”操作应用来自地方服务器的新数据更新本地存储库,并通过本地存储库中的“推”操作影响对主存储库的更改。 将整个存储库克隆到工作站以获取本地存储库的操作为您带来以下劣势: 所有操作(推和拉除外)都十分快,因为该工具仅须要拜访硬盘驱动器,而无需拜访近程服务器。因而,您并不总是须要互联网连贯。能够在本地实现新变更集的提交,而无需解决主存储库上的数据。一旦筹备好一组变更集,就能够一次推送所有变更集。因为每个贡献者都有我的项目存储库的残缺正本,因而,如果他们心愿在影响主存储库中的更改之前取得一些反馈,则能够彼此共享更改。如果地方服务器在任何工夫解体,失落的数据能够很容易地从贡献者的任何本地存储库中复原。 理解了分布式 VCS 之后,是时候深刻理解一下什么是 Git 了。 什么是 Git? Git 是一种分布式版本控制工具,它通过为开发高质量软件提供数据保障来反对分布式非线性工作流。 Git为用户提供了后面提到的所有分布式 VCS 工具。Git仓库很容易找到和拜访。当您理解以下性能时,您将晓得 Git 与零碎的灵活性和兼容性: Git 的个性收费和开源: Git是依据GPL(通用公共许可证)的开源许可证公布的。您无需购买Git。它是完全免费的。并且因为它是开源的,因而您能够依据须要批改源代码。速度: 因为您不用连贯到任何网络即可执行所有操作,因而它能够十分疾速地实现所有工作。Mozilla 所做的性能测试表明,它比其余版本控制系统快一个数量级。从本地存储的存储库中获取版本历史记录的速度可能比从近程服务器中获取版本历史记录的速度快一百倍。Git 的外围局部是用C编写的,这防止了与其余高级语言相干的运行时开销。可扩展性: Git 具备很好的可扩展性。因而,如果未来合作者的数量减少,Git 能够轻松应答这一变动。只管 Git 代表了一个残缺的存储库,然而存储在客户端上的数据非常少,因为 Git 通过无损压缩技术压缩了所有大数据。可靠性: 因为每个贡献者都有本人的本地存储库,在零碎解体时,能够从任何本地存储库中复原失落的数据。您将始终领有所有文件的备份。安全性: Git应用 SHA1(平安哈希函数)来命名和标识其存储库中的对象。在签出时,每个文件和提交都通过其校验和进行校验和并检索。Git 历史记录的存储形式使得特定版本的 ID(在 Git 术语中是提交)取决于提交之前的残缺开发历史记录。一旦公布,就无奈在不被留神的状况下更改旧版本。经济性: 对于 CVCS,地方服务器必须足够弱小以服务于整个团队的申请。对于较小的团队来说,这不是问题,然而随着团队规模的扩充,服务器的硬件限度可能会成为性能瓶颈。对于 DVCS,除非开发人员须要推送或提取更改,否则它们不会与服务器交互。所有沉重的工作都产生在客户端,因而服务器硬件实际上非常简单。反对非线性开发: Git 反对疾速分支和合并,并包含用于可视化和导航非线性开发历史的特定工具。Git中的一个外围假如是,变更的合并频率要比写入的频率高,因为变更会在各个审阅人员之间传递。Git 中的分支十分笨重。Git 中的分支只是对单个提交的援用。借助其父提交,能够结构残缺的分支构造。易于分支: 应用 Git 进行分支机构治理非常简单。创立、删除和合并分支仅需几秒钟。个性分支为代码库的每次更改提供了独立的环境。当开发人员想要开始做某件事时,无论大小,他们都会创立一个新的分支。 这样能够确保 master 分支始终蕴含生产品质代码。分布式开发: Git 为每个开发人员提供了整个开发历史的本地正本,并将更改从一个这样的存储库复制到另一个存储库。这些更改将作为其余开发分支导入,并且能够以与本地开发分支雷同的形式合并。与现有零碎或协定的兼容性: 能够通过 http,ftp 或 Git 协定通过一般套接字或 ssh 公布存储库。Git 还具备并发版本零碎(CVS)服务器仿真,它能够应用现有的 CVS 客户端和IDE 插件来拜访 Git 存储库。Apache SubVersion(SVN)和 SVK 存储库能够间接与 Git-SVN 一起应用。 ...

March 17, 2021 · 1 min · jiezi

关于git:关于git命令

集中式的版本管理工具有CVS、RTC等,有对立的地方服务器。 一、git是分布式版本控制系统,实质上是一套内容寻址文件系统,咱们接触的git是封装的界面;二、企业中罕用分支管理策略主分支master:主动建设开发分支develop:日常开发用的性能分支feature:为开发某种特定性能,不须要合并到主分支bug分支fixbug:版本公布之后对bug的修复 三、git分支治理步骤实际1、创立分支:git branch dev Git branch -b dev 2、切换分支:git checkout dev3、分支文件提交:git add. git commit -m"" git push4、合并分支(疾速合并):git checkout master. 5、删除分支:git checkout master git branch -d dev6、命令总结:查看。 Git branch -a dev 四、Git 文件抓取提交:cd 文件目录下 git pull cd existing_folder git initgit remote add orgin ssh://…git add .git commit -m "" <=>git czgit pullgit pushgit stash 暂存以后更改库的迁徙和备份:git remote add test ssh://…本地分支push 到近程仓库:git push -f test master 补充如果有用gerrit提交代码,呈现“missing change-id”的报错时,能够执行命令如下:git reset --soft {{commit-id}}git push origin HEAD:refs/for/{{branch}} ...

March 16, 2021 · 1 min · jiezi

关于git:使用git在gitlab拉取代码的方法

须要在服务器上部署新写的我的项目,须要从新填写一次gitlab的配置信息。因为距离太久了,对于配置曾经不太记得了,所以在这里记录下,不便当前用到时,能够迅速找回。 可参考Github 的官网文档 1. 生成SSH key在服务器的终端输出命令(替换下方命令的邮箱地址,填写github/gitlab 注册邮箱地址): ssh-keygen -t rsa -C "your_email@example.com"这将创立以所提供的电子邮件地址为标签的新 SSH 密钥。 Generating public/private rsa key pair.提醒您“Enter a file in which to save the key(输出要保留密钥的文件)”时,按 Enter 键。这将承受默认文件地位。如果须要自定义地位或者自定义名称,请输出所在的门路残缺名称,如:/Users/you/.ssh/id_rsa_gitlab 等 Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]在提醒时输出平安明码。 更多信息请参阅“应用 SSH 密钥明码”。 Enter passphrase (empty for no passphrase): [Type a passphrase]Enter same passphrase again: [Type passphrase again]2. 将生成SSH key 加载到github/gitlab将上述步骤生成的ssh key复制进去 # 查看cat /Users/you/.ssh/id_rsa_gitlab.pub# 复制选中,按下ctrl + C即可接下来,关上并登录你的github/gitlab,进入到Settings -> SSH Keys,将复制到的key填写到上述输入框,可更改 key的 Title ,便于辨认这个key用在哪个中央。实现操作后,即为胜利增加Key。 ...

March 16, 2021 · 1 min · jiezi

关于git:Git学习

最近公司要应用git,太久没有就忘了! 就感觉本人有点蠢,学了又忘,又去找材料,就很浪费时间,所以,还是学下他人大神写下博客把 。 Gitgit 和 svn 的区别:git: 是分布式版本控制系统。git没有地方服务器,每个人电脑上都是一个残缺的版本库。 svn:是集中式版本控制系统,版本库集中放在服务器上。 git装置后的三个程序阐明Git Bash:Unix与Linux格调的命令行,举荐应用 Git CMD:Windows格调的命令行 Git GUI:图形界面的git Git命令1)、cd:扭转目录。 2)、cd..:回退到上个目录 3)、pwd:显示以后所在的目录门路 4)、ls(或ll):显示当前目录列表 5)、touch:新建一个文件 6)、rm:删除一个文件 7)、mkdir:新建一个目录 8)、rm -r:删除一个文件夹 9)、mv:第一栋文件 10)、reset:从新初始化终端/清屏 11)、clear:清屏 12)、exit:退出 13)、history:查看命令历史 Git配置1)、git config - l :查看git配置 2)、git config -- system --list : 查看本地配置 3)、git config --global --list : 用户本地配置 Git外围实践Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory),如果加上近程仓库的git仓库(Remote Directory)就能够分为四个工作区域。区域间的关系如图: Workspace:工作区,就是平时寄存我的项目代码的中央Index/Stage:暂存区,用于长期寄存改变文件的中央,保留行将提交到文件列表信息Repository:仓库去(或本地仓库),就是平安存放数据的位子,这外面有本人提交到所有本本的数据Remote:近程仓库,托管代码的服务器 文件4种状态Untracked:未跟踪,此文件在文件夹中,但并没有退出到git仓库,不参加版本控制,通过git add状态变为 StagedUnmodify:文件已进入仓库,及版本中的文件快照内容与文件夹中完全一致,这种类型的文件有两种取出,如果它被批改变为Modified,如果应用git rm移出版本库,则成为Untracked文件Modified:文件已批改,仅仅是批改,斌没有进行其余操作,这个文件也有两个去处,通过git add可进如暂存staged状态,应用git checkout则抛弃批改过,返回到unmodify状态,这个git checkout即从库中去除文件,笼罩以后批改Staged:暂存状态,执行git commit 则将批改同步到库中,这是库中的文件和本地文件又变为统一,文件为Unmodify状态执行 git reset HEAD filename勾销暂存,文件状态为Modified#查看指定文件状态 git status [文件名] #查看所有文件状态 git status ...

March 14, 2021 · 1 min · jiezi

关于git:前端自动化Gitlab

在继续集成的开发中,一套自动化工具的呈现是能够事倍功半装置Git sudo apt-get install git装置gitlab 1,装置依赖包,运行如下命令 sudo apt-get install curl openssh-server ca-certificates postfix2,运行命令后,会呈现一样邮件配置项,抉择Interent site这项,而后一路回车键 开源软件国内镜像源 https://zhuanlan.zhihu.com/p/...3,利用清华大学的镜像https://mirror.tuna.tsinghua....。 信赖GitLab的GPG公钥: curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null4,切换到root用户下关上上面文件 vim /etc/apt/sources.list.d/gitlab-ce.list关上后,增加上面的信息: deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main保留文件 5,装置gitlab-ce版本:这里留神,通过命令装置的版本,都是gitlab最新版本的。 sudo apt-get updatesudo apt-get install gitlab-ce  呈现上图内容,阐明装置正确实现。 6,执行如下命令,初始化gitlab sudo gitlab-ctl reconfigure gitlab的初始化实现。 7,开启sshd和postfix服务 service sshd startservice postfix start8,开启80端口,通过防火墙进行网络拜访 sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT9,查看gitlab是否正确装置且曾经在运行输出如下命令 sudo gitlab-ctl status 10,呈现如下内容,阐明gitlab运行失常: ...

March 12, 2021 · 1 min · jiezi

关于git:git-教程-git-revert-命令

简介在应用git治理代码过程中,很多人应该遇到过一些场景:我曾经提交了commit信息,然而我想反悔,不想提交了这个信息,或者公共分支上我提交了commit信息,他人也提交了commit,然而我的commit的代码有些问题,想撤回来不提交。 这种状况下有很多的形式来解决,无非是操作多少和危险的大小而已,比方: 公共分支上找到不同分支的父节点,reset当前才从新提交,然而当commit信息混合到一起后,你想找都commit信息都艰难。还有一种绝对省事的办法你在本人的分支上把不要的都干掉后从新提交,然而如果是上线时候,这样危险也很大。当然还有其余的一些形式办法还有一种绝对简略的形式,那就是 revert 形式(反做撤销)。也就是这篇文章的配角。 git revert根底用法根底语法git revert -n commit-id只会反做commit-id对应的内容,而后从新commit一个信息,不会影响其余的commit内容反做多个commit-idgit revert -n commit-idA..commit-idB反做commit-idA到commit-idB之间的所有commit留神:应用-n是应为revert后,须要从新提交一个commit信息,而后在推送。如果不应用-n,指令后会弹出编辑器用于编辑提交信息抵触的相干操作在git操作过程中,最不想看到的一种状况就是抵触,然而,抵触就是一个狗皮膏药,永远防止不了,revert也跑不了这个魔咒,那么咱们改怎么解决这个状况合并抵触后退出git revert --abort以后的操作会回到指令执行之前的样子,相当于啥也没有干,回到原始的状态合并后退出,然而保留变动git revert --quit该指令会保留指令执行后的车祸现场合并后解决抵触,持续操作如果遇到抵触能够批改抵触,而后从新提交相干信息git add .git commit -m "提交的信息" 总结Git reset和git revert的区别git reset 是回滚到对应的commit-id,相当于是删除了commit-id当前的所有的提交,并且不会产生新的commit-id记录,如果要推送到近程服务器的话,须要强制推送-fgit revert 是反做撤销其中的commit-id,而后从新生成一个commit-id。自身不会对其余的提交commit-id产生影响,如果要推送到近程服务器的话,就是一般的操作git push就好了

March 11, 2021 · 1 min · jiezi

关于git:关于HuilderX-图形化界面无法拉取提交gitee问题

图形化界面提交拉取报错 no supported authentication methods avaiable如果命令行能够失常拉取推送有可能是原电脑用户数据凭证影响,百度了很多都是设置小乌龟的netWork,然而根本有效,能够尝试一下设置: 删除原先用户 设置为你本人的git账户明码就能够了

March 8, 2021 · 1 min · jiezi

关于git:Picgo-Gitee-Typora自动上传搭建markdown免费图库

Picgo + Gitee +Typora(主动上传)搭建markdown收费图库前言: 在写博客的是时候,之前那都是间接在博客网站下面写好了,再一一插入图片,当要在同时2个以上的博客下面发表的时候就会呈现图片援用的问题,在网上找了一久的材料,发现了能够利用Picgo + Gitee +Typora搭建一个markdown文档的收费图库,感觉十分可行,于是立马尝试了一下,的确可行,以下是这个解决方案的集体实际记录。 以下计划参照了网上大神的计划,并非我原创,内容是依据本人实际下来的记录。 一、须要的软件1、Picgo软件(官网下载:https://github.com/Molunerfinn/PicGo) 2、注册Gitee(码云)账号,搭建图床 3、node.js本地装置 4、Typora软件 二、应用Gitee(码云)搭建图床1.注册Gitee(码云)账号,官网地址:https://gitee.com/ 2.新建Gitee仓库 3.开启Gitee Pages服务 Gitee Pages 是一个收费的动态网页托管服务,您能够应用 Gitee Pages 托管博客、我的项目官网等动态网页。如果您应用过 Github Pages 那么您会很快上手应用 Gitee 的 Pages服务。目前 Gitee Pages 反对 Jekyll、Hugo、Hexo编译动态资源。 4.生成To私钥令牌 步骤依照图片所示进行操作即可,记住生成token当前须要保留下来(复制到哪里留着,PicGo外面用失去) 三、node.js装置1、下载安装(1). 官网地址: 英文:https://nodejs.org/en/ 中文:http://nodejs.cn/ Windows7须要降级装置历史版本地址: https://nodejs.org/en/about/releases/ https://nodejs.org/download/release/latest-v10.x/ (2). 装置 像装其他软件一样装置即可,windows7装置完了会主动配置环境变量,其余的如同须要本人配置。 装置实现之后有一部须要验证。 装置实现之后验证即可 四、PicGo 下载安装配置1、下载安装1.官网(开源GitHub:https://github.com/Molunerfinn/PicGo)依据操作系统来下载对应的安装文件(GitHub官网) (1). Windows 用户请下载最新版本的 exe 文件。 (2). macOS 用户请下载最新版本的 dmg 文件。 (3). Linux 用户请下载 AppImage 文件。 ...

March 7, 2021 · 1 min · jiezi

关于git:git基本使用总结

1.登录github,新建仓库,寄存行将提交的代码 2.首次提交代码,依照如下操作 3.批改或者新增代码之后持续提交,依照如下操作 4.罕用的git命令 git add增加至暂存区 git add–interactive交互式增加 git apply利用补丁 git am利用邮件格局补丁 git annotate同义词,等同于 git blame git archive文件归档打包 git bisect二分查找 git blame文件逐行追溯 git branch分支治理 git cat-file版本库对象钻研工具 git checkout检出到工作区、切换或创立分支 git cherry-pick提交拣选 git citool图形化提交,相当于 git gui 命令 git clean革除工作区未跟踪文件 git clone克隆版本库 git commit提交 git config查问和批改配置 git describe通过里程碑直观地显示提交ID git diff差别比拟 git difftool调用图形化差别比拟工具 git fetch获取近程版本库的提交 git format-patch创立邮件格局的补丁文件。参见 git am 命令 git grep文件内容搜寻定位工具 git gui基于Tcl/Tk的图形化工具,偏重提交等操作 git help帮忙 git init版本库初始化 git init-db*同义词,等同于 git init ...

March 7, 2021 · 1 min · jiezi

关于git:git基本使用

登录github,新建仓库 2.首次提交代码,进入工程目录,依照如下操作 3.批改或新增代码,再次提交,进入工程目录,依照如下操作 4.git常用命令git add增加至暂存区 git add–interactive交互式增加 git apply利用补丁 git am利用邮件格局补丁 git annotate同义词,等同于 git blame git archive文件归档打包 git bisect二分查找 git blame文件逐行追溯 git branch分支治理 git cat-file版本库对象钻研工具 git checkout检出到工作区、切换或创立分支 git cherry-pick提交拣选 git citool图形化提交,相当于 git gui 命令 git clean革除工作区未跟踪文件 git clone克隆版本库 git commit提交 git config查问和批改配置 git describe通过里程碑直观地显示提交ID git diff差别比拟 git difftool调用图形化差别比拟工具 git fetch获取近程版本库的提交 git format-patch创立邮件格局的补丁文件。参见 git am 命令 git grep文件内容搜寻定位工具 git gui基于Tcl/Tk的图形化工具,偏重提交等操作 git help帮忙 git init版本库初始化 git init-db*同义词,等同于 git init git log显示提交日志 git merge分支合并 ...

March 7, 2021 · 1 min · jiezi

关于git:git-常用命令对应使用情境

这篇文章结合实际开发情景,讲一些比拟罕用的git命令查看更残缺的清单:http://www.ruanyifeng.com/blo...举荐一个cmd工具:更好看的界面,更舒服的用户体验cmder: https://cmder.net/ 前言首先贴上阮一峰老师博客的一张图,做一个常识储备。 一、分支首先,拿到一个我的项目地址,老大让你把我的项目拉下来,要执行什么命令呢? git clone 我的项目地址刚拉下来的我的项目,须要切出本人的一个分支进行开发,要执行什么命令呢?git checkout -b 分支名称这样切出的只是本人的本地分支,如果须要让他人也能看到你的分支的代码,须要将这个分支推送到近程,要执行什么命令呢?git push --set-upstream origin 要推送到近程的分支名称怎么查看以后分支呢?# 列出所有本地分支 git branch# 列出所有近程分支 git branch -r# 列出所有本地分支和近程分支 git branch -a怎么切换到其余分支呢?git checkout 分支名称删除分支# name是分支名称#删除本地分支git branch -d name#删除近程分支git push origin --delete name二、批改并提交我在一个分支批改了一些代码,怎么查看以后分支的文件批改状态呢?git status想具体查看改的内容,怎么操作?# 显示工作区与暂存区的差别# 执行后用键盘向下的箭头进行下拉,不要用滚轮git diff我又从新批改了一些代码或者文件,这时候我想提交代码到暂存区,怎么做呢?# 全副提交git add .# 提交指定文件git add 文件门路上一步提交到暂存区的文件,怎么提交到仓库区呢?# 写上对应的正文,便于辨别git commit -m 正文执行了commit之后,怎么推送到近程?git push 三、查看提交日志有时候须要查看近期本人或其余共事在分支A的批改,怎么操作呢?# 首先切到A分支git checkout A# 显示以后分支的版本历史git log 从上图咱们能够看出,git log仅可能查看commit-id、作者、日期以及正文,所以我更举荐大家应用git自带的可视化工具,无需独自装置,应用以下命令行即可关上: gitk 咱们能够通过这个可视化界面,疾速看到最近的版本信息,包含批改了哪些文件,哪些具体内容 四、合并代码咱们可能须要将A分支的代码合并到B分支,如何操作呢?# 首先切到分支Bgit checkout B#执行合并命令git merge A#merge之后如果有抵触,手动解决抵触(其实就是看哪些要哪些不要,手动操作取舍),而后执行:git add .git commit -m 正文#如果没有抵触,执行推送到近程git push咱们可能须要在A分支去合并B分支的某一次提交,怎么操作呢?首先咱们须要晓得这一次提交的commit-id,这一次提交是在B分支生成的,所以咱们须要先切到B分支: ...

March 5, 2021 · 1 min · jiezi

关于git:git-教程-git-cherrypick-命令

简介在git治理的工程中,不可避免的存在多个分支,比方风行的gitflow就划分为很多的分支,那么就会有代码的合并。个别代码的合并分为两种:一种是整个分支的合并,一个是筛选局部的commit来合并。本文介绍的就是筛选局部的commit来提交的指令git cherry-pick。 git cherry-pick根底用法筛选一个commit-id合并git cherry-pick commit-id留神:合并过去的commit-id将会变掉,产生一个新的commit-id,跟原来的不在雷同筛选多个commit-id合并git cherry-pick commit-idA commit-idB筛选间断的多个commit-id合并git cherry-pick commit-idA..commit-idB该指令是将从commit-idA开始到commit-idB之间的所有commit-id提交记录都合并过去,须要留神的是,commit-idA必须比commit-idB提前提交,也就是说在被筛选的分支上,先有的commit-idA,而后才有的commit-idBgit cherry-pick高级用法应用下面的指令基本上能够玩转很大部分的场景,然而总有一些咱们料想不到或者绝对不是很丝滑的场景合并抵触在理论合并的过程中,总有一些抵触的状况,遇到这些状况下,该如何应用cherry-pick的组合命令来解决问题?首先在应用cherry-pick时,如果遇到了代码抵触,其实合并过程会进行,须要应用其余的形式来持续对应的操作持续合并--continue第一步:须要合并人解决对应的抵触文件,而后提交到暂存区git add . 第二步:应用上面的命令继续执行git cherry-pick --continue放弃合并,回归原始状态--abort应用以后的指令,合并的动作暂停,并且回归到操作前的样子git cherry-pick --abort放弃合并,保留状态 --quit应用以后的指令,会保留车祸现场,退出cherry-pickgit cherry-pick --quit联结应用的命令-e,--edit应用以后指令,会关上编辑器,让用户编写信息-n,--no-commit只更新工作区和暂存区,不产生新的提交-x在提交信息的开端追加一行(cherry picked from commit ...),阐明这个提交是如何来的

March 4, 2021 · 1 min · jiezi

关于git:更新CentOS自带的-Git-版本-Git-2x

因为centos自带的git版本过低,导致应用过程中会呈现连贯近程仓库超时等问题,故需降级git版本。 参考链接https://computingforgeeks.com... 查看git版本 git --version**删除git yum remove git*装置最新版本 yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpmyum install git

March 4, 2021 · 1 min · jiezi

关于git:git-基础命令-git-reset命令

简介在程序员理论工作过程中,提交代码后,偶然也有悔恨的时候,然而都提交到本地仓库或者推送到近程服务器了,可怎么办?我想要回到某一个提交的版本,git就很贴心的提供了对应的性能,能够让你得心应手的悔恨。尽管世界上没有后悔药,然而git能够做到。 git reset前置常识应用git reset之前,须要对git中的区域有肯定的理解。git中的区域划分为工作区(WorkSpace)、暂存区(Stage/Index)、本地库(Local Repo)和近程库(Remote)四个区域。 同时git reset还须要跟三个参数联结应用,成果更好--hard--mixed--soft三个指令的区别:对于工作区、暂存区、本地仓库的回滚的粒度范畴不一样,能够依据理论的需要抉择不同的参数来回滚不同区域的代码。 git reset --hard指令图解 应用以后的命令,工作区、暂存区、本地仓库都会回滚到对应commit-id上git reset --mixed指令图解 应用以后的命令,工作区代码不会受到影响,然而暂存区、本地仓库区的代码曾经回滚到了YY对应的commit-id上。git reset --soft指令图解 应用以后的指令,工作区和暂存区的代码不会受到影响,然而本地仓库的代码会回滚到YY对应的commit-id上总结对于--hard,--mixed,--soft参数,能够依据具体情况应用,区别就是git中工作区、暂存区、本地仓库是否会受到影响。依据上文能够看出,他们三个对于git区域的影响范畴一次递加。如果有良好的add,commit的习惯(依据工作进度及时commit,不要所有的货色一次性梭哈)倡议应用--hard模式,然而同时能够跟其它的指令综合应用,比方: git stash -m '暂存信息'git reset --模式 commit-id

March 4, 2021 · 1 min · jiezi

关于git:git项目数据批量脱敏

背景这是个难堪的背景 鉴于我的项目的与业务不耦合,于是决定将我的项目放到github上。只是我的项目里有些测试,比拟敏感,须要进行脱敏。通过一阵批改后,把敏感数据都批改了,提交。而后我的项目迁徙外网,还用上了git push --mirror想把tags什么都,也同步过来。 提交记录同步过来后,才发现,能够在提交记录里看到敏感数据的历史记录。这,着实难堪~ 理一理我的需要: 要同步提交记录到github要进行敏感数据脱敏所以,要把提交记录里,所有的敏感数据都解决掉! 通过github官网文档,发现官网有提供相干的解决形式。 BFGBFG 是一个简略且疾速的,能够代替git-filter-branch的革除git仓库历史数据的工具。 革除大文件革除明码、证书或其它隐衷数据入手资料: 下载bfg包一个替换规定的文件,如:replacements.txt,文件里写好替换的规定如: PASSWORD1 # Replace literal string 'PASSWORD1' with '***REMOVED***' (default)PASSWORD2==>examplePass # replace with 'examplePass' insteadPASSWORD3==> # replace with the empty stringregex:password=\w+==>password= # Replace, using a regexregex:\r(\n)==>$1 # Replace Windows newlines with Unix newlines git clone --mirror https://git.XXXX.com/XXX/XX.gitjava -jar C:\Users\YY\Downloads\bfg-1.13.2.jar --replace-text replacements.txt ui.git cd XX.git git push --mirror https://git.XXXX.com/XXX/XX.git 记得,推的时候,须要把相干的分支都勾销爱护

March 3, 2021 · 1 min · jiezi

关于git:Git-代码回滚与找回的艺术

本文作者: marklai(赖泽浩)- 高级软件工程师,十年软件配置管理教训,现服务于 CSIG 云与智慧产业事业群质量部导语Git 是一个灵便和弱小的版本管理工具,正确应用可能无效促成团队合作,避免版本失落。然而实际中,有些开发人员会或无意或无心地误用局部 Git 的性能,给团队带来困扰,甚至造成损失。不失当的代码回滚操作是其中的次要问题之一。 本文次要分享针对不同场景的代码回滚操作,以及如何抢救误删的内容。 一个典型案例咱们先通过一个我的项目团队实在呈现过的典型案例,来看看不失当的代码回滚可能带来的问题。 (1)小红、小黄、小蓝独特工作在同一条分支上。 (2)小红利用reset回滚了一些内容,发现 push 失败,最初用 push -f 操作胜利。 更甚者,push -f提醒指标是爱护分支(例如master)而无奈推送胜利,于是小红勾销了分支爱护,从而使得push -f胜利。 (3)小黄小蓝进行惯例 git pull,遇到了一大堆抵触,并且 commit 历史都乱了! (4)过一段时间,须要查看某次公布的源代码,却发现无奈找到精确的代码!原来它刚好被小红之前reset掉了。 意识 Git 的四个工作区域在盘点常见的代码回滚场景之前,有必要认识一下 Git 的四个工作区域。 平时咱们 clone 一个代码库之后,本地看起来就是一个蕴含所有我的项目文件的目录。其实从逻辑上能够分为四个工作区域: 工作区 也称工作目录、工作正本,简略来说就是 clone 后咱们看到的蕴含我的项目文件的目录。咱们日常开发操作也是在工作区中进行的。本地仓库(.git) 在工作区中有个暗藏目录.git,这就是 Git 本地仓库的数据库。工作区中的我的项目文件实际上就是从这里签出(checkout)而失去的,批改后的内容最终提交后记录到本地仓库中。 Tips:不要手动批改 .git 目录的内容暂存区 也称缓存区,逻辑上处于工作区和本地仓库之间,次要作用是标记批改内容,暂存区里的内容默认将在下一次提交时记录到本地仓库中。远端仓库 团队合作往往须要指定远端仓库(个别是一个,也能够有多个),团队成员通过跟远端仓库交互来实现团队合作。 一个根本的 Git 工作流程如下: 在工作区中批改文件暂存文件,将文件寄存在暂存区将改变从暂存区提交到本地仓库从本地仓库推送到远端仓库常见的代码回滚场景回滚场景:仅在工作区批改时当文件在工作区批改,还没有提交到暂存区和本地仓库时,能够用 git checkout -- 文件名 来回滚这部分批改。 不过须要特地注意的是这些改变没有提交到 Git 仓库,Git 无奈追踪其历史,一旦回滚就间接抛弃了。 示例: 用 git status 查看,还没提交到暂存区的批改呈现在 “Changes not staged for commit:” 局部。 ...

March 2, 2021 · 2 min · jiezi

关于git:Git-相关常用命令

根底命令pwb,命令是用于显示以后的目录。mkdir fileName 用于创立文件。ls 用于显示以后文件列表。cd filename 用于进入到指定文件 按tab键可补全输出。../ 命令用于返回上一级目录。删除空目录 rmdir 目录。删除文件夹 ,无论文件是否为空,应用-rf即可,即rm -rf 目录(删除就没法回收了,谨用!);-r:向下递归,不论有多少目录,一并删除。-f:强制删除,不做任何提醒。强制删除文件 rm -f 目录名。cd ~ 返回根目录cat 查看配置环境变量vim ~/.bash_profile笼罩brew link --overwrite cocoapods GITGIT inita. mkdir filename;b. $ git init 创立一个新的仓库, 在新建的文件夹下回创立一个.git 的目录。该目录用来跟踪治理版本库,如果没看到应用 ls -ah 就能够看到暗藏的文件;c. $ git add . 把文件增加到仓库;d. $ git commit -m "本次提交的阐明",把文件提交到仓库;胜利会提醒 1. n file changed (-文件被改变);n insertions (-文件被插入); 创立分支git checkout -t origin/master -b feat-trusteeship // feat-trusteeship 为你本人起的分支名字 本地分支推送到近程git push origin feature-branch:feature-branch //推送本地的feature-branch(冒号后面的)分支到近程origin的feature-branch(冒号前面的)分支(没有会主动创立)为推送以后分支并建设与近程上游的跟踪,git push --set-upstream origin feature-branch ...

March 2, 2021 · 3 min · jiezi

关于git:安装了git-vscode检测不到解决

如果确定装置了git , 先看下有没有配置环境变量or 装置胜利1- win+r 关上cmd命令窗口,输出git 如果提醒git不是外部命令那么须要配置下环境变量 配置环境变量: (1) 找到git装置的地位 ,输出where git (2)找到 git-core文件地位 F:\Program Files\Git\mingw64\libexec\git-core ; 找到F:\Program Files\Git\mingw64\bin,文件地位 (3)配置环境变量 点开path 增加刚刚复制的两个门路即可 (4) 最初关上vscode,设置 ,增加git.path git.path的地址就是你git.exe装置的地位:

March 1, 2021 · 1 min · jiezi

关于git:一个批量清除Git分支的脚本

每开发一个新性能,往往都会新建一个性能分支。 长此以往,我的项目的本地代码仓库上,就会累积较多的过期分支。 若要逐个手动清理这些过期分支,想想都感觉累。为了更高效的摸鱼,写了一个python脚本,用于批量清理过期分支。 假如D:\rui\work\门路下,存在repo-a这一本地代码仓库。在repo-a上,存在着master、feature-a、feature-b等三个分支。当初,想要移除feature-b,可执行如下代码。 值得一提的是,若feature-b存在未push到远端仓库的commit,则feature-b不会被移除。若需强制移除,能够独自执行命令git branch -D feature-b。 # 引入第三方库 GitPythonfrom git import Repo, GitCommandError# 仓库名称REPO_NAME = 'repo-a'# 须要保留的分支,默认保留mater分支# 留神:没有push新commit到远端仓库的分支,即便不在该汇合里,也不会被删除REMAIN_BRANCH_TUPLE = [ 'feature-a']# 工作门路WORK_PATH = r'D:\rui\work\\'def main(): print('开始啦 0v0\n') # 创立版本库对象 repo_path = WORK_PATH + REPO_NAME repo = Repo(repo_path) # 若以后分支存在未提交的批改,则停止操作 if repo.is_dirty(): print('请先提交以后分支的批改!!!') exit() # 切换到 master repo.heads.master.checkout() not_push_branch_list = [] for head in repo.heads: # 分支名不在保留汇合中,则删除 head_name = head.name if head_name == 'master' or head_name in REMAIN_BRANCH_TUPLE: continue try: # 移除分支 # 实质上是执行命令 git branch -d feature-name repo.delete_head(head_name) except GitCommandError: # 未push新commit的分支,执行删除操作,将会抛出GitCommandError异样 # 当然,如果呈现其余谬误,也可能会抛出GitCommandError异样。此处,只是简略解决 not_push_branch_list.append(head_name) if not_push_branch_list: not_push_branch_str = ', '.join(not_push_branch_list) print('没有push新commit的分支: {0}\n'.format(not_push_branch_str)) print('完结啦 ^0^')if __name__ == '__main__': main()

February 27, 2021 · 1 min · jiezi

关于git:SourceTree之遴选将当前分支的提交的修改合并到另一个分支上

工作中,提交分支的时候经常会遇到这样一种需要,就是以后分支上的批改,须要合并另外一个分支上,但仅仅只是合并这次提交的批改。 这里我应用的SourceTree的遴选性能。 以后dev分支已提交的一个批改,红色局部圈出。须要将改分支的批改合并到sso分支上。咱们当初切换到sso分支上。查看所以分支,右键抉择须要合并的某次提交上,抉择遴选。如下图。抉择后会呈现提示框,确认无抵触后,抉择确定。实现!!!

February 26, 2021 · 1 min · jiezi

关于git:解决方案vscode-用git-拉取代码提示在签出前请清理存储库工作树

是不是你也有这样的困扰,代码拉取时,提醒: 命令解决,是能够解决,总感觉没有可视化来的好。上面给出解决方案: 第一步: 在这里右键Stash All Change而后回车确定,这个时候发现你本地更改都不见了,别着急。 第二步:再拉取最新代码。 第三步:复原刚刚本人本地的更改右键-存储-弹出存储好了,这个时候你本地的变更也复原了。 最初原理就是将本地变更的代码stash起来,那么本地的代码就是没有更改的,这个时候就能够拉取最新的近程仓库代码啦。最初把本地的代码放进去即可。

February 25, 2021 · 1 min · jiezi

关于git:git-merge命令使用

简介git merge的次要性能就是合并其余的分支到以后分支,git默认的形式就是"快进式合并"(fast-farward merge),将其余分支的上的commit信息合并到以后的分支上 将其它分支合并到以后分支git merge xxxx(分支) 将待合并分支上的 commit 合并成一个新的 commit 放入以后分支,实用于待合并分支的提交记录不须要保留的状况git merge xxx(分支) --squash 敞开fast-farward merge,应用 --no-ff 参数后,会在分支上从新生成一个新节点git merge xxx(分支) --no-ff 新生成的节点的commit信息就是Merge branch xxx的文字间接提交;no-ff是no-fast-forward的简写

February 24, 2021 · 1 min · jiezi

关于git:图文详解-Git-工作原理

本文图解Git中的最常用命令。如果你略微了解Git的工作原理,这篇文章可能让你了解的更透彻。 根本用法 下面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。 git add files  #把以后文件放入暂存区域git commit     #给暂存区域生成快照并提交git reset – files  #用来撤销最初一次git add files,你也能够用git reset撤销所有暂存区域文件git checkout – files  #把文件从暂存区域复制到工作目录,用来抛弃本地批改你能够用 git reset -p,git checkout -p,or git add -p进入交互模式。 也能够跳过暂存区域间接从仓库取出文件或者间接提交代码。 git commit -a  #相当于运行git add把所有当前目录下的文件退出暂存区域再运行。git commit files #进行一次蕴含最初一次提交加上工作目录中文件快照的提交。并且文件被增加到暂存区域。git checkout HEAD – files  #回滚到复制最初一次提交。约定后文中以上面的模式应用图片。 绿色的5位字符示意提交的ID,别离指向父节点。分支用橘色显示,别离指向特定的提交。以后分支由附在其上的HEAD标识。这张图片里显示最初5次提交,ed489是最新提交。master分支指向此次提交,另一个maint分支指向祖父提交节点。 命令详解Diff有许多种办法查看两次提交之间的变动,上面是一些示例。 Commit 提交时,Git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。而后把以后分支指向新的提交节点。下图中,以后分支是master。在运行命令之前,master指向ed489,提交后,master指向新的节点f0cec并以ed489作为父节点。 即使以后分支是某次提交的祖父节点,git会同样操作。下图中,在master分支的祖父节点maint分支进行一次提交,生成了1800b。这样,maint分支就不再是master分支的祖父节点。此时,合并[1](或者衍合[2])是必须的。 如果想更改一次提交,应用git commit –amend。Git会应用与以后提交雷同的父节点进行一次新提交,旧的提交会被勾销。 另一个例子是拆散HEAD提交[3],后文讲。 CheckoutCheckout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。 当给定某个文件名(或者关上-p选项,或者文件名和-p选项同时关上)时,Git会从指定的提交中拷贝文件到暂存区域和工作目录。比方,git checkout HEAD~ foo.c会将提交节点HEAD~(即以后提交节点的父节点)中的foo.c复制到工作目录并且加到暂存区域中。(如果命令中没有指定提交节点,则会从暂存区域中拷贝内容。)留神以后分支不会发生变化。 当不指定文件名,而是给出一个(本地)分支时,那么HEAD标识会挪动到那个分支(也就是说,咱们“切换”到那个分支了),而后暂存区域和工作目录中的内容会和HEAD对应的提交节点统一。新提交节点(下图中的a47c3)中的所有文件都会被复制(到暂存区域和工作目录中);只存在于老的提交节点(ed489)中的文件会被删除;不属于上述两者的文件会被疏忽,不受影响。 如果既没有指定文件名,也没有指定分支名,而是一个标签、近程分支、SHA-1值或者是像master~3相似的货色,就失去一个匿名分支,称作detached HEAD(被拆散的HEAD标识)。这样能够很不便地在历史版本之间相互切换。比如说你想要编译1.6.6.1版本的Git,你能够运行git checkout v1.6.6.1(这是一个标签,而非分支名),编译,装置,而后切换回另一个分支,比如说git checkout master。然而,当提交操作波及到“拆散的HEAD”时,其行为会略有不同,详情见在上面。 HEAD标识处于拆散状态时的提交操作当HEAD处于拆散状态(不依附于任一分支)时,提交操作能够失常进行,然而不会更新任何已命名的分支。(你能够认为这是在更新一个匿名分支。) 一旦尔后你切换到别的分支,比如说master,那么这个提交节点(可能)再也不会被援用到,而后就会被抛弃掉了。留神这个命令之后就不会有货色援用2eecb。 然而,如果你想保留这个状态,能够用命令git checkout -b name来创立一个新的分支。 ResetReset命令把以后分支指向另一个地位,并且有抉择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。 如果不给选项,那么以后分支指向到那个提交。如果用–hard选项,那么工作目录也更新,如果用–soft选项,那么都不变。 如果没有给出提交点的版本号,那么默认用HEAD。这样,分支指向不变,然而索引会回滚到最初一次提交,如果用–hard选项,工作目录也同样。 如果给了文件名(或者-p选项),那么工作成果和带文件名的checkout差不多,除了索引被更新。 MergeMerge命令把不同分支合并起来。合并前,索引必须和以后提交雷同。如果另一个分支是以后提交的祖父节点,那么合并命令将什么也不做。另一种状况是如果以后提交是另一个分支的祖父节点,就导致fast-forward合并。指向只是简略的挪动,并生成一个新的提交。 否则就是一次真正的合并。默认把以后提交(ed489 如下所示)和另一个提交(33104)以及他们的独特祖父节点(b325c)进行一次三方合并[4]。后果是先保留当前目录和索引,而后和父节点33104一起做一次新提交。 Cherry Pickcherry-pick命令“复制”一个提交节点并在以后分支做一次齐全一样的新提交。 Rebase衍合是合并命令的另一种抉择。合并把两个父分支合并进行一次提交,提交历史不是线性的。衍合在以后分支上重演另一个分支的历史,提交历史是线性的。实质上,这是线性化的主动的 cherry-pick。 下面的命令都在topic分支中进行,而不是master分支,在master分支上重演,并且把分支指向新的节点。留神旧提交没有被援用,将被回收。 要限度回滚范畴,应用–onto选项。上面的命令在master分支上重演以后分支从169a6以来的最近几个提交,即2c33a。 ...

February 23, 2021 · 1 min · jiezi

关于git:Git版本管理工具常用命令整理和说明

工作区:就是你在电脑里能看到的目录。 暂存区:英文叫stage, 或index。个别寄存在 ".git目录下" 下的index文件(.git/index)中,所以咱们把暂存区有时也叫作索引(index)。 版本库:工作区有一个暗藏目录.git,这个不算工作区,而是Git的版本库。 第一步:用户名和邮箱。别离批改用户名和邮箱,其中--global带和不带的区别在于操作文件是.git/config还是~/.gitconfig,如果你应用的是--system则对应的就是/etc/gitconfig文件。 对于是否在最初带username或email,区别在于你是设置还是查看。 git config [--global] user.name [username]git config [--global] user.email [email]第二步:主机。列出所有近程主机,应用-v选项(即:git remote -v),能够参看近程主机的网址,应用show hostname能够查看主机hostname的详细信息。 git remote [show hostname]增加连贯的近程仓库,其中hostname是给仓库起的名称,uri是仓库地址。 git remote add hostname uri删除连贯的近程仓库,其中hostname是给仓库起的名称。 git remote rm hostname批改近程主机oldhostname名称为newhostname。 git remote rename oldhostname newhostname第三步:初始化。应用该命令会在目录中创立新的Git仓库,本地化的。 git init把uri指定的仓库代码克隆到本地来,如果加了可选参数dir,示意克隆到该文件夹下。 git clone uri [dir]第四步:提交。从近程服务器拉取代码更新,hostname是对应的仓库名称,branchname是分支名称。 git pull hostname branchname【不举荐间接用这个】增加文件到缓冲区,你能够指定增加的文件filename,也能够应用-A把文件夹下全副文件增加到缓冲区。 git fetch hostname branchnamegit diff localbranchname hostname/branchname[ -- filepath][ >>filePath]git merge hostname/branchname【举荐应用这个比拟平安】以上命令的含意:首先从近程的hostname的branchname分支下载最新的版本到hostname/branchname分支上,而后比拟本地的branchname分支和hostname/branchname分支的差异,最初进行合并。 最初可选参数 -- filepath是指定比照的文件,不指定就是全副文件。 最初的可选参数 >>filePath示意把差别文件输入到文件,不便查看。 git add filename|-A提交代码到本地仓库,-m前面的remark示意对这次提交的形容。 git commit [-m remark]提交代码到近程服务器,hostname是对应的仓库名称,branchname是分支名称。 ...

February 20, 2021 · 1 min · jiezi

关于git:git基本操作命令

$ git init 创立git仓库 $ git add <filename> 将工作区文件增加进暂存区 $ git add -f <filename> 强制增加 $ git chech-ignore -v <filename> 查看.gitignore规定与该文件的抵触 $ git commit -m <message> 暂存区文件提交至仓库,-m为此次提交的备注 $ git status 查看仓库以后状态 $ git diff <filename> 查看文件批改内容 $ git log 查看提交历史 $ git reflog 查看命令历史 $ git reset --hard <commit-id> 回退历史版本,HEAD指向以后版本,HEAD^示意上一个版本,上n个版本能够写成HEAD~n $ git checkout -- <filename> 撤销工作区的批改,留神--。如文件为被提交至暂存区,文件将回退到与版本库统一,否者回退到与暂存区统一 $ git reset HEAD <filename> 撤销暂存区的批改 $ git rm <filename> 从版本库中删除该文件 $ git branch 查看分支 ...

February 20, 2021 · 2 min · jiezi

关于git:git-stash命令使用

git stash 性能简介在编码过程中,总会遇到一些时候,你在某一个分支上写了代码,这个时候你须要去其余分支或者原始版本下来做一些性能或者加强,然而你又不想将新加的代码提交或者回滚(毕竟本人辛苦写的或者还没有通过测试的性能等等起因),这个时候stash就很有用途了。 性能介绍将未提交的文件保留到Git栈中git stash然而这个指令的提交信息时上次commit的信息,如果stash的次数较多或者间隔时间太长,齐全不晓得没有批改了啥,所以能够应用上面的指令 git stash -m "暂存的信息"查看栈中保留的列表git stash list显示栈中一条记录信息git stash show stash@{0}移除栈中其中一条记录git stash drop stash@{0}从Git栈中检出一条记录,并将它从栈中移除git stash pop stash@{0} (如果stash@{0}不增加就是最新的一条)从Git栈中检出一条记录,但不从栈中移除git stash apply stash@{0}清空栈里的所有记录git stash clear把以后栈中某一次记录检出并创立一个新分支git stash branch new_banch stash@{0}上面的指令纯正介绍为以后批改或删除的文件创建一个自定义的栈并返回一个ID,此时并未真正存储到栈里git stash create将 create 办法里返回的ID放到 store 前面,此时在栈里真正创立了一个记录,但以后批改或删除的文件并未从工作区移除git stash store xxxxxx$ git stash create09eb9a97ad632d0825be1ece361936d1d0bdb5c7$ git stash store 09eb9a97ad632d0825be1ece361936d1d0bdb5c7$ git stash liststash@{0}: Created via "git stash store".

February 20, 2021 · 1 min · jiezi

关于git:Git-内部原理

三个状态git 的三个状态(三个区域): Working Directory:工作区,间接编辑的区域,肉眼可见,间接操作;Staging Area:暂存区,数据临时寄存的区域;.git directory(Repository):版本库,寄存曾经提交的数据;很多命令都和这三个状态有关系,比方: git diffgit checkoutgit reset《图解 Git》中对这些命令有具体解说:https://marklodato.github.io/visual-git-guide/index-zh-cn.html 底层命令与下层命令Git 实质上是一个内容寻址文件系统(content-addressable filesystem),并在此之上提供了一个版本控制系统的用户界面。 Git 最后是一套面向版本控制系统的工具集,而不是一个残缺的、用户敌对的版本控制系统,所以它蕴含了一部分用于实现底层工作的子命令。这些命令被设计成能以 UNIX 命令行的格调连贯在一起,或是由脚本调用,来实现工作。这部分命令一半被称作“底层(plumbing)”命令,而哪些更敌对的命令则被称作“下层(porcelain)”命令。 查看所有底层命令请移步:https://git-scm.com/docs Git Objects 和 Git ReferencesGit 实质上是一个内容寻址文件系统(content-addressable filesystem),Git Objects 和 Git References 是这个内容寻址文件系统的外围。 Git ObjectsGit 通过四种 Object 来形容:文件、目录构造、提交(Commits)、附注标签(Annotated Tags)。 blob object数据对象。 形容文件,存储压缩后的文件内容。 tree object树对象。 形容目录构造,每个目录都是一个树对象。一个树对象蕴含了一条或多条树对象记录(tree entry),每条记录含有一个指向数据对象或者子树对象的 SHA-1 指针,以及相应的模式、类型、文件名信息。 例子: 040000 tree 23c018695a85aaa4413817349abad68634df935c dir_1100644 blob b176602ea4b9de59db75aeb527bcda8507bd68ea file_1Git 以一种相似于 UNIX 文件系统的形式存储内容,但作了些许简化。 所有内容均以 tree object(树对象)和 blob object(数据对象)的模式存储,其中树对象对应了 UNIX 中的目录项,数据对象则大抵上对应了 inodes 或文件内容。commit object提交对象。 形容提交(Commit),提交对象的格局: tree:顶层树对象。代表以后我的项目快照;parent:可能存在的父提交(我的项目的第一次提交没有该字段);author:作者信息;commiter:提交者信息;换行、提交形容信息例子: ...

February 19, 2021 · 6 min · jiezi

关于git:git-pull-报文件冲突的处理方法

git pull提醒文件抵触的解决办法用另一个库笼罩以后库: git fetch 近程库地址 近程分支git reset --hard FETCH_HEAD和本地另一个分支合并,有抵触时主动抉择: # 主动抉择另一分支的版本git merge 另一个分支名 -X theirs# 主动抉择自已的版本:git merge 另一个分支名 -X ours和近程库合并,有抵触时主动抉择: # 主动抉择近程库的版本git pull 近程库地址 近程分支 -X theirs# 主动抉择自已的版本:git pull 近程库地址 近程分支 -X oursgit pull后,针对某个有抵触和文件,抉择近程库的版本: git checkout --theirs 文件名git add 文件名git commitgit pull后,针对某个有抵触的文件,抉择自已的版本: git checkout --ours 文件名git add 文件名git commitgit pull后,针对某个有抵触的文件,在解决前,先查看: # 查看独特先人的版本:git show :1:文件名# 查看自已的版本:git show :2:文件名# 查看近程库的版本:git show :3:文件名怎么解决"refuse to merge unrelated histories": git pull --allow-unrelated-histories 近程库地址 本地分支# orgit pull --rebase 近程库地址 本地分支--allow-unrelated-histories 和 --rebase的区别如果有两个分支 ...

February 19, 2021 · 1 min · jiezi

关于git:git-diff功能

git diff性能Git简介Git中的diff次要用于比拟差别,查看差别能够比拟不同分支差别、不同区域(Git的分区)差别、不同提交记录之间差别Git命令详解Git中的划分为工作区(Working Directory),缓存区(Index,也就是Stage区),版本库(也就是每次提交commit当前的版本)工作区和暂存区(Stage)之间的差别git diff这个命令显示的是具体的差别,比方是哪个文件中的哪行有变动。有时候会很多很芜杂,能够应用上面的命令间接显示哪个文件有了多少变动git diff --stat工作区和版本库之间差别git diff HEAD 或者 git diff cimmit-id同时也能够加上--stat指令,用于查看繁难的差别暂存区和版本库之间的差别如果须要比拟暂存区和版本库之间的差别,须要增加–cahced ,其余的指令相似,包含–stat git diff --cached HEAD 或者git diff --cached commit-id版本库之间提交记录的比拟git diff commit-id commit-id也能够应用HEAD来比拟:git diff HEAD^ HEAD不同分支之间的比拟假如当初有分支test-1和master分支,须要比拟这两个之间的差别,能够应用一下命令 git diff test-1 master或者 git diff test-1…master

February 19, 2021 · 1 min · jiezi

关于git:如何将代码同时提交到Github和码云Gitee上

主页:https://gozhuyinglong.github.ioGitee:https://gitee.com/gozhuyinglong/blog-demosGithub:https://github.com/gozhuyinglong/blog-demos微信搜寻:码农StayUp置信很多写开源我的项目的小伙伴都会将代码托管到Github上,但随着近些年码云Gitee的炽热,也有不少用户抉择码云做为近程仓库。为了进步开源我的项目的曝光度,会抉择将代码同时在两个平台进行托管。 那么如何将代码同时提交到Github和Gitee上呢?本文将进行具体介绍,并列出常见谬误及解决方案。 本文目录: 1. 多个近程仓库的应用多个近程仓库在我的项目中很少应用,但Git自身是反对的。 那让咱们跟着一个案例来复习一下Git命令吧:案例代码曾经在Github中托管了,当初要减少Gitee近程仓库。 1.1 查看近程仓库先来查看下以后我的项目的近程仓库 git remote不出意外,应该会输入: origin这个origin就是一个指向近程仓库的名称,是你在clone时 git 为你默认创立的。 能够通过命令查看origin指向的近程仓库地址: git remote -v输入后果: origin https://github.com/gozhuyinglong/blog-demos.git (fetch)origin https://github.com/gozhuyinglong/blog-demos.git (push)该命令会显示读写近程仓库的名称和地址,我这里指向的是Github。 1.2 近程仓库重命名既然这个地址是Github,为了好辨认,就将名称改成 github 吧。输出命令:git remote rename <old_remote> <new_remote> git remote rename origin github输出查看近程仓库命令,验证下是否胜利,输入后果: github https://github.com/gozhuyinglong/blog-demos.git (fetch)github https://github.com/gozhuyinglong/blog-demos.git (push)胜利! 1.3 增加另一个近程仓库上面咱们再增加Gitee上的近程仓库,首先在Gitee上创立一个空的仓库,名称与Github上雷同。 而后在【克隆/下载】处复制地址。 输入增加近程仓库命令:git remote add <remote> <url> git remote add gitee https://gitee.com/gozhuyinglong/blog-demos.git再来验证下是否胜利,输入后果: gitee https://gitee.com/gozhuyinglong/blog-demos.git (fetch)gitee https://gitee.com/gozhuyinglong/blog-demos.git (push)github https://github.com/gozhuyinglong/blog-demos.git (fetch)github https://github.com/gozhuyinglong/blog-demos.git (push)胜利! 1.4 多个近程仓库的推送/拉取有了多个近程仓库,推送和拉取再也不能像以前那样git push和git pull了,必须得加上近程仓库的名称,以辨认操作的是哪个近程仓库。命令如下:git push <remote> <branch>、git pull <remote> <branch>: ...

February 19, 2021 · 2 min · jiezi

关于git:前端菜鸟初入公司必备的Git知识

歌曲分享:City Of Stars Ryan GoslingCity of stars,are you shining just for me?City of stars,there's so much that I can't see.Who knows,is this the start of something wonderful and new,or one more dream that I cannot make true? 相忘于江湖,都实现了本人的幻想,各自安好! 一、根本理解在单人或多人的开发过程中,都须要对代码的版本进行治理,从而利于开发进度的管制。 Git 是一个开源的分布式版本控制系统,用于麻利高效地解决任何或小或大的我的项目。 Git 是 Linus Torvalds 为了帮忙治理 Linux 内核开发而开发的一个开放源码的版本控制软件。 二、下载下载链接:https://git-scm.com/download/win 装置实现后,鼠标右键即可看见 Git Bash 和 Git Gui 此时,肯定不要遗记做一些初始化的配置!!!不然到时候你提交了代码,你主管都不晓得是谁提交的,那就只剩下难堪,他人也会晓得你刚入行。 1:右键: git bash2:双引号中输出你的名字和邮箱git config --global user.name "Your name"git config --global user.email "Your email"3:config 前面的是list的l,不是数字1,也不是字母i查看信息: git config -l三、Git 的架构版本库:我的项目中,git init 之后会有一个.git的目录,这个目录不属于工作区,而是 git 的版本库,治理 git 的所有内容。 ...

February 14, 2021 · 2 min · jiezi

关于git:常用的GIT命令

废话少说,间接上代码: # 生成 ssh keysssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 全局配置git config --global user.name "<username>"git config --global user.email "<username>@xxx.com"# 查看日志git loggit log --pretty=oneline # 单行日志git log --graph --abbrev-commit # 图形日志+简洁id# 查看HEAD日志git reflog # 查问每一次的命令日志(通常和回滚一起应用,查找commitId)# 撤销批改git restore --staged <fileName> # 还原staged区文件git restore <fileName> # 还原工作区文件(还原到上一个staged或者版本库)# 查看批改git diff <fileName> # 查看工作区和(staged|版本库)外面最新版本的区别git diff HEAD -- <fileName> # 查看(工作区|staged区)和版本库外面最新版本的区别# 删除文件git rm <fileName> # 从版本库中删除该文件# 回滚git reset --hard # 以后节点(勾销所有更改)git reset --hard HEAD^ # 上一个节点git reset --hard HEAD^^ # 上两个节点git reset --hard HEAD~100 # 上100个节点(100可批改)git reset --hard <commitId> # 指针HEAD挪动到指定节点git reset --soft xxx # 软回滚,不回滚代码,只回滚提交操作# 穿梭git checkout <commitId> # HEAD指针指向某个节点,以复原过后的文件(常常用来从此节点创立新分支)git checkout <commitId> <fileName> # 把以后状态的某个文件内容笼罩为某个版本,会影响你以后的工作区(不要轻易做作这个操作)# 撤销git revert <commitId> # 撤销一次提交(git会从新做一个新的提交来撤销批改,而不是删除某次提交)git revert -m 1 <commitId> # 撤销merge合并,-m前面带的参数值能够是1或者2,示意要保留哪个分支的批改。(master上执行git merge dev,1:master,2:dev) # 咱们要记住,因为咱们摈弃过之前dev合并过去的commit,下次dev再往master合并,之前摈弃过的其实是不蕴含在外面的。咱们把之前master那个带有【反操作】的commit给撤销掉就能够从新merge了。# 提交git commit --amend # 批改上一次提交正文# 创立分支git branch <branch> # 创立分支git checkout <branch> # 切换分支git switch <branch> # 切换分支git checkout -b <branch> # 创立并切换分支git switch -c <branch> # 创立并切换分支git branch -d <branch> # 删除分支git branch -D <branch> # 强制删除分支,当分支从未被合并过,会提醒应用-D来强制删除,避免提交失落git checkout -b <branch> origin/<branch> # 创立并对应近程分支git branch --set-upstream-to <branch> origin/<branch> # 对应近程分支 # 创立标签git tag # 查看所有标签git tag <tagName> # 打标签git tag <tagName> <commitId> # 给特定提交打标签git tag -a <tagName> -m "<description>" # 附加标签阐明git show <tagName> # 查看标签信息git push origin --tags # 推送本地所有标签git push origin <tagName> # 推送单个标签git tag -d <tagName> # 删除本地标签git push origin :refs/tags/<tagName> # 删除近程标签# 合并git merge <branch> # 合并<branch>到以后分支,无抵触的话就是fast-forward模式git merge <branch> --no-off -m "<阐明>" <branch> # 禁止应用fast-forward模式,这样merge时生成一个新的commit,会保留分支信息git merge --abort # 放弃正在merge的操作# 工作现场git stash # 保留现场git stash push -m "<阐明>" # 保留现场并增加阐明git stash list # 列出所有现场git stash pop # 复原最新的现场,并从stash list中删除git stash apply <stash> # 复原指定的现场,然而不从stash list中删除git stash drop <stash> # 删除指定的现场# 复制提交git cherry-pick <commitId> # 将其余分支的提交“复制”(git将主动做一次提交,所以commitId是不同的)到以后分支# 查看remote库信息git remote -v # 查看remote库git remote add origin <remote> # 增加remote库# 推送remote分支git push -u origin master # 第一次推送master分支的所有内容git push origin <branch> # 推送分支# 配置remote地址git remote add origin http://xxx.com/xxx.gitgit remote set-url origin http://xxx.com/xxx.git

February 8, 2021 · 2 min · jiezi

关于git:前端面试每日-31-第664天

明天的知识点 (2021.02.08) —— 第664天 (我也要出题)[html] 页面的重绘和回流是什么?[css] 如何将文字设为等宽?[js] 请说说严格模式下的this指向[软技能] 举例说明前端多线程开发在哪些场景下会适应到?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

February 8, 2021 · 1 min · jiezi

关于git:前端面试每日-31-第663天

明天的知识点 (2021.02.07) —— 第663天 (我也要出题)[html] 你最喜爱H5的哪些性能?为什么?[css] 应用css实现导航栏左右滑动[js] 别离解释下js中默认绑定、隐式绑定、显式绑定、new绑定的区别[软技能] 你感觉前端有必要学习数据结构和算法吗?为什么?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

February 7, 2021 · 1 min · jiezi

关于git:idea-中git的基本应用

基于Git的我的项目操作装置Git工具Git是版本控制系统,能够借助Git实现团队代码版本控制及治理,从官网https://www.git-scm.com/downl...),如图所示:Git下载实现当前,傻瓜式(始终下一步)装置即可,不要更改装置目录(如果已装置过则毋庸装置)。 Git全局配置关上Git客户端工具,配置用户和明码,用于辨认提交代码的用户。 $ git config --global user.name "your-name"$ git config --global user.email "your-email@youremail.com" 查看配置信息 $ git config --listuser.email=xxxxxx@xxxxxx.comuser.name=xxxxxxIdea中查看Git配置。找到Git配置选项,进行Git测试,如图所示: IDEA我的项目中创立本地库创立我的项目本地库,如图所示: 个别本地库会创立在你我的项目的根目录,如图所示: 本地库创立好当前会在我的项目的根目录增加一个.git目录(可能是暗藏目录。 IDEA我的项目中本地库配置对.git目录中的exclude文件进行配置,对指定资源进行过滤(例如哪些资源不提交、上传,能够此文件做全局配置),内容如下: HELP.mdtarget/out/### IntelliJ IDEA ###.idea*.iws*.iml*.ipr.gitignore### maven ###mvnw*.cmd.mvn/ 我的项目Add,Commit操作将我的项目、Module更新增加到暂存区,提交(Commit)本地库,例如: 也能够,基于工具栏的按钮进行相干操作,如图所示: Idea中装置Gitee插件关上Setting中的Plugins选项,而后进行gitee插件搜寻和装置,如图所示: Gitee 装置胜利当前,查看是否在Version Control中有Gitee选项,如图所示: 点击Version Control的Gitee选项,进入Gitee配置,如图所示: 在Gitee配置界面,选则增加账户(Add Account),进入账户配置界面,如图所示: 在Gitee账户配置界面,进行连贯Gitee平台的账户配置(要当时注册好Gitee平台账户),而后点击Login进行登陆,登陆胜利当前会出现如下界面,如图所示: 我的项目Push操作剖析及实现将我的项目、Module推送的Gitee近程代码托管平台,在这里分两种状况,一种状况是曾经有近程仓库了,一种状况是临时还没有近程仓库.在没有近程仓库的状况下,咱们能够间接给予CVS进行代码的分享,其过程如下:如图所示: 指定Gitee仓库的仓库名(库不存在,推送时主动创立),如图所示: 登陆Gitee,查看近程仓库内容,如图所示: 从Gitee地址克隆(Clone)我的项目关上IDEA中可克隆(clone)选项,如图所示: 指定克隆地址和克隆目录,如果要克隆到本地地位曾经有一个同名的我的项目,则能够批改新的我的项目名,如图所示: 克隆实现当前,抉择关上我的项目的窗口,例如: 我的项目关上当前,配置JDK,MAVEN,主动编译,编码等,并将maven我的项目增加到maven区,如图所示: 也能够在我的项目的pom.xml文件上右键抉择add as maven project,将我的项目增加到maven区。如果是一般的java我的项目(非maven我的项目),此时还须要将src转换为sources root格局(抉择src目录,右键抉择mark directory as sources root). 总结(Summary)在本大节中重点解说了IDEA中Git的一个基本操作,通过Git在IDEA中实现了我的项目的Commit,Push,Update等操作. gitspringboot

February 3, 2021 · 1 min · jiezi

关于git:Git常用命令总结的很全了

罕用Git命令清单一般来说,日常应用只有记住下图6个命令,就能够了。然而纯熟应用,恐怕要记住60~100个命令。 名次解释上面是我整顿的罕用 Git 命令清单。 几个专用名词的译名如下: Workspace: 工作区 Index / Stage: 暂存区 Repository: 仓库区(或本地仓库) Remote:近程仓库 一、新建代码库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个我的项目和它的整个代码历史$ git clone [url]二、配置Git的设置文件为.gitconfig,它能够在用户主目录下(全局配置),也能够在我的项目目录下(我的项目配置) # 显示以后的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]"# 色彩设置git config --global color.ui true                         # git status等命令主动着色git config --global color.status autogit config --global color.diff autogit config --global color.branch autogit config --global color.interactive autogit config --global --unset http.proxy                    # remove  proxy configuration on git三、减少/删除文件# 增加指定文件到暂存区$ git add [file1] [file2] ...# 增加指定目录到暂存区,包含子目录$ git add [dir]# 增加当前目录的所有文件到暂存区$ git add .# 增加每个变动前,都会要求确认# 对于同一个文件的多处变动,能够实现分次提交$ git add -p# 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2] ...# 进行追踪指定文件,但该文件会保留在工作区$ git rm --cached [file]# 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed]四、代码提交# 提交暂存区到仓库区$ git commit -m [message]# 提交暂存区的指定文件到仓库区$ git commit [file1] [file2] ... -m [message]# 提交工作区自上次commit之后的变动,间接到仓库区$ git commit -a# 提交时显示所有diff信息$ git commit -v# 将add和commit合为一步$ git commit -am 'message'# 应用一次新的commit,代替上一次提交# 如果代码没有任何新变动,则用来改写上一次commit的提交信息$ git commit --amend -m [message]# 重做上一次commit,并包含指定文件的新变动$ git commit --amend [file1] [file2] ...五、分支# 列出所有本地分支$ git branch# 列出所有近程分支$ git branch -r# 列出所有本地分支和近程分支$ git branch -a# 新建一个分支,但仍然停留在以后分支$ git branch [branch-name]# 新建一个分支,并切换到该分支$ git checkout -b [branch]# 新建一个分支,指向指定commit$ git branch [branch] [commit]# 新建一个分支,与指定的近程分支建设追踪关系$ git branch --track [branch] [remote-branch]# 切换到指定分支,并更新工作区$ git checkout [branch-name]# 切换到上一个分支$ git checkout -# 建设追踪关系,在现有分支与指定的近程分支之间$ git branch --set-upstream [branch] [remote-branch]# 合并指定分支到以后分支$ git merge [branch]# 抉择一个commit,合并进以后分支$ git cherry-pick [commit]# 删除分支$ git branch -d [branch-name]# 删除近程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]# 检出版本v2.0$ git checkout v2.0# 从近程分支develop创立新本地分支devel并检出$ git checkout -b devel origin/develop# 检出head版本的README文件(可用于批改谬误回退)git checkout -- README 六、标签# 列出所有tag$ git tag# 新建一个tag在以后commit$ git tag [tag]# 新建一个tag在指定commit$ git tag [tag] [commit]# 删除本地tag$ git tag -d [tag]# 删除近程tag$ git push origin :refs/tags/[tagName]# 查看tag信息$ git show [tag]# 提交指定tag$ git push [remote] [tag]# 提交所有tag$ git push [remote] --tags# 新建一个分支,指向某个tag$ git checkout -b [branch] [tag]七、查看信息# 显示有变更的文件$ git status# 显示以后分支的版本历史$ git log# 显示commit历史,以及每次commit产生变更的文件$ git log --stat# 搜寻提交历史,依据关键词$ git log -S [keyword]# 显示某个commit之后的所有变动,每个commit占据一行$ git log [tag] HEAD --pretty=format:%s# 显示某个commit之后的所有变动,其"提交阐明"必须合乎搜寻条件$ git log [tag] HEAD --grep feature# 显示某个文件的版本历史,包含文件改名$ git log --follow [file]$ git whatchanged [file]# 显示指定文件相干的每一次diff$ git log -p [file]# 显示过来5次提交$ git log -5 --pretty --oneline# 显示所有提交过的用户,按提交次数排序$ git shortlog -sn# 显示指定文件是什么人在什么工夫批改过$ git blame [file]# 显示暂存区和工作区的差别$ git diff# 显示暂存区和上一个commit的差别$ git diff --cached [file]# 显示工作区与以后分支最新commit之间的差别$ git diff HEAD# 显示两次提交之间的差别$ git diff [first-branch]...[second-branch]# 显示明天你写了多少行代码$ git diff --shortstat "@{0 day ago}"# 显示某次提交的元数据和内容变动$ git show [commit]# 显示某次提交发生变化的文件$ git show --name-only [commit]# 显示某次提交时,某个文件的内容$ git show [commit]:[filename]# 显示以后分支的最近几次提交$ git reflog八、近程同步# 下载近程仓库的所有变动$ git fetch [remote]# 显示所有近程仓库$ git remote -v# 显示某个近程仓库的信息$ git remote show [remote]# 减少一个新的近程仓库,并命名$ git remote add [shortname] [url]# 取回近程仓库的变动,并与本地分支合并$ git pull [remote] [branch]# 上传本地指定分支到近程仓库$ git push [remote] [branch]# 强行推送以后分支到近程仓库,即便有抵触$ git push [remote] --force# 推送所有分支到近程仓库$ git push [remote] --all九、撤销# 复原暂存区的指定文件到工作区$ git checkout [file]# 复原某个commit的指定文件到暂存区和工作区$ git checkout [commit] [file]# 复原暂存区的所有文件到工作区$ git checkout .# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变$ git reset [file]# 重置暂存区与工作区,与上一次commit保持一致$ git reset --hard# 重置以后分支的指针为指定commit,同时重置暂存区,但工作区不变$ git reset [commit]# 重置以后分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit统一$ git reset --hard [commit]# 重置以后HEAD为指定commit,但放弃暂存区和工作区不变$ git reset --keep [commit]# 新建一个commit,用来撤销指定commit# 后者的所有变动都将被前者对消,并且利用到以后分支$ git revert [commit]# 临时将未提交的变动移除,稍后再移入$ git stash$ git stash pop十、其余git init                                                  # 初始化本地git仓库(创立新仓库)git config --global user.name "xxx"                       # 配置用户名git config --global user.email "xxx@xxx.com"              # 配置邮件git config --global color.ui true                         # git status等命令主动着色git config --global color.status autogit config --global color.diff autogit config --global color.branch autogit config --global color.interactive autogit config --global --unset http.proxy                    # remove  proxy configuration on gitgit clone git+ssh://git@192.168.53.168/VT.git             # clone近程仓库git status                                                # 查看以后版本状态(是否批改)git add xyz                                               # 增加xyz文件至indexgit add .                                                 # 减少以后子目录下所有更改过的文件至indexgit commit -m 'xxx'                                       # 提交git commit --amend -m 'xxx'                               # 合并上一次提交(用于重复批改)git commit -am 'xxx'                                      # 将add和commit合为一步git rm xxx                                                # 删除index中的文件git rm -r *                                               # 递归删除git log                                                   # 显示提交日志git log -1                                                # 显示1行日志 -n为n行git log -5git log --stat                                            # 显示提交日志及相干变动文件git log -p -mgit show dfb02e6e4f2f7b573337763e5c0013802e392818         # 显示某个提交的具体内容git show dfb02                                            # 可只用commitid的前几位git show HEAD                                             # 显示HEAD提交日志git show HEAD^                                            # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本git tag                                                   # 显示已存在的taggit tag -a v2.0 -m 'xxx'                                  # 减少v2.0的taggit show v2.0                                             # 显示v2.0的日志及具体内容git log v2.0                                              # 显示v2.0的日志git diff                                                  # 显示所有未增加至index的变更git diff --cached                                         # 显示所有已增加index但还未commit的变更git diff HEAD^                                            # 比拟与上一个版本的差别git diff HEAD -- ./lib                                    # 比拟与HEAD版本lib目录的差别git diff origin/master..master                            # 比拟近程分支master上有本地分支master上没有的git diff origin/master..master --stat                     # 只显示差别的文件,不显示具体内容git remote add origin git+ssh://git@192.168.53.168/VT.git # 减少近程定义(用于push/pull/fetch)git branch                                                # 显示本地分支git branch --contains 50089                               # 显示蕴含提交50089的分支git branch -a                                             # 显示所有分支git branch -r                                             # 显示所有原创分支git branch --merged                                       # 显示所有已合并到以后分支的分支git branch --no-merged                                    # 显示所有未合并到以后分支的分支git branch -m master master_copy                          # 本地分支改名git checkout -b master_copy                               # 从以后分支创立新分支master_copy并检出git checkout -b master master_copy                        # 下面的完整版git checkout features/performance                         # 检出已存在的features/performance分支git checkout --track hotfixes/BJVEP933                    # 检出近程分支hotfixes/BJVEP933并创立本地跟踪分支git checkout v2.0                                         # 检出版本v2.0git checkout -b devel origin/develop                      # 从近程分支develop创立新本地分支devel并检出git checkout -- README                                    # 检出head版本的README文件(可用于批改谬误回退)git merge origin/master                                   # 合并近程master分支至以后分支git cherry-pick ff44785404a8e                             # 合并提交ff44785404a8e的批改git push origin master                                    # 将以后分支push到近程master分支git push origin :hotfixes/BJVEP933                        # 删除近程仓库的hotfixes/BJVEP933分支git push --tags                                           # 把所有tag推送到近程仓库git fetch                                                 # 获取所有近程分支(不更新本地分支,另需merge)git fetch --prune                                         # 获取所有原创分支并革除服务器上已删掉的分支git pull origin master                                    # 获取近程分支master并merge到以后分支git mv README README2                                     # 重命名文件README为README2git reset --hard HEAD                                     # 将以后版本重置为HEAD(通常用于merge失败回退)git rebasegit branch -d hotfixes/BJVEP933                           # 删除分支hotfixes/BJVEP933(本分支批改已合并到其余分支)git branch -D hotfixes/BJVEP933                           # 强制删除分支hotfixes/BJVEP933git ls-files                                              # 列出git index蕴含的文件git show-branch                                           # 图示以后分支历史git show-branch --all                                     # 图示所有分支历史git whatchanged                                           # 显示提交历史对应的文件批改git revert dfb02e6e4f2f7b573337763e5c0013802e392818       # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818git ls-tree HEAD                                          # 外部命令:显示某个git对象git rev-parse v2.0                                        # 外部命令:显示某个ref对于的SHA1 HASHgit reflog                                                # 显示所有提交,包含孤立节点git show HEAD@{5}git show master@{yesterday}                               # 显示master分支昨天的状态git log --pretty=format:'%h %s' --graph                   # 图示提交日志git show HEAD~3git show -s --pretty=raw 2be7fcb476git stash                                                 # 暂存以后批改,将所有至为HEAD状态git stash list                                            # 查看所有暂存git stash show -p stash@{0}                               # 参考第一次暂存git stash apply stash@{0}                                 # 利用第一次暂存git grep "delete from"                                    # 文件中搜寻文本“delete from”git grep -e '#define' --and -e SORT_DIRENTgit gcgit fsck# 生成一个可供公布的压缩包$ git archive我的项目举荐:2000多G的计算机各行业电子资源分享(继续更新) 2020年微信小程序全栈我的项目之喵喵交友【附课件和源码】 Spring Boot开发小而美的集体博客【附课件和源码】 Java微服务实战296集大型视频-谷粒商城【附代码和课件】 Java开发微服务畅购商城实战【全357集大我的项目】-附代码和课件 最全最具体数据结构与算法视频-【附课件和源码】

February 1, 2021 · 1 min · jiezi

关于git:git简单操作

setting username and email git config --global user.name "wuquanan"git config --global user.email "382633764@qq.com"Create a new repository git clone http://192.168.0.106/oldfitshow/server.git#git clone -c core.longpaths=true http://192.168.0.106/oldfitshow/server.gitcd servertouch README.mdgit add README.mdgit commit -m "add README"git push -u origin masterPush an existing folder cd existing_foldergit initgit remote add origin http://192.168.0.106/oldfitshow/server.gitgit add .git commit -m "Initial commit"git push -u origin masterPush an existing Git repository cd existing_repogit remote rename origin old-origingit remote add origin http://192.168.0.106/oldfitshow/server.gitgit push -u origin --allgit push -u origin --tags

February 1, 2021 · 1 min · jiezi

关于git:git安装教程

1.电脑系统 windows10专业版2.在开发的过程中,咱们会应用到git来治理我的项目。上面我来分享一下git的装置教程。3.置信下载过git的小伙伴们都晓得,在git官网下载git装置会比较慢,在这里我给大家举荐另外一种办法,自己笔记本是联想的,我在这里应用的是联想利用商城,在这里下载git还是很快的。4.装置界面5.抉择装置门路,点击下一步。6.抉择装置组件,在这里举荐全选7.批改零碎的环境变量8.配置终端应用形式 这里倡议抉择第二个,windows上自带简略的的原生态的通常能够很好的工作,但交互性更好的诸如MinTTY这样的应用程序却可能呈现故障——比方在装置一个货色的时候,如果不应用自带的就是装置失败或报错。9.其余的配置默认就能够。10.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰。

January 31, 2021 · 1 min · jiezi

关于git:GIT急救包3

一、新建代码库**在当前目录新建一个Git代码库 ** $ git init **新建一个目录,将其初始化为Git代码库 ** $ git init \[project-name\] **下载一个我的项目和它的整个代码历史** $ git clone \[url\]二、配置Git的设置文件为.gitconfig,它能够在用户主目录下(全局配置),也能够在我的项目目录下(我的项目配置)。 **显示以后的Git配置** $ git config --list **编辑Git配置文件** $ git config -e \[--global\] **设置提交代码时的用户信息 ** $ git config \[--global\] user.name "\[name\]" $ git config \[--global\] user.email "\[email address\]"三、减少/删除文件**增加指定文件到暂存区 **$ git add \[file1\] \[file2\] ... **增加指定目录到暂存区,包含子目录** $ git add \[dir\] **增加当前目录的所有文件到暂存区 ** $ git add . 增加每个变动前,都会要求确认 **对于同一个文件的多处变动,能够实现分次提交** $ git add -p **删除工作区文件,并且将这次删除放入暂存区** $ git rm \[file1\] \[file2\] ... **进行追踪指定文件,但该文件会保留在工作区** $ git rm --cached \[file\] **改名文件,并且将这个改名放入暂存区 **$ git mv \[file-original\] \[file-renamed\]四、代码提交# 提交暂存区到仓库区 $ git commit -m [message] # 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变动,间接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 应用一次新的commit,代替上一次提交 # 如果代码没有任何新变动,则用来改写上一次commit的提交信息 $ git commit --amend -m [message] # 重做上一次commit,并包含指定文件的新变动 $ git commit --amend [file1] [file2] ...五、分支# 列出所有本地分支 $ git branch # 列出所有近程分支 $ git branch -r # 列出所有本地分支和近程分支 $ git branch -a # 新建一个分支,但仍然停留在以后分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的近程分支建设追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建设追踪关系,在现有分支与指定的近程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到以后分支 $ git merge [branch] # 抉择一个commit,合并进以后分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除近程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]六、标签# 列出所有tag $ git tag # 新建一个tag在以后commit $ git tag [tag] # 新建一个tag在指定commit $ git tag [tag] [commit] # 删除本地tag $ git tag -d [tag] # 删除近程tag $ git push origin :refs/tags/[tagName] # 查看tag信息 $ git show [tag] # 提交指定tag $ git push [remote] [tag] # 提交所有tag $ git push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]七、查看信息# 显示有变更的文件 $ git status # 显示以后分支的版本历史 $ git log # 显示commit历史,以及每次commit产生变更的文件 $ git log --stat # 搜寻提交历史,依据关键词 $ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交阐明"必须合乎搜寻条件 $ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包含文件改名 $ git log --follow [file] $ git whatchanged [file] # 显示指定文件相干的每一次diff $ git log -p [file] # 显示过来5次提交 $ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么工夫批改过 $ git blame [file] # 显示暂存区和工作区的差别 $ git diff # 显示暂存区和上一个commit的差别 $ git diff --cached [file] # 显示工作区与以后分支最新commit之间的差别 $ git diff HEAD # 显示两次提交之间的差别 $ git diff [first-branch]...[second-branch] # 显示明天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变动 $ git show [commit] # 显示某次提交发生变化的文件 $ git show --name-only [commit] # 显示某次提交时,某个文件的内容 $ git show [commit]:[filename] # 显示以后分支的最近几次提交 $ git reflog八、近程同步# 下载近程仓库的所有变动 $ git fetch [remote] # 显示所有近程仓库 $ git remote -v # 显示某个近程仓库的信息 $ git remote show [remote] # 减少一个新的近程仓库,并命名 $ git remote add [shortname] [url] # 取回近程仓库的变动,并与本地分支合并 $ git pull [remote] [branch] # 上传本地指定分支到近程仓库 $ git push [remote] [branch] # 强行推送以后分支到近程仓库,即便有抵触 $ git push [remote] --force # 推送所有分支到近程仓库 $ git push [remote] --all九、撤销# 复原暂存区的指定文件到工作区 $ git checkout [file] # 复原某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file] # 复原暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置以后分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置以后分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit统一 $ git reset --hard [commit] # 重置以后HEAD为指定commit,但放弃暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变动都将被前者对消,并且利用到以后分支 $ git revert [commit] # 临时将未提交的变动移除,稍后再移入 $ git stash $ git stash pop十、其余# 生成一个可供公布的压缩包 $ git archive

January 28, 2021 · 2 min · jiezi

关于git:GIT急救包2

咱们书接上文 ↓↓↓六:创立与合并分支。在版本回退里,你曾经晓得,每次提交,Git都把它们串成一条工夫线,这条工夫线就是一个分支。截止到目前,只有一条工夫线,在Git里,这个分支叫主分支,即main分支。HEAD严格来说不是指向提交,而是指向main,mian才是指向提交的,所以,HEAD指向的就是以后分支。 首先,咱们来创立dev分支,而后切换到dev分支上。如下操作:咱们当初在readme.txt再减少一行 7777777777777 当初dev分支工作已实现,当初咱们切换到主分支main上,持续查看readme.txt内容如下:当初咱们能够把dev分支上的内容合并到分支main上了,能够在mian分支上,应用如下命令 git merge dev, 是指将dev合并到以后分支中 如下所示:留神到下面的_Fast-forward_信息,Git通知咱们,这次合并是“快进模式”,也就是间接把main指向dev的以后提交,所以合并速度十分快。合并实现后,咱们能够接着删除dev分支了,操作如下: 1. 如何解决抵触? 上面咱们还是一步一步来,先新建一个新分支,比方名字叫zhangsan,在readme.txt增加一行内容8888888,而后提交,如下所示:同样,咱们当初切换到main分支上来,也在最初一行增加内容,内容为99999999,如下所示: 当初就会呈现一个问题,main和zhangsan分支都批改了同一部份得内容,在合并时就会呈现抵触。Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支批改的内容,>>>>>zhangsan 是指被合并分支上批改的内容,咱们能够批改下如下后保留 如果我想查看分支合并的状况的话,须要应用命令 git log.命令行演示如下: 2.分支管理策略。 通常合并分支时,git个别应用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,当初咱们来应用带参数 –no-ff来禁用”Fast forward”模式。首先咱们来做demo演示下: 创立一个dev分支。批改readme.txt内容。增加到暂存区。切换回主分支(main)。合并dev分支,应用命令 git merge –no-ff  -m “正文” dev查看历史记录截图如下:

January 28, 2021 · 1 min · jiezi

关于git:git配置多个SSHKey

咱们在日常工作中会遇到同一台服务器部署多个放在github上的利用,这样咱们就须要配置不同的ssh-key对应不同的环境。1,生成ssh-keyssh-keygen -t rsa -C 'youremail@your.com' -f ~/.ssh/xxx_rsa 2,将xxx_rsa.pub中的内容增加到本人的github中。cat ~/.ssh/xxx_rsa.pub 3,增加到github 4,进入到~/.ssh目录下新建config文件,用编辑器关上config文件并增加内容# xx1我的项目Host github-tm.com # 拜访git网址的域名 HostName github.com # git官网地址,都是github.com User git IdentityFile /root/.ssh/id_rsa # rsa绝对路径# xx2我的项目Host github-dk.com HostName github.com User git IdentityFile /root/.ssh/xiaoke_rsa 5,测试ssh -T git@github-xxx.com 6,Git命令clone我的项目git clone git@github-xxx.com:leadson/xxx.git

January 28, 2021 · 1 min · jiezi

关于git:Git使用详细介绍按步骤

Git相干操作 1.初始化本地git目录git init 2.创立一个分支git checkout -b issue#123 3.查看以后批改状态git status 4.增加某个批改文件到gitgit add <file> 5.批量增加批改文件到gitgit add --all 6.提交批改到分支‘正文’(本地分支)git commit -m '新增test页面' 推送本地分支到近程仓库7.1 增加origin(近程仓库在git中称为origin)(如果是曾经先从近程仓库把master分支拉到了本地,则不须要增加origin,跳过这个步骤) git remote add origin https://github.com/roseking9/dct-h5.git7.2push到近程仓库 git push origin issue#123Git checkout masterGit pullGit checkout -b issue#171开发:Git add —allgit commit -m ‘正文’ 若合并代码(个别是合并master的最新代码)Git checkout masterGit pullGit checkout issue#171git merge master 若呈现代码抵触,屏幕输入蕴含Conflict的内容手动解决抵触(可通过git status命令查看具体抵触的文件列表)Git add —allGit commit 提交到近程仓库分支Git push origin issue#171 8.确定以后应用的是是哪个分支在开发git branch !!dangerous 提交织分支了❌9.查看提交记录git log

January 27, 2021 · 1 min · jiezi

关于git:GIT急救包

前言既然曾经再用git了,这里就不再陈说git是啥优缺点什么的,间接和我一起来学习一下吧。 在日常工作中防止不了的要接触git,常常会呈现一些问题,比方: 每次提交拉取代码的命令都是一样的,都是什么意思?为什么要这么写?当在其余分支提交织代码怎么办?当你想返回上一步怎么办?某一步命令敲错了,放心会影响到他人怎么办?本地库、近程库啥关系?一、装置git官网下载速度是比较慢的,这里分享一个淘宝镜像下载链接https://npm.taobao.org/mirrors/git-for-windows/v2.30.0.windows.2/ 间接默认装置就能够;装置实现后,还须要最初一步设置(ssh的另算),在命令行输出如下: git config --global user.name "xxxxxx"git config --global user.email "xxxxxx"留神:git config  --global 参数,有了这个参数,示意你这台机器上所有的Git仓库都会应用这个配置,当然你也能够对某个仓库指定的不同的用户名和邮箱 二、应用一:创立版本库 什么是版本库?版本库又名仓库,英文名repository,你能够简略的了解为一个目录,这个目录外面的所有文件都能够被Git治理起来,每个文件的批改,删除,Git都能跟踪,以便任何时刻都能够追踪历史,或者在未来某个时刻还能够将文件”还原”。如果我门创立的版本库的名字example: 通过命令 git init 把这个目录变成git能够治理的仓库,如下:这时候你以后example目录下会多了一个.git的目录,这个目录是Git来跟踪治理版本的,没事千万不要手动荡改这个目录外面的文件,否则,会把git仓库给毁坏了。如下: 把文件增加到版本库中。首先要明确下,所有的版本控制系统,只能跟踪文本文件的改变,比方txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统能够通知你每次的改变,然而图片,视频这些二进制文件,虽能也能由版本控制系统治理,但没法跟踪文件的变动,只能把二进制文件每次改变串起来,也就是晓得图片从1kb变成2kb,然而到底改了啥,版本控制也不晓得。 上面先看下demo如下演示: 我在版本库testgit目录下新建一个记事本文件 readme.txt 内容如下:11111111 第一步:应用命令 git add readme.txt增加到暂存区外面去。如下: 没有任何提醒,阐明曾经增加胜利了。 第二步:用命令 git commit通知Git,把文件提交到仓库。当初咱们曾经提交了一个readme.txt文件了,咱们上面能够通过命令git status来查看是否还有文件未提交,如下:除了未跟踪的文件,没有可提交的内容。然而我当初持续来改下readme.txt内容,比方我在上面增加一行2222222222内容,持续应用git status来查看下后果,如下:下面的命令通知咱们 readme.txt文件已被批改,然而未被提交。 接下来我想看下readme.txt文件到底改了什么内容,如何查看呢?能够应用如下命令: git diff readme.txt 如下: 如上能够看到,readme.txt文件内容从一行11111111改成 二行 增加了一行22222222内容。 晓得了对readme.txt文件做了什么批改后,咱们能够释怀的提交到仓库了,提交批改和提交文件是一样的2步(第一步是git add 第二步是:git commit)。 如下:

January 26, 2021 · 1 min · jiezi

关于git:Git常用操作

1. 撤销本地未提交commit场景形容: 1、本地批改了一堆文件2、git add / git commit 很快乐的将代码提交到本地仓库了3、打算git push的时候,发现不小心增加了不想要提交的文件4、查看git log曾经产生了一条git commit记录5、接下来就开始撤销开始撤销commit记录 git log 查看以后分支的历史记录2、找到你想复原到的ID,而后 git rest --mixed ID 3、这样就复原到了提交之前的状态。被批改提交的文件会被寄存在暂存区中。git reset 指令 git reset(--mixed) HEAD~1 head树回到上个版本,index树也回到上个版本回退一个版本,会将暂存区的内容和本地已提交的内容全副复原到未暂存的状态。git reset --hard HEAD~1 三棵树都回到上个版本回退一个版本,清空暂存区,将已提交的内容的版本复原到本地,本地的文件也将被复原的版本替换git reset --soft HEAD~1 head树回到上个版本回退一个版本,不清空暂存区,将已提交的内容复原到暂存区,不影响原来本地的文件(未提交的也不受影响)HEAD~1 回退到上个版本HEAD~3 回退到前三个版本(指向父节点的指针挪动三次)2. git commit后发现msg写错或者少了提交几个文件场景形容: 1、本地批改了一堆文件2、git add / git commit 很快乐的将代码提交到本地仓库了3、打算git push的时候,发现有局部代码未提交/msg写的不优雅解决 1、把新的文件增加到暂存区2、git commit的时候勾选Amend3、填写新的msg 而后commit4、查看git log 发现只有新的这一次commit3、以后分支工作一半,须要切换的新的分支进行工作1. git stash 暂存区的文件储藏起来2. 切换分支3. 解决完新分支后回到之前的分支4. git stash apply 将储藏的文件从新利用5. git stash drop 0 移除刚刚储藏的文件git stash 相干指令 git stash list 显示队列git stash apply [index] 将指定的储藏的文件从新利用git stash drop [index] 移除指定储藏的文件4、 创立新分支,从指定拉取代码1.创立新分支,个别从mater拉取2.git pull origin [branchName]3.push到新分支5、reset 的原理http://git-scm.com/book/zh/v2...6、合并某个分支上的指定commit场景形容 ...

January 26, 2021 · 1 min · jiezi

关于git:vscode常用快捷键

命令行 ctrl+shift+pf1setting.json 命令行搜寻 - settings json

January 24, 2021 · 1 min · jiezi

关于git:Clone

第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步:配置我的项目应用的jdk版本 2. 第八步:导入maven

January 23, 2021 · 1 min · jiezi

关于git:Github加速clonepushpull

Github减速因为家喻户晓的起因,clone、push代码会十分的慢,我依据我的应用经验总结了以下一些减速形式,心愿能帮忙有须要的搭档。第一种、应用网络代理工具如:proxychains 阐明:具体应用形式百度第二种、应用代理:阐明:该模式必须有代理 如何获取并应用代理请百度1、https模式:应用如下命令配置用户级代理: git config --global http.proxy http://127.0.0.1:1235git config --global https.proxy http://127.0.0.1:1235或 git config --global http.https://github.com.proxy http://127.0.0.1:1235git config --global https.https://github.com.proxy http://127.0.0.1:1235配置实现当前就能够欢快的clone、pull、push了 阐明:1)、下面一种 git 会全副代理到本机1235这个端口2)、上面一种仅 github.com 的会代理到本机1235这个端口 倡议应用上面的这种留神:1)、用户级Git配置文件默认地位:~/.gitconfig2)、端口:端口为你本地代理软件监听的端口3)、这种代理可能会导致代理软件无奈启动,如Mac的ClashX。 因为git用户级配置文件中的端口与代理软件监听的端口反复导致。可先启动代理软件,再批改Git配置,但重启又会呈现该问题。暂无好计划解决。2、SSH模式 批改用户级ssh config配置文件,文件地位:~/.ssh/config增加以下内容: Host github.comUser gitHostName github.comProxyCommand nc -v -x 127.0.0.1:1235 %h %p阐明:1)、端口:端口为你本地代理软件监听的端口第三种、应用代理仓库+代理应用代理仓库 github.com.cnpmjs.org 该形式clone时有奇效 但仅反对https模式 留神:该形式clone仅反对https模式,不反对SSH模式1、复制https模式的clone地址:如 https://github.com/vuejs/vue.git2、把连贯中的github.com替换为github.com.cnpmjs.org失去以下连贯如:https://github.com.cnpmjs.org/vuejs/vue.git3、而后间接: git clone https://github.com.cnpmjs.org/vuejs/vue.git 速度腾飞!4、操作完以上push、pull还是会很慢须要借助代理进行减速,需配置我的项目级的代理 git config http.proxy http://127.0.0.1:1235git config https.proxy http://127.0.0.1:1235或 git config http.https://github.com.proxy http://127.0.0.1:1235git config https.https://github.com.proxy http://127.0.0.1:1235实现当前就能够欢快的pull、push了 阐明:1)、该命令必须在对应的我的项目下执行1)、我的项目级Git配置文件默认地位:我的项目根目录/.git/config2)、端口:端口为你本地代理软件监听的端口3)、如何获取并应用代理请百度第四种、其余还有如:批改host、 借助gitee等国内Git服务等形式也均可,但都有肯定缺点有趣味可百度。附 git config配置文件权限优先级 :我的项目级 > 以后用户配置(全局) > 零碎级即:各配置项中的有雷同配置属性时按这个优先级应用,默认地位及阐明我的项目级配置文件 .git/config 应用 --file 选项批改 Git 默认此选项 该文件中的设置具备最高优先级。用户级配置文件 ~/.gitconfig 应用 --global选项批改。零碎级配置文件 /etc/gitconfig 应用 --system 选项批改,此文件中的设置优先级最低。

January 23, 2021 · 1 min · jiezi

关于git:git-常用命令

仓库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个我的项目和它的整个代码历史$ git clone [url] 配置# 显示以后的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]" 减少/删除文件# 增加指定文件到暂存区$ git add [file1] [file2] ...# 增加指定目录到暂存区,包含子目录$ git add [dir]# 增加当前目录的所有文件到暂存区$ git add .# 增加每个变动前,都会要求确认# 对于同一个文件的多处变动,能够实现分次提交$ git add -p# 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2] ...# 进行追踪指定文件,但该文件会保留在工作区$ git rm --cached [file]# 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed] 代码提交# 提交暂存区到仓库区$ git commit -m [message]# 提交暂存区的指定文件到仓库区$ git commit [file1] [file2] ... -m [message]# 提交工作区自上次commit之后的变动,间接到仓库区$ git commit -a# 提交时显示所有diff信息$ git commit -v# 应用一次新的commit,代替上一次提交# 如果代码没有任何新变动,则用来改写上一次commit的提交信息$ git commit --amend -m [message]# 重做上一次commit,并包含指定文件的新变动$ git commit --amend [file1] [file2] ... 分支# 列出所有本地分支$ git branch# 列出所有近程分支$ git branch -r# 列出所有本地分支和近程分支$ git branch -a# 新建一个分支,但仍然停留在以后分支$ git branch [branch-name]# 新建一个分支,并切换到该分支$ git checkout -b [branch]# 新建一个分支,指向指定commit$ git branch [branch] [commit]# 新建一个分支,与指定的近程分支建设追踪关系$ git branch --track [branch] [remote-branch]# 切换到指定分支,并更新工作区$ git checkout [branch-name]# 切换到上一个分支$ git checkout -# 建设追踪关系,在现有分支与指定的近程分支之间$ git branch --set-upstream [branch] [remote-branch]# 合并指定分支到以后分支$ git merge [branch]# 抉择一个commit,合并进以后分支$ git cherry-pick [commit]# 删除分支$ git branch -d [branch-name]# 删除近程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch] 标签# 列出所有tag$ git tag# 新建一个tag在以后commit$ git tag [tag]# 新建一个tag在指定commit$ git tag [tag] [commit]# 删除本地tag$ git tag -d [tag]# 删除近程tag$ git push origin :refs/tags/[tagName]# 查看tag信息$ git show [tag]# 提交指定tag$ git push [remote] [tag]# 提交所有tag$ git push [remote] --tags# 新建一个分支,指向某个tag$ git checkout -b [branch] [tag] 查看信息# 显示有变更的文件$ git status# 显示以后分支的版本历史$ git log# 显示commit历史,以及每次commit产生变更的文件$ git log --stat# 搜寻提交历史,依据关键词$ git log -S [keyword]# 显示某个commit之后的所有变动,每个commit占据一行$ git log [tag] HEAD --pretty=format:%s# 显示某个commit之后的所有变动,其"提交阐明"必须合乎搜寻条件$ git log [tag] HEAD --grep feature# 显示某个文件的版本历史,包含文件改名$ git log --follow [file]$ git whatchanged [file]# 显示指定文件相干的每一次diff$ git log -p [file]# 显示过来5次提交$ git log -5 --pretty --oneline# 显示所有提交过的用户,按提交次数排序$ git shortlog -sn# 显示指定文件是什么人在什么工夫批改过$ git blame [file]# 显示暂存区和工作区的差别$ git diff# 显示暂存区和上一个commit的差别$ git diff --cached [file]# 显示工作区与以后分支最新commit之间的差别$ git diff HEAD# 显示两次提交之间的差别$ git diff [first-branch]...[second-branch]# 显示明天你写了多少行代码$ git diff --shortstat "@{0 day ago}"# 显示某次提交的元数据和内容变动$ git show [commit]# 显示某次提交发生变化的文件$ git show --name-only [commit]# 显示某次提交时,某个文件的内容$ git show [commit]:[filename]# 显示以后分支的最近几次提交$ git reflog 近程同步# 下载近程仓库的所有变动$ git fetch [remote]# 显示所有近程仓库$ git remote -v# 显示某个近程仓库的信息$ git remote show [remote]# 减少一个新的近程仓库,并命名$ git remote add [shortname] [url]# 取回近程仓库的变动,并与本地分支合并$ git pull [remote] [branch]# 上传本地指定分支到近程仓库$ git push [remote] [branch]# 强行推送以后分支到近程仓库,即便有抵触$ git push [remote] --force# 推送所有分支到近程仓库$ git push [remote] --all 撤销# 复原暂存区的指定文件到工作区$ git checkout [file]# 复原某个commit的指定文件到暂存区和工作区$ git checkout [commit] [file]# 复原暂存区的所有文件到工作区$ git checkout .# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变$ git reset [file]# 重置暂存区与工作区,与上一次commit保持一致$ git reset --hard# 重置以后分支的指针为指定commit,同时重置暂存区,但工作区不变$ git reset [commit]# 重置以后分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit统一$ git reset --hard [commit]# 重置以后HEAD为指定commit,但放弃暂存区和工作区不变$ git reset --keep [commit]# 新建一个commit,用来撤销指定commit# 后者的所有变动都将被前者对消,并且利用到以后分支$ git revert [commit]临时将未提交的变动移除,稍后再移入$ git stash$ git stash pop 其余# 生成一个可供公布的压缩包$ git archive

January 22, 2021 · 2 min · jiezi

关于git:git-bash清屏命令

1.开发环境vue2.电脑系统windows10专业版3.在开发的过程中,咱们常常会应用到git bash进行一些操作,上面我来分享一下应用git bash进行清屏,心愿对你有所帮忙。4.废话不多说,间接上操作: // 在 git bash中增加如下代码: reset //而后敲回车,完事5.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一一起致力走向巅峰。

January 22, 2021 · 1 min · jiezi

关于git:git-操作之打tag

个别我的项目上线当前须要打tag,为了不便当前出问题回滚(集体了解),能有清晰的版本号,也就是作为一个清晰的标记。 一顿操作当前切换到master:git checkout mastergit tag(查看标签)git tag -a v1.4.2 -m 'annotation'ps:v1.4.2为你这次打tag要标记的版本号,annotation为tag的正文不便当前查看git push origin v1.4.2 (把分支推送到近程上)既然下面说到了打tag是为了做个标记,预防万一。毕竟谁还没有个万一(连忙去买彩票,万一呢)。当初来说说万一,代码出问题了,咱们须要回滚到某个指定的tag版本。 1.查看分支:git branch2.切换分支:git checkout master3.查看标签(tag版本): git tag4.查看某个标签的详情:git show v1.4.2,如下图:5.通过commit的id回退:git reset --hard d35cb0b72fd0536.查看状态:git status7.提交:git push origin master8.或者退出-f参数,强制提交,近程端将强制跟新到reset版本:git push -f origin master

January 22, 2021 · 1 min · jiezi

关于git:Git-完整概念的基本学习

前言Git 根本介绍和学习在正式学习 Git 之前,咱们有必要的理解以下常识: KernelShellGit BashKernel将软件收回的数据转移成数据处理的指令,并提交给 CPU 及电脑中的其余电子组件解决,Kernel 是古代操作系统最根本的局部。 一种为泛滥应用程序提供平安拜访计算机硬件的软件,这种拜访是无限的,并且由 Kernel 决定一个程序在什么时候对某局部硬件操作多长时间。 严格地说:内核并不是计算机系统中必要的组成部分。有些程序能够间接地被调入计算机中执行; 这样的设计,阐明了设计者不心愿提供任何硬件形象和操作系统的反对;它常见于晚期计算机系统的设计中。 但随着电脑技术的倒退,最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器内核当中,或者写入在只读记忆体里。 这些变动产生时,操作系统内核的概念就慢慢清晰起来了! 更多参见:参见:Wiki Shell-Wiki-Baidu基本概念Shell 俗称:“壳”,用来和 Kernel (内核)辨别。 Shell 是指:为使用者提供操作界面的应用程序(软件)。 对于大多数状况来说,Shell 这个词是指:在 OS(Operation System)中,为拜访 Kernel 所提供的一种服务程序,当前如果不特地注明,则 Shell 指的就是命令行式 Shell。 不过,Shell 也可用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的界面(GUI),与之绝对的是:Kernel,Kernel 不提供和用户的交互性能。 因而,Shell 通常分为两类: 命令行与图形界面,命令行 Shell 提供一个命令行界面(CLI)图形用户界面(GUI)图释 命令行式 Shell命令行式 Shell 有:bash / sh / ksh / csh / zsh(Unix/linux 零碎)等。 最为人熟知的命令行 Shell,应该就是 Windows 的 CMD 界面。 传统意义上,Shell 指的是命令行式 Shell,而不是图形用户界面 Shell,当前如果不特地注明,则 Shell 指的就是命令行式 Shell。 Shell 是操作系统的最外层,它治理用户与操作系统之间的交互,为用户提供拜访 OS Kernel 的办法。 ...

January 21, 2021 · 3 min · jiezi

关于git:gitlabflow-用于团队协作开发的分支管理工具分支模型类似与-gitflow

https://github.com/yeqown/gitlab-flow一个 CLI 工具,可帮忙治理 gitlab 上的开发流程。 这和 git-flow 之间的区别在于 gitlab-flow 将操作近程( gitlab )资源,例如:里程碑,问题,合并申请和分支。 重要的是,如果您的团队一起应用 gitlab-flow,则 gitlab-flow 能够通过应用 MilestoneId 或交互模式来帮忙您同步其余开发数据。 另外,gitlab-flow 还提供了 dashboard 能力,不便查看一次迭代的所有相干数据,也能够在浏览器中关上以后我的项目,无效的进步了开发效率,将工夫都花在编码上。 分支模型如下: 代码架构如下: 用法实例# 开始一次迭代,会创立 feature 分支,里程碑(里程碑应用迭代名=feature-name )# --web 是说关上浏览器,在配置文件中也有这一开关flow2 --web --debug feature open feature-name feature-1-description# 开启一个 issue,用于开发性能,会创立 issue 分支,issueflow2 feature open-issue issue-name issue-description# 敞开一个 issue,当性能开发结束合并到 feature 分支时,会创立 issue 到 feature 的 MR# issue branch 和 feature branch 是可选项,默认依据以后分支名获得flow2 feature close-issue [-i issue-branch-name] [-f feature-branch-name]# 在控制台打印我的项目的根本信息,并关上浏览器flow2 --web dash project目前曾经稳固应用中,放到 github 经验了代码重构和新的性能迭代。???????????? 欢送大家应用,倡议,PR ???????????? ...

January 21, 2021 · 1 min · jiezi

关于git:GIT

1、新建我的项目 2、创立 3、增加 4、上传本地仓库 5、上传git仓库 上传

January 20, 2021 · 1 min · jiezi

关于git:CentOS-7-后台克隆远程库

引子解决 CentOS 7 下 Git 超时后,发现库还是太大,要花费比拟长的工夫,还是让其在后盾运行比拟好,这样不必始终放弃登录。找了下材料,总结一下。 OriginMy GitHub相干知识点ShellShell 是一种命令语言,也是一种程序设计语言。它是用户应用 Linux 的桥梁。Shell 脚本,是一种为 Shell 编写的脚本程序。Shell 脚本编程跟 JavaScript 一样,只有有一个能写代码的文本编辑器和一个能解释执行的脚本解释器就能够了。Linux 的 Shell 品种很多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh)Bourne Again Shell(/bin/bash)C Shell(/usr/bin/csh)K Shell(/usr/bin/ksh)Shell for Root(/sbin/sh)Linux nohup 命令nohup 全称是 no hang up ,也就是不挂起的意思,用于在零碎后盾不挂断地运行命令,退出终端也不会影响程序的运行。 nohup 命令,在默认状况下(非重定向时),会输入一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输入重定向到 $HOME/nohup.out 文件中。 语法格局: nohup Command [Arg…] [&]Command:要执行的命令。Arg:参数,能够指定输入文件。&:让命令后盾执行。更多内容见这里。 实现形式写一个脚本,而后让其后盾运行。 git.sh 脚本内容很简略: echo 'git clone start'git clone https://github.com/XXx/xxx.gitecho 'git clone end'在非可视化终端操作程序: # 创立文件> git.sh# 编辑文件vim git.sh# 执行脚本nohup ./git.sh &执行的时候呈现了提醒: nohup: 无奈运行命令"./git.sh": 权限不够增加权限: ...

January 18, 2021 · 1 min · jiezi

关于git:git上传代码到远程仓库附生成秘钥

1. 一开始应用git时,可能要应用到相干的密钥生成秘钥的办法:(1)ssh-keygen -t rsa -C "github注册的邮箱名" 随后始终enter就好,提醒输出明码可输可不输(2)cat ~/.ssh/id_rsa.pub(生成的这个货色用于在github上 增加秘钥) 头像 -> settings -> SSH&GPGkeys 来到这里就会有如下图一样的界面(只不过没增加之前是空的) 随后点击New SSH key,把第(2)步生成的秘钥增加进去即可2. 接下来是利用git brash来把本地代码上传到 github的近程仓库的步骤:(1)创立本地仓库 如果在你的我的项目中没有相似于下图的.git文件夹 则能够在以后的我的项目目录下鼠标右键,点击git brash here输出命令git init来建设本地仓库(2)把本地代码增加进第(1)步的本地仓库中 git add . (留神:是add 空格 加上一个点)git commit -m "分支名"(3)在本地仓库中建设一个与近程仓库的别名 git remote add 近程仓库的别名 近程库的地址近程库的地址示意有好几种(如下图:HTTPS,SSH...)我抉择的是SSH 查看近程仓库的别名:git remote -v(4)提交本地代码到近程仓库中 创立分支:git branch 分支名切换分支:git checkout 分支名创立并切换分支:git checkout -b 分支名一般来说能够依据每个对应局部的性能创立对应的新分支比方你这个局部打算是做创立组件的操作能够先新建分支 git branch createComponents而后切换到该分支 git checkout createComponents(也可用git checkout -b命令能够一步到位:git checkout -b createComponents)编写完此分支后,将其push到近程仓库中:git push 近程仓库的别名 该分支名(git checkout -b origin createComponents)在开发中可能用的比拟多的模式是:一个主分支,一个开发分支在本人创立的分支编写完后,能够先合并到开发分支上,再提交到近程仓库中一些git的常用命令: ...

January 15, 2021 · 1 min · jiezi

关于git:git-经验谈三团队分支管理

这篇文章是 git 系列第三篇,想介绍一下团队分支的治理。在咱们的开发工作中,为了对流程进行更好的治理,更好地交付产品,应该充沛地利用分支这个性能。这里我想介绍一下本人认为比拟齐备的、通用的 git 分支管理策略。开始之前,要先阐明一下我认为的“通用”是针对什么样的开发流程的,它的特点如下: 有固定的迭代周期,个别是两周。每个迭代完结后进行一次产品公布。迭代周期中不公布产品,除非是 hotfix / 紧急问题。产品只有一个主版本。大多数基于 web 的产品都是这样的,不合乎这个条件的产品个别是针对不同客户、国家等条件同时保护着多个正式版本。上面就列一个表格来说一下具体的分支划分: 分支名阐明dev开发工作的主分支。迭代开始时,每个开发人员从这个分支创立本人开发工作的 feature 分支;迭代周期的开发工作完结时,用这个分支的代码进行产品公布。(你可能感觉从 dev 分支公布产品有点问题,我在前面做解释)master线上产品代码的分支。产品公布后,dev 分支的代码被 merge 到这个分支。当线上呈现紧急问题,须要进行 hotfix 时,从这个分支创立 hotfix 分支。f_xxx以“f_”结尾的开发工作分支,也叫 feature 分支。从 dev 分支创立,开发工作实现后 merge 到 dev 分支。hotfix_xxx以“hotfix_”结尾的 hotfix 分支。从 master 分支创立;通过公布此分支修复线上紧急问题。问题修复后,要把以后 hotfix 分支的代码 merge 到 master 和 dev 分支。依据表格中的形容,理论开发中的 git 流程会是这个样子: 那么依照这个治理形式,测试是如何进行的呢?首先是随着 feature 分支的开发实现,测试工程师在 dev 分支上进行对应的功能测试;hotfix 的测试要在 hotfix 分支上进行,不能在合并后的 dev 分支上进行;feature 分支和 hotfix 分支都合并到 dev 分支后在 dev 分支进行针对用户体验和产品流程的测试。 最初,产品 / 紧急修复公布后,别忘了在 master 分支打 tag。 ...

January 15, 2021 · 1 min · jiezi

关于git:如果为jenkins中的git-Check-out-from-version-control启用代理

自从被迫舍弃了优越、稳固、网络好的travis后,开始了折腾jenkins之路。一路折腾,一路踩坑。这其中最大、最难爬的坑要属网络。感激相干部门让咱们处在这么一个网络环境中,这无疑对晋升咱们的网络程度是相当有帮忙的。 代理咱们晓得,解决网络的最无效的不便是应用非一般代理。让数据通过代理github、maven、npm等资源连贯,从而解决慢网络的问题。 本文的重点并不在于如何装置应用代理。假如咱们曾经装置了本机代理,信息为:http://127.0.0.1:9789 配置git代理git提供了git config --global命令来设置全局配置,我的了解是:近程登录服务器后,执行:git config --global http.proxy http://127.0.0.1:9789后,应该对于所有的用户都失效,包含jenkins主动应用git进行代码检出的用户。 但大失所望,照此思路无论怎么尝试最终还是无奈晋升jenkins要应用git时的检出速度。 还有相干的材料举荐将一些插件,或者间接将jenkins跑在代理前面的,或者设置timeout的最大工夫阀值的,均为达到心中的现实值。 最初猜想或者jenkins在与服务器交互时,并没有应用服务器设置的相干环境变量,而是齐全应用的本人的。 于是来到了jenkins设置中的环境变量设置: 小手一抖保留,rebuild,疾速通过,git代理失效。

January 15, 2021 · 1 min · jiezi

关于git:merge-noff-区别于-merge

能够看出merge --no-ff 会比 merge (fast forward) 在查看记录上更清晰(能够看出来源于哪个分支的合并以及不会净化主分支上的提交)

January 14, 2021 · 1 min · jiezi

关于git:常用Git命令

几个专用名词的译名如下:Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:近程仓库 一、新建代码库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个我的项目和它的整个代码历史$ git clone [url]二、配置Git的设置文件为.gitconfig,它能够在用户主目录下(全局配置),也能够在我的项目目录下(我的项目配置) # 显示以后的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]"# 色彩设置git config --global color.ui true # git status等命令主动着色git config --global color.status autogit config --global color.diff autogit config --global color.branch autogit config --global color.interactive autogit config --global --unset http.proxy # remove proxy configuration on git三、减少/删除文件# 增加指定文件到暂存区$ git add [file1] [file2] ...# 增加指定目录到暂存区,包含子目录$ git add [dir]# 增加当前目录的所有文件到暂存区$ git add .# 增加每个变动前,都会要求确认# 对于同一个文件的多处变动,能够实现分次提交$ git add -p# 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2] ...# 进行追踪指定文件,但该文件会保留在工作区$ git rm --cached [file]# 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed]四、代码提交# 提交暂存区到仓库区$ git commit -m [message]# 提交暂存区的指定文件到仓库区$ git commit [file1] [file2] ... -m [message]# 提交工作区自上次commit之后的变动,间接到仓库区$ git commit -a# 提交时显示所有diff信息$ git commit -v# 将add和commit合为一步$ git commit -am 'message'# 应用一次新的commit,代替上一次提交# 如果代码没有任何新变动,则用来改写上一次commit的提交信息$ git commit --amend -m [message]# 重做上一次commit,并包含指定文件的新变动$ git commit --amend [file1] [file2] ...五、分支# 列出所有本地分支$ git branch# 列出所有近程分支$ git branch -r# 列出所有本地分支和近程分支$ git branch -a# 新建一个分支,但仍然停留在以后分支$ git branch [branch-name]# 新建一个分支,并切换到该分支$ git checkout -b [branch]# 新建一个分支,指向指定commit$ git branch [branch] [commit]# 新建一个分支,与指定的近程分支建设追踪关系$ git branch --track [branch] [remote-branch]# 切换到指定分支,并更新工作区$ git checkout [branch-name]# 切换到上一个分支$ git checkout -# 建设追踪关系,在现有分支与指定的近程分支之间$ git branch --set-upstream [branch] [remote-branch]# 合并指定分支到以后分支$ git merge [branch]# 抉择一个commit,合并进以后分支$ git cherry-pick [commit]# 删除分支$ git branch -d [branch-name]# 删除近程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]# 检出版本v2.0$ git checkout v2.0# 从近程分支develop创立新本地分支devel并检出$ git checkout -b devel origin/develop# 检出head版本的README文件(可用于批改谬误回退)git checkout -- README 六、标签# 列出所有tag$ git tag# 新建一个tag在以后commit$ git tag [tag]# 新建一个tag在指定commit$ git tag [tag] [commit]# 删除本地tag$ git tag -d [tag]# 删除近程tag$ git push origin :refs/tags/[tagName]# 查看tag信息$ git show [tag]# 提交指定tag$ git push [remote] [tag]# 提交所有tag$ git push [remote] --tags# 新建一个分支,指向某个tag$ git checkout -b [branch] [tag]七、查看信息# 显示有变更的文件$ git status# 显示以后分支的版本历史$ git log# 显示commit历史,以及每次commit产生变更的文件$ git log --stat# 搜寻提交历史,依据关键词$ git log -S [keyword]# 显示某个commit之后的所有变动,每个commit占据一行$ git log [tag] HEAD --pretty=format:%s# 显示某个commit之后的所有变动,其"提交阐明"必须合乎搜寻条件$ git log [tag] HEAD --grep feature# 显示某个文件的版本历史,包含文件改名$ git log --follow [file]$ git whatchanged [file]# 显示指定文件相干的每一次diff$ git log -p [file]# 显示过来5次提交$ git log -5 --pretty --oneline# 显示所有提交过的用户,按提交次数排序$ git shortlog -sn# 显示指定文件是什么人在什么工夫批改过$ git blame [file]# 显示暂存区和工作区的差别$ git diff# 显示暂存区和上一个commit的差别$ git diff --cached [file]# 显示工作区与以后分支最新commit之间的差别$ git diff HEAD# 显示两次提交之间的差别$ git diff [first-branch]...[second-branch]# 显示明天你写了多少行代码$ git diff --shortstat "@{0 day ago}"# 显示某次提交的元数据和内容变动$ git show [commit]# 显示某次提交发生变化的文件$ git show --name-only [commit]# 显示某次提交时,某个文件的内容$ git show [commit]:[filename]# 显示以后分支的最近几次提交$ git reflog八、近程同步# 下载近程仓库的所有变动$ git fetch [remote]# 显示所有近程仓库$ git remote -v# 显示某个近程仓库的信息$ git remote show [remote]# 减少一个新的近程仓库,并命名$ git remote add [shortname] [url]# 取回近程仓库的变动,并与本地分支合并$ git pull [remote] [branch]# 上传本地指定分支到近程仓库$ git push [remote] [branch]# 强行推送以后分支到近程仓库,即便有抵触$ git push [remote] --force# 推送所有分支到近程仓库$ git push [remote] --all九、撤销# 复原暂存区的指定文件到工作区$ git checkout [file]# 复原某个commit的指定文件到暂存区和工作区$ git checkout [commit] [file]# 复原暂存区的所有文件到工作区$ git checkout .# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变$ git reset [file]# 重置暂存区与工作区,与上一次commit保持一致$ git reset --hard# 重置以后分支的指针为指定commit,同时重置暂存区,但工作区不变$ git reset [commit]# 重置以后分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit统一$ git reset --hard [commit]# 重置以后HEAD为指定commit,但放弃暂存区和工作区不变$ git reset --keep [commit]# 新建一个commit,用来撤销指定commit# 后者的所有变动都将被前者对消,并且利用到以后分支$ git revert [commit]# 临时将未提交的变动移除,稍后再移入$ git stash$ git stash pop十、其余git init # 初始化本地git仓库(创立新仓库)git config --global user.name "xxx" # 配置用户名git config --global user.email "xxx@xxx.com" # 配置邮件git config --global color.ui true # git status等命令主动着色git config --global color.status autogit config --global color.diff autogit config --global color.branch autogit config --global color.interactive autogit config --global --unset http.proxy # remove proxy configuration on gitgit clone git+ssh://git@192.168.53.168/VT.git # clone近程仓库git status # 查看以后版本状态(是否批改)git add xyz # 增加xyz文件至indexgit add . # 减少以后子目录下所有更改过的文件至indexgit commit -m 'xxx' # 提交git commit --amend -m 'xxx' # 合并上一次提交(用于重复批改)git commit -am 'xxx' # 将add和commit合为一步git rm xxx # 删除index中的文件git rm -r * # 递归删除git log # 显示提交日志git log -1 # 显示1行日志 -n为n行git log -5git log --stat # 显示提交日志及相干变动文件git log -p -mgit show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的具体内容git show dfb02 # 可只用commitid的前几位git show HEAD # 显示HEAD提交日志git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本git tag # 显示已存在的taggit tag -a v2.0 -m 'xxx' # 减少v2.0的taggit show v2.0 # 显示v2.0的日志及具体内容git log v2.0 # 显示v2.0的日志git diff # 显示所有未增加至index的变更git diff --cached # 显示所有已增加index但还未commit的变更git diff HEAD^ # 比拟与上一个版本的差别git diff HEAD -- ./lib # 比拟与HEAD版本lib目录的差别git diff origin/master..master # 比拟近程分支master上有本地分支master上没有的git diff origin/master..master --stat # 只显示差别的文件,不显示具体内容git remote add origin git+ssh://git@192.168.53.168/VT.git # 减少近程定义(用于push/pull/fetch)git branch # 显示本地分支git branch --contains 50089 # 显示蕴含提交50089的分支git branch -a # 显示所有分支git branch -r # 显示所有原创分支git branch --merged # 显示所有已合并到以后分支的分支git branch --no-merged # 显示所有未合并到以后分支的分支git branch -m master master_copy # 本地分支改名git checkout -b master_copy # 从以后分支创立新分支master_copy并检出git checkout -b master master_copy # 下面的完整版git checkout features/performance # 检出已存在的features/performance分支git checkout --track hotfixes/BJVEP933 # 检出近程分支hotfixes/BJVEP933并创立本地跟踪分支git checkout v2.0 # 检出版本v2.0git checkout -b devel origin/develop # 从近程分支develop创立新本地分支devel并检出git checkout -- README # 检出head版本的README文件(可用于批改谬误回退)git merge origin/master # 合并近程master分支至以后分支git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的批改git push origin master # 将以后分支push到近程master分支git push origin :hotfixes/BJVEP933 # 删除近程仓库的hotfixes/BJVEP933分支git push --tags # 把所有tag推送到近程仓库git fetch # 获取所有近程分支(不更新本地分支,另需merge)git fetch --prune # 获取所有原创分支并革除服务器上已删掉的分支git pull origin master # 获取近程分支master并merge到以后分支git mv README README2 # 重命名文件README为README2git reset --hard HEAD # 将以后版本重置为HEAD(通常用于merge失败回退)git rebasegit branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支批改已合并到其余分支)git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933git ls-files # 列出git index蕴含的文件git show-branch # 图示以后分支历史git show-branch --all # 图示所有分支历史git whatchanged # 显示提交历史对应的文件批改git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818git ls-tree HEAD # 外部命令:显示某个git对象git rev-parse v2.0 # 外部命令:显示某个ref对于的SHA1 HASHgit reflog # 显示所有提交,包含孤立节点git show HEAD@{5}git show master@{yesterday} # 显示master分支昨天的状态git log --pretty=format:'%h %s' --graph # 图示提交日志git show HEAD~3git show -s --pretty=raw 2be7fcb476git stash # 暂存以后批改,将所有至为HEAD状态git stash list # 查看所有暂存git stash show -p stash@{0} # 参考第一次暂存git stash apply stash@{0} # 利用第一次暂存git grep "delete from" # 文件中搜寻文本“delete from”git grep -e '#define' --and -e SORT_DIRENTgit gcgit fsck# 生成一个可供公布的压缩包$ git archive

January 14, 2021 · 4 min · jiezi

关于git:开发老人笔记Git-常用命令清单

摘要:git是目前世界上最先进的分布式版本控制系统。git是目前世界上最先进的分布式版本控制系统。 多人合作 master:此分支用来公布稳固的代码,合并个别是由管理员合并dev:此分支用于团队开发,团队成员向此分支提交代码bug:此分支用于修复紧急bug,修复实现后个别删除MASTER 分支当dev实现一个版本的测试后,合并到mastergit merge devDEV 分支在本地创立dev分支,须要 git push origin dev 同步到近程 git merge dev 不须要进行git add 等操作,它主动实现了 Git默认会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息,个别状况下应该应用 git merge --no-ff -m "merge with no-ff" dev 其余用户退出DEV当初本地创立,报错的起因是未和近程代码关联 合并抵触 提交到dev BUG 分支当咱们在本人的分支开发时,忽然接到项目经理的反馈的一个bug,然而此时咱们工作区有缓存数据,只须要应用 git stash 相干命令创立并切换分支 git checkout -b dev切换分支 git check dev查看以后分支 git branch删除分支 git branch -d dev更新项目组文件夹内容 git reset --hard--no-ff git branch -d '' 后,在git log 能够看到信息 git merge --no-ff -m "merge with no-ff" devgit pull ...

January 14, 2021 · 1 min · jiezi

关于git:前端面试每日-31-第639天

明天的知识点 (2021.01.14) —— 第639天 (我也要出题)[html] HTML5的Server-Sent和WebSocket有什么区别?[css] 在Less中e()函数的目标是什么?[js] 应用JavaScript拖拽盒子跟着鼠标动的成果[软技能] 批改了文件并已提交到暂存区(即曾经add),如何吊销?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

January 14, 2021 · 1 min · jiezi

关于git:git-clone代码时报错缓存区大小报错

明天在克隆vant的源码时报错:RPC failed; curl 18 transfer closed with outstanding read data remaining。作为程序猿,怎么能轻易放弃,通过一番折腾最初在网上找到了解决办法,当初记录一下便于当前查看。毕竟年纪大了.... 先来说说导致这种谬误的起因:因为git有设置单个文件上传时的默认大小,默认为是50M,超过50M,会给出warning。大于100M会无奈提交。所以当你clone时我的项目比拟大,可能就会呈现这种谬误。ps:在查找这方面材料时发现,push代码时也会遇到这种状况。 解决办法我找到了以下三种: 减少缓存区大小 git config --global http.postBuffer 524288000 ps:push时遇到报错,也能够用这种办法。减小要clone的我的项目大小 git clone https://github.com/flutter/fl... --depth 1 ps: 这里解释以下,--depth 1,的意思是只clone最近一次的提交有童鞋要是想clone所有的,网上也有解决办法,可自行搜寻。这个不在本次要说的范畴内。换协定例如:将git clone https://github.com/youzan/van...,改为git clone git://github.com/youzan/vant.git欢送大佬指出其中谬误....

January 13, 2021 · 1 min · jiezi

关于git:Git-clone加速镜像工具-wogit

Git clone减速镜像工具 wogitwogit 是一个 git clone 镜像减速命令行工具,解决github仓库clone慢的问题。 wogit 通过封装和透传,除了几个镜像选项新参数,其余应用上与git统一,不仅仅能用来clone减速,代替 git 作为日常应用也是OK的。 装置npm i wogit -g应用与git统一,根本是把git替换成wogit即可 # fromgit clone https://github.com/chalk/chalk.git# tiwogit clone https://github.com/chalk/chalk.git# 其余参数不变,跟应用git一样,如wogit clone https://github.com/chalk/chalk.git --depth=1镜像切换wogit默认应用cnpmjs镜像,应用 wogit -h 能够随时查看镜像切换的选项 ➜ wogit -hUsage: wogit [options]Options: -V, --version output the version number -cn --cnpm cnpmjs镜像(默认) -fa --fastgit fastgit镜像 -ge --gitee gitee镜像 -gc --gitclone gitclone镜像 -gh --github 应用原始github镜像 -h, --help display help for command比方 # fastgit镜像wogit clone https://github.com/chalk/chalk.git -fawogit clone https://github.com/chalk/chalk.git --fastgit# gitee镜像wogit clone https://github.com/chalk/chalk.git -gewogit clone https://github.com/chalk/chalk.git -gitee# 其余不一而足阐明:并非所有的仓库都有减速镜像,请依据提醒,确认是否须要应用-gh强制间接应用github。 ...

January 13, 2021 · 1 min · jiezi

关于git:git-问题记录

git 不辨认文件名称大小写。假如 第一次上传 a.js, 第二次上传为 A.js 。 git不会对文件名称进行区别,辨认为同一个文件。 继续更新。。。

January 12, 2021 · 1 min · jiezi

关于git:Mac-大小写不敏感解决方案

本文由 Deguang 发表于 码路-技术博客 日常应用 Mac 作为开发工具,有时会遇到本地代码失常,构建平台公布失败、找不到文件,局部是因为 大小写不统一 产生的问题。 MacOS 默认磁盘分区不辨别大小写,而构建环境多为 Linux/Unix 零碎辨别大小写,本地无奈发现的问题就裸露在了后续环节。 举个例子# 我的项目中存在如下两个文件├─ icon.vue└─ main.js// main.jsimport Icon from './Icon.vue'上述的代码,在 Mac 本地能够失常执行,import 也可找到 icon.vue ,但在构建平台执行时,遇到 Module not found: Eroor: Can't resolve './Icon.vue' in '/xxx/xx/x/'这时在编辑器将 icon.vue 重命名为 Icon.vue,执行 git diff,发现没有任何差别,git 无奈感知变动; 那须要如何解决这个问题? 解决方案计划一: git mvgit mv icon.vue Icon.vue这相当于 mv icon.vue Icon.vuegit add Icon.vue这时候能够实现文件名字批改并提交到 git 暂存区。 这个计划能够在发现问题后疾速解决,但不能根治,本地开发仍然无奈发现问题; 计划二:Mac 磁盘配置大小写敏感(终极计划)如果 Mac 是全新的,能够将配置文件设置为大小写敏感。大部分同学电脑中都以有很多文件,重新配置磁盘不可取,这里能够抉择计划:__新增一个 APFS 宗卷__(Volume) 关上 磁盘治理 (Disk Utility) 点击顶部 分区 (Partition) - 增加宗卷 (Add Volume) ...

January 11, 2021 · 1 min · jiezi

关于git:Git初级功能介绍

一、定义: 分布式版本控制系统二、Git与SVN区别 1、SVN是集中式版本控制系统三、Git基本操作 1、git init 初始化仓库 2、git clone 拷贝我的项目 3、git config --list 查看配置 4、git add 增加文件到暂存区 5、git commit -m '' 将暂存区文件增加到本地仓库 6、git status 查看仓库状态,显示有变更的文件 7、git push 上传代码并合并 8、git pull 下载代码并合并 9、git log 查看历史提交记录 获取简写git log --pretty=oneline 查看命令历史 git reflog 10、git reset 回退版本 11、git branch (name) 创立分支 12、git checkout (name) 切换分支 13、git merge 合并分支 14、git branch -d(name) 删除分支

January 11, 2021 · 1 min · jiezi

关于git:CentOS-7-下-Git-超时

引子想要把 GitHub 的一个库弄到服务器上,应用 Git 克隆的时候,发现很慢或提醒超时,想起来之前碰到过,这次记录一下。 零碎:CentOS 7 OriginMy GitHub解决形式国内对 GitHub 的拜访进行了限度,能够通过指定 IP 形式拜访。 第一步:找 IP首先找到 github.com 的 IP 地址,能够在 IPAddress 网站上查找。还能够增加 github.global.ssl.fastly.net 的映射,这个有助于减速。 留神:隔段时间地址会变,网上找的有些都过期了,倡议还是本人去查问一下。 第二步:批改 hostvim /etc/hosts将找到的最新地址映射增加到 hosts 中。 参考资料centos7 git下载速度慢

January 11, 2021 · 1 min · jiezi

关于git:万字详解Git-入门最佳实践

Git 简介Git 是一种分布式版本控制系统,它能够不受网络连接的限度,加上其它泛滥长处,目前曾经成为程序开发人员做我的项目版本治理时的首选,非开发人员也能够用 Git 来做本人的文档版本管理工具。 2013年,淘宝前端团队开始全面采纳 Git 来做项目管理,我也是那个时候开始接触和应用,从一开始的零接触到当初的重度依赖,真是感叹 Git 的弱小。 Git 的api很多,但其实平时我的项目中90%的需要都只须要用到几个根本的性能即可,所以本文将从 实用主义 和 深刻摸索 2个方面去谈谈如何在我的项目中应用 Git,一般来说,看完 实用主义 这一节就能够开始在我的项目中入手用。 阐明:本文的操作都是基于 Mac 零碎 筹备阶段进入 Git官网下载适合你的安装包,以后我下载到的版本是 2.11.0,本文也将在这个版本上演示成果。装置好 Git 后,关上命令行工具,进入工作文件夹(为了便于了解咱们在零碎桌面上演示),创立一个新的demo文件夹。进入 Github网站 注册一个账号并登录,进入: https://github.com/gafish/gafish.github.com点击 Clone or download ,再点击 Use HTTPS,复制我的项目地址 : https://github.com/gafish/gafish.github.com.git 备用。再回到命令行工具,所有就绪,接下来进入本文的重点。 罕用操作所谓实用主义,就是把握了以下常识就能够玩转 Git,轻松应答90%以上的需要。以下是实用主义型的Git命令列表,先大抵看一下 git clonegit configgit branchgit checkoutgit statusgit addgit commitgit pushgit pullgit loggit tag接下来,将通过对:https://github.com/gafish/gaf... 仓库进行实例操作,解说如何应用 Git 拉取代码到提交代码的整个流程。 git clone从git服务器拉取代码 git clone https://github.com/gafish/gafish.github.com.git代码下载实现后在以后文件夹中会有一个 gafish.github.com 的目录,通过 cd gafish.github.com 命令进入目录。 git config配置开发者用户名和邮箱 git config user.name gafishgit config user.email gafish@qqqq.com每次代码提交的时候都会生成一条提交记录,其中会蕴含以后配置的用户名和邮箱。 git branch创立、重命名、查看、删除我的项目分支,通过 Git 做我的项目开发时,个别都是在开发分支中进行,开发实现后合并分支到骨干。 git branch daily/0.0.0创立一个名为 daily/0.0.0 的日常开发分支,分支名只有不包含特殊字符即可。 git branch -m daily/0.0.0 daily/0.0.1如果感觉之前的分支名不适合,能够为新建的分支重命名,重命名分支名为 daily/0.0.1 git branch通过不带参数的branch命令能够查看以后我的项目分支列表 ...

January 7, 2021 · 2 min · jiezi

关于git:Git第一章节介绍

介绍1.1 版本控制 1.2 历史 1.3 根底 1.4 装置 1.5 配置 1.1 版本控制1.1.1 概述:版本控制是指对软件开发过程中各种程序代码、配置文件及阐明文档等文件变更的治理,是软件配置管理的核心思想之一。 1.1.2 简述:版本控制最次要的性能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠诚地了记录下来。每一次文件的扭转,文件的版本号都将减少。除了记录版本变更外,版本控制的另一个重要性能是并行开发。软件开发往往是多人协同作业,版本控制能够无效地解决版本的同步以及不同开发者之间的开发通信问题,进步协同开发的效率。并行开发中最常见的不同版本软件的谬误(Bug)修改问题也能够通过版本控制中分支与合并的办法无效地解决。 1.1.3 控制系统进化问题以及解决形式:本地式版本控制系统: 在一台服务器依据目录的工夫进行备份。 益处: 简略害处: 一旦操作出错,所有的文件将全副失落。问题: 不能让在不同零碎中的开发者协同工作。集中式版本控制系统 将所有的文件放在一台服务器上进行治理。 益处: 能够看到我的项目中其他人的工作进度。管理员能够把握开发者的权限。害处: 服务器宕机,所有人对文件都不能操作,如果服务器产生故障,容易造成数据的失落。问题: 外围服务器宕机,所有工作人员不能进行文件的操作。分布式版本控制系统: 分布式版本控制系统有:Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不是提取最新版本的文件快照,而是把代码仓库残缺的镜像下来。这样,任何一处协同工作用的服务器产生故障,预先都能够用任何一个镜像进去本地仓库进行复原。因为每一次的提取操作,都是一次对代码的残缺备份。1.2 历史版本最后公布日期最新订正版本最新订正版本公布日期0.992005-07-110.99.9n2015-12-151.02005-12-211.0.132006-01-271.12006-01-081.1.62006-01-301.22006-02-121.2.62006-04-081.32006-04-181.3.32006-05-161.42006-06-101.4.4.52008-07-161.52007-02-141.5.6.62008-12-171.62008-08-171.6.6.32010-12-151.72010-02-131.7.12.42012-10-171.82012-10-211.8.5.62014-12-171.92014-02-141.9.52014-12-172.02014-05-282.0.52014-12-172.12014-08-162.1.42014-12-172.22014-11-262.2.32015-09-042.32015-02-052.3.102015-09-292.42015-04-302.4.122017-05-052.52015-07-272.5.62017-05-052.62015-09-282.6.72017-05-052.72015-10-042.7.62017-07-302.82016-03-282.8.62017-07-302.92016-06-132.9.52017-07-302.102016-09-022.10.52017-09-222.112016-11-292.11.42017-09-222.122017-02-242.12.52017-09-222.132017-05-102.13.72018-05-222.142017-08-042.14.52018-09-272.152017-10-302.15.32018-09-272.162018-01-172.16.52018-09-272.172018-04-022.17.22018-09-272.182018-06-212.18.12018-09-272.192018-09-102.19.22018-11-212.202018-12-092.20.12018-12-152.212019-02-242.21.02019-02-242.222019-06-072.22.02019-06-072.232019-08-162.23.12019-12-072.242019-11-042.24.12019-12-072.252020-01-132.25.12020-02-171.3 根底1.3.1 间接记录快照,并非差别比拟Git 和其余控制系统相比,Git 只关怀文件数据的整体是否产生了变动,而大多数其余零碎则关怀文件的内容的具体差别。 图 1.3 otherGit 不保留这些前后变动的差别数据。Git 更像是把变动的文件作快照后,记录在一个微型文件零碎中。每次提交更新时,他会纵览一遍所有文件的指纹信息并对文件作一个快照,而后保留一个指向快照的索引。为了进步性能,如果文件没有变动,Git不会保留,而是对上次保留到快照做一个链接。 图 1.4 other 1.3.2 近乎所有的操作都是本地执行Git 大多数的操作都是在本地进行,不必联网。如果是用cvcs(集中式管理系统),基本上所有的操作都是须要联网的,因为 Git 在本地磁盘上就保留了所有以后我的项目的历史更新记录,所以解决起来速度比拟快。 1.3.3 时刻放弃数据完整性在保留到 Git 之前,所有的数据都要进行内容的校验和计算,并将后果作为数据的惟一标识和索引。不可能在你批改了文件或者目录之后,Git 无所不知,这个个性作为 Git 的设计哲学,建设在整体架构的最底层。所以如果文件在传输变得不残缺或者磁盘损坏导致文件数据缺失, Git 可能立刻觉察。通过sha1算法进行目录和文件的加密,所以在 Git 中常常看到 24b9da6552252987aa493b52f8696cd6d3b00373 数据。 1.3.4 多数据操作仅增加数据常见的 Git 操作仅仅把数据增加到数据库中,因为任何一种不可逆操作,比方删除数据,都会使回退或者重现历史版本变得困难重重。在 Git 中一旦提交快照齐全不须要放心数据失落。 ...

January 7, 2021 · 1 min · jiezi

关于git:Git第二章节指令

指令1.1 获取仓库 1.2 文件更新到仓库 1.3 获取提交历史 1.4 撤销批改 1.5 近程仓库 1.6 标签 1.1 获取仓库1.1.1 本人创立仓库初始化后,当前目录中会呈现一个.git的目录,所有 Git 须要的数据和资源都寄存在这个目录中。 $ git init和 Git 打个招呼 # 轻易创立一个文件 # 将文件增加到仓库中 $ git add . # 提交到仓库中 $ git commit -m "提交代码的信息形容"1.1.2 已有仓库 $ git clone <url>1.2 文件更新到仓库1.2.1 已跟踪已跟踪的文件时原本就被纳入版本控制治理的文件,在上次的快照中有他们的记录,在工作一段时间后,他们的状态可能时未更新,已批改或者放入暂存区。 1.2.2 未跟踪他们既没有上次更新时的快照,也不在以后的暂存区域,首次克隆的仓库,工作目录下的所有文件都是属于已跟踪的文件,并且状态是未修改的状态。 1.2.3 查看以后文件的状态要确定文件在什么状态,能够通过 git status 命令查看。上面这个状态阐明工作目录中没有任何须要提交的。信息中还阐明了你以后所在的分支是 master。 $ git status # On branch master nothing to commit (working directory clean)1.2.4 新建文件在状态报告中能够看到新建的README文件呈现在“Untracked files”上面。未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git 不会主动将之纳入跟踪范畴,除非你明明白白地通知它“我须要跟踪该文件”,因此不必放心把临时文件什么的也纳入版本治理。不过当初的例子中,咱们的确想要跟踪治理 README 这个文件。 ...

January 7, 2021 · 3 min · jiezi

关于git:Git第三章节分支

分支1.1 概述 1.2 新建和合并 1.3 治理分支 1.4 近程分支 1.5 分支的扩大 1.1 概述在 Git 中提交时,会保留一个 commit 对象,该对象蕴含一个指向暂存内容快照的指针,蕴含本次提交的作者等相干的从属信息,蕴含零个或者多个指向该提交对象的父对象指针;首次提交时没有间接先人的,一般提交有一个先人,由两个或者多个分支合并产生的提交则有多个先人。 1.1.1 示例在工作目录中有三个文件,筹备将他们暂存后提交。暂存操作会对每一个文件计算校验和(SHA-1哈希串),而后把以后版本的文件快照保留在 Git 仓库中(Git应用blob类型的对象存储这些快照), 并将校验和退出暂存区域。 当应用 git commit 新建一个提交对象前,Git 会先计算每一个子目录的校验和吗,而后在 Git 仓库中将这些目录保留为树(对象);之后 Git 创立的提交对象,除了蕴含提交信息外,还蕴含了指向整个树对象的指针。这样未来须要的时候,重现此次快照的内容了。 $ git add text1.md text2.md tesxt3.md $ git commit -m "init desc"当初仓库中有了五个对象:三个文件示意快照内容 blob 对象;一个记录这目录树内容和其中各个文件对应 blob 对象索引的 tree 对象;还有就是一个蕴含指向 tree 对象的索引和其余提交信息源数据的 commit 对象。 批改后再次提交,这次提交的对象会蕴含上一个指向上次提交对象的指针。两次提交后变成上面这样。 Git 中的分支,其实实质上仅仅是个指向 commit 对象的可变指针。Git 会将 master 作为分支的默认名字。若干次提交当前,其实曾经有一个指向最初一次提交对象的 master 分支,他在每次提交的时候都会向前挪动。 1.1.2 创立分支应用命令 git branch 创立分支 ...

January 7, 2021 · 1 min · jiezi

关于git:Git基础总结

Git - 分布式版本控制系统一、Git简介诞生背景分布式与集中式创立版本库与文件增加二、时光机版本控制工作区和暂存区治理批改撤销批改删除文件三、近程仓库从近程仓库克隆(先有近程仓库)将近程仓库与本地仓库相关联(先有本地仓库)四、分支治理创立与合并分支解决抵触分支管理策略Bug分支Feature分支多人合作Rebase变基五、标签治理六、自定义Git疏忽非凡文件配置别名搭建Git服务器*Git - 分布式版本控制系统Git简介诞生背景linux团队为治理linux代码而研发的一套分布式版本控制系统。 分布式与集中式集中式须要有一台机器来充当地方服务器,而分布式则不须要,每台主机都保留残缺的代码库。 创立版本库与文件增加新建版本库:git init增加到暂存区:git add file_name提交到版本库:git commit -m "message" 时光机查看版本库状态:git status查看文件状态:git diff file_name 版本控制版本回退:查看历史提交记录:git log批改HEAD指向:git reset --hard commit_id版本后退:查看命令历史记录:git reflog批改HEAD指向:git reset --hard commit_idPS:HEAD示意以后版本,HEAD^示意上一个版本,HEAD~3示意上三个版本。 工作区和暂存区 治理批改Git跟踪并治理的是批改,而非文件。 撤销批改撤销以后工作区的批改,回到最近一次git add或git commit的状态:git checkout -- file_name重置当前工作区版本,并清空暂存区:git reset HEAD file_name 删除文件rm file_name从版本库中删除文件:git rm file_name(之后的复原只能抉择版本回退)复原误删文件到最新版本:git checkout -- file_name 近程仓库本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以须要把本地的SSH公钥增加到github上,用户才有增加代码的权限。 从近程仓库克隆(先有近程仓库)克隆:git clone git@github.com:best921/originProperty.git 将近程仓库与本地仓库相关联(先有本地仓库)关联:git remote add origin git@github.com:best921/originProperty.git 分支治理 创立与合并分支查看分支:git branch新建分支:git branch branch_name新建近程分支到本地:git checkout -b branch_name origin/branch_name删除分支:git branch -d branch_name强制删除分支(实用于还没被合并的分支):git branch -D branch_name切换分支:git checkout branch_name新建+切换分支:git checkout -b branch_name合并指定分支到以后分支(默认Fast-forward模式):git merge branch_name一般模式的分支合并,会新建一个commit记录:git merge --no-ff -m "" branch_name ...

January 6, 2021 · 1 min · jiezi

关于git:git-基础以及多人协作

说在后面:设置一些罕用的别名查看咱们设置的一些命令 cat .bashrc编辑 vi .bashrc配置一些别名 alias ga="git add"从新reload一下会失效 source .bash_profile查看配置了哪些别名 aliasgit 与 github 什么关系?gitopen source version control softwaregithubreposity hostingissuepull requestforks配置信息查看本人以后全局的配置cd ~lacat .gitconfig或者 git config --list罕用设置name和emailgit config --global user.name "silence717"git config --global user.email silence717@126.com查看以后设置是否失效git config user.namegit config user.emailgit根底当前目录应用git来进行治理,在以后文件夹下执行 git init查看 cd .gitla重命名文件 mvgit mv <from_file> <to_file>与以下3条命令成果一样: mv README.md READMEgit rm README.mdgit add README查看记录日志 log// 查看所有记录信息git log// 增加数字查看最近 n 条git log -2// 增加 --stat 查看被批改过的文件状况git log --stat -2// 查看某个人的提交git log --author=**// 其余可配置,然而不罕用的git log --[since, after, until, before, ...]=**撤销操作// 文件add当前,执行reset能够勾销暂存,只会影响暂存区git reset HEAD <filename>// commit之后发现msg谬误或者遗记提交有些文件,应用合并提交git commit --amend// 危险命令:批改了文件,确定不想要了,应用 checkout 复原为上一次提交的文件状态git checkout -- <file>近程仓库的应用// 查看近程仓库简写git remote// clone一个仓库,会主动增加 origin 为remote-name的简写// 参数 -v 显示近程仓库的 urlgit remote -v // 增加git remote add <remote-name> <url>// 同步近程仓库git fetch <remote-name>// 从近程分支更新代码git pull [remote-name] [branch-name]// 为近程分支推送代码git push [remote-name] [branch-name]这块的origin与master分支一样,都是git默认生成的,与其余分支或者名称一样,没有什么非凡意义。标签治理 tag// 显示所有的taggit tag// 新建一个taggit tag -a <tag-name> -m "tag info"// 显示某个tag信息git show <tag-name>// 将以后tag推送到近程git push origin <tag-name>// 删除本地的taggit tag -d <tag-name>// 危险:删除近程taggit push origin :refs/tags/<tag-name>分支治理 branch// 查看本地所有branchgit branch// 查看所有分支和它的最初一次提交git branch -v// 新建分支git branch <branch-name>// 切换到新建的分支git checkout <branch-name>git switch <branch-name>// 新建分支、并且切换到以后分支git checkout -b <branch-name>// 推送到近程git push origin <branch-name>// 强制删除本地分支git branch -D <branch-name>// 删除近程分支git push origin --delete <branch-name>// 查看更多的分支信息git branch -vv// behind 2 落后于近程分支2条commit// ahead 3 本地有2条commit没有push到近程上// test 未跟踪任何近程分支// feature/form 代表和近程一样暂存文件 stash长期存储一些代码,正在开发的性能做了一半,须要切换分支,有的代码还在报错,没有通过eslint校验,因而commit是不能解决这个问题的,当然在这种状况下commit 代码是十分不合理的做法,因而能够应用git stash。 ...

January 6, 2021 · 2 min · jiezi

关于git:error-RPC-failed-curl-56-GnuTLS-recv-error-54

问题形容:在应用以下clone的时候pip install git+https://github.com/ludlows/python-pesq呈现以下谬误: error: RPC failed; curl 56 GnuTLS recv error (-12): A TLS fatal alert has been received.fatal: The remote end hung up unexpectedlyfatal: The remote end hung up unexpectedlyEverything up-to-date解决办法:git config --global http.postBuffer 1048576000 具体详见:这里

January 5, 2021 · 1 min · jiezi

关于git:git真神操作持续部署到私有服务器

概述最近要高效的把前端 react 我的项目部署到公有服务器上,钻研了好几种继续部署计划,这里简略形容一下。 总的部署思路分两种: 编译后的文件部署源码部署编译后的文件部署,就是先在本地进行npm run build打包,生成 build 文件夹,而后将 build 文件夹传到服务器,再用 Nginx 配置一个动态解析即可。 这种计划用 rsync 间接上传就能够,这里不赘述。 源码部署就是把源文件部署到服务器上,而后: npm install && npm run build这种形式是将打包工作交给服务器(或其余构建工具),本地只是将源代码 push 下来,git 监听到推送而后主动开始构建。这是当初风行的形式,大多数继续集成工具都是这么干的。 明天的重头戏来了!咱们不借助其余构建工具,只用纯 Git 实现监听 push 并主动构建。置信我,这一步十分好玩~ Git 构建首先筹备一台服务器,装置好 node git nginx,开始入手 服务器信息如下: host:198.234.456.8(不必试,假的)我的项目目录:/home/react-test创立裸仓库登入服务器,在服务器的 /opt 目录下创立一个裸仓库 什么是裸仓库?裸仓库就是没有工作目录的仓库,说白了就是你的我的项目目录下的 .git 文件夹 执行命令创立: cd /optgit init --bare react-test.git 创立好后,会生成 react-test.git 文件夹,所以咱们的裸仓库地位是 /opt/react-test.git,记住这里前面会用到 接下来,进入 react-test.git 文件夹,发现外面有个 hook 文件夹。这个文件夹可不得了,是放 Git “钩子” 的中央。 所谓“钩子”,其实就是一个 shell 文件。在执行 git 操作(如:push,pull)时触发执行。 ...

January 5, 2021 · 1 min · jiezi

关于git:git-经验谈一认识-git-的结构

最近想写一篇 git 的向导,因为 git 的应用形式非常灵活,每个人对 git 也有不同的应用偏好,所以写一下本人的教训还是很值得的。另外,当初总结一下应用教训,今后发展我的项目能够做到有恃无恐。依据我的总结,git 还是有不少货色值得写的,所以想把我写的货色分成几块,有个前后程序。这是第一篇,介绍一下根本的入门常识,再讲讲 git 的整体构造是什么样的。Let's go! 什么是 gitgit 是一个用于软件开发的代码 版本控制系统。它有以下特点: 分布式:git 不依赖于集中的版本控制服务器,不同的用户创立本人的库后,能够自在地在其根底上做版本治理收费开源git repositories 的空间视角总的来说,git repository 是一个简单的数据结构,开发者须要对整体有一个根本的理解。我倡议把工作中应用的 git repository 看作一个三维的空间。上面就来说一下 git 空间的三个维度。 第一维度:commit historycommit 是一次代码提交,它实现版本治理最根底的性能 —— 把批改历史划分为不同的版本。它也是 git 在切换不同版本时的最小单位。咱们平时写代码时,每一次写完一个残缺的代码逻辑,就能够做一次代码提交。每一次提交都要确保达到以下要求: 我的项目能够编译胜利未实现的局部能显示正当的提醒或者抛出 NotImplementedException 之类的异样第二维度:branchbranch 是代码的正本,服务于团队开发中不同的开发者专一于各自的工作工作。除了默认的 master 分支,咱们在创立分支时都会基于一个原有的分支进行拷贝,创立实现后,新分支也保留了原有分支的 commit hostory。 第三维度:remote和你的本地库产生关联的近程库叫remote。咱们常常应用 git clone 命令去拷贝他人的代码,这个命令生成的本地库就带有 remote 信息。能够应用 git remote -v 查看以后库的 remote 的详细信息。尽管 git 是分布式的,然而发展团队开发工作时通常还是把 repository 分为“团队的库”和“本人的库”,另外,团队还会应用 Github 这样的代码托管服务。通常的团队开发中,每个开发者(对于同一个我的项目)会用到三个库,两个近程的,一个本地的。上面阐明一下这三个库: 简称remote主机名host在哪里用处本人的本地库-开发者本地进行本地开发和调试,解决代码合并时的抵触本人的近程库origingithub之类的代码托管服务代码近程存储,更便捷地应用托管服务的Pull Request等性能团队的近程库upstreamgithub之类的代码托管服务治理产品源代码,治理开发迭代中的代码,代码权限治理产品开发过程中,代码的流向应该是这样的: 解释一下上图中的步骤: local -> origin:个别是筹备提交到团队库之前就先提交到origin,或者是须要近程备份本人的代码时这么做。这里的虚线是从本人的近程备份下载代码时这么做。origin -> upstream:提交 Rull Request 时这样操作。upstream -> local:须要从团队库更新代码时这样做。我的习惯是间接 pull(信赖团队的代码是牢靠的),就不分步 fetch 和 merge 了。这样就造成了图中所示的逆时针工作流。 ...

January 5, 2021 · 1 min · jiezi

关于git:可视化学习-Git-命令

作者:Rhythm-2019邮箱:rhythm_2019@163.com 最近更新:2020.01.03感觉如同两三个月没写博客了,最近始终要去实验室做毕设,之前在Gitee上看见一个我的项目Learn Git Branching,是一个可视化的Git学习平台。所以除夕找了两天来学习一下。尽管感觉当前工作可能面对的问题会更简单一些,也没有说教程外面这么直观,然而打好根底嘛,大家也能够去体验一下 根底指令git commit比照新旧仓库文件的内容产生一份提交记录,新的提交记录指向旧的提交记录 git branch在以后最新提交记录中创立一个新的正本,以新的名称命名 git checkout用于切换分支,git checkout -b能够创立并切换到新的分支 git marge <援用>以后分支和新分支合并,在以后分支上产生一个提交记录,该提交记录指向两个分支的上一个节点 因为以后master上蕴含了所有的提交,再次合并Git什么都不会做 git rebase让两个分支合体,让其看上去像是线性开发的(实际上是并行的) 留神,git rebase <ref>是将HEAD指向记录及其之前的记录复制到ref指定地位上 操作分支上面介绍一些分支上的操作 HEAD咱们首先看一下 “HEAD”。 HEAD 是一个对以后检出记录的符号援用 —— 也就是指向你正在其根底上进行工作的提交记录。HEAD 总是指向以后分支上最近一次提交记录。大多数批改提交树的 Git 命令都是从扭转 HEAD 的指向开始的。HEAD 通常状况下是指向分支名的(如 bugFix)。在你提交时,扭转了 bugFix 的状态,这一变动通过 HEAD 变得可见。拆散的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。在命令执行之前的状态如下所示:HEAD -> master -> C1HEAD 指向 master, master 指向 C1 输出git checkout C1后 HEAD -> C1 对于不同的提交记录,咱们能够通过git log晓得他的哈希值,而后应用git checkout指向后进行操作AD 集体对HEAD和分支的了解:我感觉他们都像是一个指针,他们都能够指向提交记录,然而HEAD甚至能够指向分支,咱们能够应用git checkout <分支>对HEAD进行拆散,拆散后分支就不随着HEAD的挪动而挪动了,包含提交挪动绝对援用咱们应用git log会查到每次提交的哈希值,因为哈希值比拟长,如果咱们向疾速让HEAD指向上一次或几次提交,能够间接应用上面两个操作符号 ...

January 4, 2021 · 2 min · jiezi

关于git:git全局设置用户名跟邮箱相关命令

因为git全局设置用户名跟邮箱,基本操作一次当前很少再变动,所以记忆不是很粗浅,然而更换电脑的时候又会用到,而后再去查,所以在这里记录一下,不便本人当前查看。 查看git配置信息:git config --list查看用户名:git config user.name查看邮箱:git config user.email设置全局用户名:git config --global user.name "xxx"(输出你的用户名)设置全局邮箱:git config --global user.email "xxx"(输出你的邮箱)

January 4, 2021 · 1 min · jiezi

关于git:Git重磅推荐5-款强大的开源报表工具

小编最近发现几款不错的开源报表,还提供源码,当初给大家分享一下,心愿能给你带来帮忙! 1、项目名称:积木报表我的项目简介:积木报表,收费的企业级WEB报表工具。专一于“业余、 易用 、优质”的报表设计器和大屏设计器。反对打印设计、数据报表、图形报表、大屏设计器,重点是收费的。我的项目地址:https://github.com/zhangdaisc...体验地址:http://www.jimureport.com/ 2、项目名称:UReport2我的项目简介:UReport2是一款高性能的Java报表引擎,提供欠缺的基于网页的报表设计器,可疾速做出各种简单的中式报表。在UReport2中,提供了全新的基于网页的报表设计器,能够在Chrome、Firefox、Edge等各种支流浏览器运行(IE浏览器除外),关上浏览器即可实现各种简单报表的设计制作。UReport2是第一款基于Apache-2.0协定开源的中式报表引擎。我的项目地址:https://gitee.com/youseries/u... 3、项目名称:EasyReport我的项目简介:EasyReport 是一个简略易用的 Web 报表工具,它的次要性能是把 SQL 语句查问出的行列构造转换成 HTML 表格(Table),并反对表格的跨行(RowSpan)与跨列(ColSpan)。同时它还反对报表 Excel 导出、图表显示及固定表头与右边列的性能。我的项目地址:https://gitee.com/xianrendzw/... 4、项目名称:报表设计工具 Reportico我的项目简介:Reportico 是一个报表设计工具,可用来设计报表、创立报表菜单和配置,反对图形、分组、下钻、表达式解决和数据转换,可导出 HTML、PDF 和 CSV 格局,可通过 CSS 批改报表外观。我的项目地址:https://gitee.com/luob/reportico 5、项目名称:ECharts我的项目简介:ECharts 是一款由百度前端技术部开发的,基于 Javascript 的数据可视化图表库,提供直观,活泼,可交互,可个性化定制的数据可视化图表。涵盖各行业图表,满足各种需要。我的项目地址:https://gitee.com/echarts/ech...

January 4, 2021 · 1 min · jiezi

关于git:Git常见错误及解决办法收集

git clone 谬误error: RPC 失败。curl 18 transfer closed with outstanding read data remaining谬误截图 可能起因1:缓存溢出解决办法: git config http.postBuffer 524288000可能起因2:下载速度太慢解决办法 git config --global http.lowSpeedLimit 0git config --global http.lowSpeedTime 999999如果仍然失败,可思考先浅层次Clone,而后再残缺fetch git clone --depth=1 http://gitlab.xxx.cn/yyy/zzz.gitgit fetch --unshallow

January 3, 2021 · 1 min · jiezi

关于git:Git全栈开发者使用指南

一、Git根底 1、Git简介Git是一种分布式版本控制系统,由Linux之父Linus开发。 所谓分布式版本管理系统,就是在每一台机器上都有一个残缺的仓库。 2、Git官网Git官网:git 在官网上能够获取Git的装置软件。 除此之外,还能够下载《progit》——这是最棒的Git学习材料,而且有中文版本。 3、Git装置从 https://git-scm.com/downloads官网下载地址下载对应的操作系统版本一步步装置即可。 4、Git根本配置装置实现之后,在任意目录下,右键 Git Bash Here 全局配置邮箱和用户名(–global示意全局配置,也能够不配置,每个仓库独自配置) $ git config --global user.name "test"$ git config --global user.email test@qq.com5、Git基本概念5.1、Git工作区域Git有四个工作区域: 工作区简略说工作区就是咱们我的项目的目录。 仓库区/本地仓库工作区有一个.git目录,其实这个不是工作区,是Git的版本库,存储了Git仓库的所有版本信息 暂存区暂存区域是一个文件,保留了下次将提交的文件列表信息,个别在 Git 仓库目录中。 有时候也被称作“索引”, 不过个别说法还是叫暂存区域。 近程仓库 对于分布式版本管理系统,近程仓库不是必须存在的,然而通常我的项目都会有近程仓库。例如Github就是咱们十分相熟的近程仓库。 根本的Git工作流程如下: 在工作目录批改文件暂存文件,将文件快照放入暂存区提交更新,找到暂存区的文件,将快照永久性存储到到 Git 仓库区(本地)将本地仓库的变更推送到近程仓库以上几个区域的关系能够用下图示意: 5.2、Git分支分支是为了将批改记录的整个流程离开存储,让离开的分支不受其它分支的影响,所以在同一个数据库里能够同时进行多个不同的批改。 Git 为咱们主动创立的第一个分支,也叫主分支,个别其它分支开发实现后都要合并到 master 5.3、Git文件状态在git中,文件次要有四种状态: Untracked: 未跟踪, 此文件在文件夹中, 但并没有退出到git库, 不参加版本控制. 通过git add 状态变为Staged.Unmodify(Committed): 文件曾经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被批改, 而变为Modified. 如果应用git rm移出版本库, 则成为Untracked文件Modified: 文件已批改, 仅仅是批改, 并没有进行其余的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 应用git checkout 则抛弃批改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 笼罩以后批改Staged: 暂存状态. 执行git commit则将批改同步到库中, 这时库中的文件和本地文件又变为统一, 文件为Unmodify状态. 执行git reset HEAD filename勾销暂存, 文件状态为Modified二、Git利用实际看完下面的Git根底,你可能有一些蛊惑,接下来,咱们以理论工作中开发的流程来加深对Git的了解吧。 ...

January 1, 2021 · 5 min · jiezi

关于git:工作中常用的git命令清单

前言对于程序员来说,Git大家并不生疏,无论是应用GitHub或GitLab还是一些其余的代码管理工具时,都会应用到Git命令,Git是一个收费的开源分布式版本控制系统,能够疾速高效地解决从小型到大型项目的所有内容,这篇文章先不讲原理,让咱们先来看看它有哪些命令吧 control + F 疾速查找关键字: 日常、克隆、分支、历史、撤销 根本设置(初始化)设置用户名: $ git config --global user.name "你的名字"查看用户名: $ git config --global user.name设置邮箱: $ git config --global user.email "你的邮箱"查看邮箱: $ git config --global user.email疏忽某些文件: $ 创立.gitignore文件,文件中写入须要疏忽的文件名(示例:node_modules /dist .idea ...),如果须要疏忽的文件曾经提交到仓库,须要删除后,再次提交.gitignore文件才可失效初始化git版本库: $ git init操作命令???? 日常操作增加文件到版本库: $ git add .增加单个文件到版本库: $ git add test.text增加某个后缀的文件: $ git add *.文件后缀提交版本库文件: $ git commit -m "备注"推入仓库: $ git push???? 克隆克隆我的项目: $ git clone 我的项目的ssh或http地址克隆指定分支的代码: $ git clone -b 分支名称 我的项目的ssh或http地址???? 分支查看本地所有分支: $ git branch查看近程所有分支: $ git branch -r查看本地和近程所有分支: $ git branch -a新建分支: $ git branch 分支名称以近程分支为根底新建一个分支,并切换到该分支: $ git checkout -b 分支名称 origin/近程分支切换到上一个分支: $ git checkout -删除分支: $ git branch -d 分支名称 (这个命令如果分支没有被合并会删除失败)删除分支: $ git branch -D 分支名称 (这个命令是强制删除)删除近程曾经不存在的分支: $ git remote prune origin合并分支: $ git merge 指定分支名称 (如果发生冲突,就不会主动提交)重命名分支: $ git branch -m 原来的分支名称 新的分支名称(不会笼罩同名分支)重命名分支: $ git branch -M 原来的分支名称 新的分支名称(会笼罩同名分支)在现有分支与指定的近程分支之间建设追踪关系: $ git branch --set-upstream 分支名称 近程分支名称⌚️ 查看历史状态以后状态: $ git status查看历史记录: $ git log???? 撤销批改撤销尚未提交的所有批改: $ git checkout head .撤销尚未提交的单个后缀文件: $ git checkout head *.后缀写这篇文章的目标作者在2020年的年末胜利的跳槽了一家公司,入职后发现前端人员比拟多,大家都依赖git去治理代码,这让我很尴尬呀,因为在上一家公司前端就我一个人,对于代码治理始终就是add . commit -m push这些操作,这些必定远远不够的,所以我决定整顿一份工作中罕用的git命令清单,作为工作中的操作字典,遗记的时候还能够查一下,完满,perfect!✨ ...

December 31, 2020 · 1 min · jiezi

关于git:一学就会的git

一学就会的git 命令 导读应用git 已不知好几年,最近想着把罕用的一些git 命令做个总结,本文次要写的是git罕用的命令。 浏览三连:点赞(????)、关注(????)、珍藏(????)。 本文 github (一学就会的Git命令操作) 已上传,更多往期文章已分类整理。几个罕用的命令mkdir folder_name // 创立文件夹 [folder_name: 文件夹名称,举个栗子:git-demo]cd folder_name // 进入文件夹touch file_name // 创立一个文件 [file_name:文件名称,举个栗子:index.js]vim file_name // 编辑一个文件 [举个栗子:vim index.js]rm -rf file_name // 删除文件或者文件夹 [rm -rf file_name]ls // 显示工作目录clear // 革除屏幕获取git 仓库第一种形式,将本地我的项目转换成git 仓库, 生成一个.git文件;mkdir git-demo //创立一个文件cd git-demogit init // 创立一个名为 .git 的子目录第二种形式,拉取(克隆)近程已存在的git仓库;git clone <url> // url 仓库地址git clone https://github.com/FishStudy520/git-demo.gitgit config (配置用户信息)配置用户信息(用户名和邮箱); git config user.name 'your name' // 配置用户名git config user.email 'your email' //配置用户邮箱查看配置信息 (显示配置信息); ...

December 31, 2020 · 3 min · jiezi

关于git:git-提示-fatal-Authentication-failed-的解决办法

以下几种状况可能会导致呈现这个问题: 输出了谬误用户名和明码批改了近程Git仓库的用户名和明码更换了近程Git仓库地址解决办法:关上 控制面板\所有控制面板项\凭据管理器\Windows 凭据,或间接搜寻“凭据管理器”, 在一般凭据一栏中找到对应仓库地址的凭据,点击删除。 删除后会提醒从新输出用户名和明码,只需正确输出即可。

December 29, 2020 · 1 min · jiezi

关于git:git-多用户配置多用户-公司个人

多用户配置公司和github,常常会遇到要多用户应用git的状况,以下为配置信息,以下拿xiaoxuete1 & xiaofute2举例设置ssh-keyssh-keygen -t rsa -C "xiaofute1@mail.com"会提醒存储的文件名,输出如果须要push时确认的明码,可在该步骤输出.pub文件内容复制到github的ssh-key配置中(勿忘,否则连贯不上)配置config文件新建config 文件,用来指定不同的用户读取的rsa文件 // 正文局部须要删除# Default userHost coding // host地址对应的别名,切换用户应用该名称HostName xxx.xx.xx.xx // host地址 我这里填的是公司搭建的git仓库的ip地址User xiaofute1 IdentityFile ~/.ssh/id_rsa_default // ssh-key文件地址 默认只会读取id_rsa# second userHost githubHostName github.comUser xiaofute2IdentityFile ~/.ssh/id_rsa_github切换用户// 这里就用到了配置文件中的host对应的字段ssh -T git@github // 输入示意胜利Hi xiaofute2! You've successfully authenticated, but GitHubdoes not provide shell access.验证出错验证过程中呈现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 删除 known_hosts 文件。执行以下命令 ssh -T -v git@xxx.xx.xx.xx用户名配置全局git config --global user.name "xiaofute1"git config --global user.email "xiaofute1@mail.com"本地本地仓库文件夹下配置用户名 会在以后仓库中提交试用该用户信息提交,笼罩全局的配置、git config user.name "xiaofute2"git config user.email "xiaofute2@mail.com"因为我的全局配置的为default user的用户名和邮箱,在github上的commits history中会link不到用户,所以每次git init 后须要配置该本地仓库的用户信息

December 29, 2020 · 1 min · jiezi

关于git:这-10-别名让你把-git-的玩的更-6

对于咱们前端打工人来说, git 是工作中罕用的一种根本工具,可能有一些人不喜爱用命令行操作 git,总是想要带图形界面的工具,当然能提供深色主题那就更好了。 只管在 VS Code 之类的 IDE 中提供了 git 的 GUI 扩大,但依然有很多场合须要依附命令行(CLI)操作才行。 上面我将介绍 10 个 git 别名,这些别名能够帮你更高效的应用 git 。 对于 git 别名git 别名个别依据用户的配置被存储在 ~/.gitconfig 中。也能够用 git config alias.s ‘status -s’ 命令来手动设置别名。 你能够把接下来我将要介绍的这些 git 别名增加到 ~/.gitconfig 文件的 [alias] 块中,这一部分存储了所有别名及其命令。 查看 git 别名git 命令行提供了很多选项,能够列出所有 git 配置和源的地位(零碎,用户或本地)。用 git config --list --show-origin 命令能具体列出所有的配置和源: [alias] s = status co = checkoutGit statusgit status 是一个罕用的命令,能够用上面这个别名为它提供一个快捷方式: [alias] s = status失效后是这样: $ git sOn branch mainYour branch is up to date with 'origin/main.nothing to commit, working tree cleanGit checkout咱们须要常常在 git 分支之间来回切换,上面来简化一下。 ...

December 29, 2020 · 2 min · jiezi

关于git:SourceTree-如何-GitLab

        公司开发越来越多应用 GitLab,而 SourceTree 是一款十分好用的 Git GUI 客户端工具        上面讲一下 Windows 环境下 SourceTree 如何连贯 GitLab。        首先下载 SourceTree 并且装置,依据提醒注册和登录 Bitbucket 后,胜利装置。         关上 Terminal ,应用以下命令生成 rsa 文件,引号中为注册 GitLab 时填写的邮箱。 ssh-keygen -t rsa -b 2048 -C "注册 GitLab 时填写的邮箱"        提醒是否在 C:\Users\asasL/.ssh/id_rsa 生成 id_rsa 文件,默认文件夹是用户目录,没什么特地要求间接回车。         第二步提醒输出明码。此处比拟重要,如果输出了明码,后续每次应用 SourceTree push 代码都会提醒输出明码,所以倡议不要设置明码,间接回车。         再次提醒输出明码,不要输出间接回车。        呈现下图示意胜利。         在用户目录的 .ssh 目录下会看到生成了 id_rsa 和 id_rsa.pub 两个文件。        而后关上 SourceTree → Tools → Options        SSH Client 抉择 OpenSSH         SSH Key 抉择之前生成的 id_rsa 文件,而后点击 OK。就能 clone GitLab 中的我的项目与 push 代码了。 ...

December 28, 2020 · 1 min · jiezi

关于git:git常用命令

初始化git init克隆我的项目git clone url提交git status //查看所有文件状态git add . //增加所有文件到暂存区git commit -m " " //"音讯内容" 提交暂存区中的内容到本地仓库 -m 提交信息git push //push到近程仓库查看近程仓库地址git remote -v更换remote地址git remote set-url origin url查看所有分支git branch -a查看以后应用分支(后果列表中后面标*号的示意以后应用分支)git branch创立分支git branch 分支名称切换分支git checkout 分支名git checkout -b 分支名 //切换并创立分支合并分支将某分支合并到以后分支git merge 某分支删除分支git branch -d 某分支删除暂存区文件查看暂存区文件: git ls-files暂存区删除该文件:git rm --cache filename 拉取我的项目git pull origin master 将GitHub 仓库里的我的项目拉下来idea中的git应用1 某文件查看本人之前提交比照已批改的右键——》Git——》显示历史——》点提交记录2 还原文件成上一次提交的状态右键——》Git——》revert 如有谬误心愿观者指出

December 28, 2020 · 1 min · jiezi

关于git:Git提交错了不用慌这三招帮你修改记录

大家好,明天咱们来聊聊git当中一个很重要的性能——历史记录的批改。 有的时候咱们会忽然发现某个中央须要批改,最常见的某个不应该被提交的文件被提交了进来。咱们心愿它不只是在后序的版本当中不再呈现,而是心愿整个从git仓库当中移除掉。这个时候咱们就须要批改git之前的历史记录。这个时候应该怎么办呢? 不要焦急,git当中有很多的伎俩能够批改之前的历史提交记录。 批改最初一次提交这一点咱们在之前的文章当中已经提到过,如果咱们只是想要批改最初一次的提交记录,这是比较简单的。咱们只须要间接批改咱们想要批改的局部,在提交的时候加上一个参数--amend即可。 `git commit --amend` amend的意思是补丁,它能够把咱们这一次的批改合并到上一条历史记录当中,而不会产生一个新的commit记录。运行之后,它会关上一个vim编辑器,咱们还能够批改上一次commit时输出的提示信息。 咱们应用git log查看的话,会发现历史记录的批改工夫还是上一次的工夫。看起来就如同什么也没有产生过一样,悄无声息地就改掉了。 批改多个信息--amend尽管好用,然而它只能批改最初一次的提交信息,如果咱们想要批改的提交记录在那之前,咱们应该怎么办呢? git当中并没有提供间接的工具来实现这一点,不过咱们能够应用rebase来达成。咱们能够加上-i进行交互式地变基,咱们能够在任何想要的批改实现之后进行,也能够增加文件或者是做其余想要做的事件。然而咱们变基的指标不是某一个分支而是以后分支的某一个历史节点,所以咱们须要提供一个具体的commitid或者是指针地位。 git rebase -i的性能十分弱小,咱们简直能够应用它来实现所有所有咱们想要实现的事件。 比方咱们想要批改倒数第二次提交,咱们能够执行git rebase -i HEAD~3。也就是以倒数第三个节点作为基准节点执行变基,这时候git会进入一个vim窗口,在这个窗口当中咱们能够看到最近的三次提交记录。 首先咱们能够看到下面的三行就是咱们能够批改的三个commit,别离展现的是要执行的操作以及commitid以及commit message。这里的操作默认的是pick,也就是应用该commit。对于咱们能够执行的操作git在下方也给了充沛的提醒,其中比拟罕用的有pick、edit以及squash。 这一次咱们想要做的是批改提交记录,所以咱们应该执行edit,咱们把想要批改的commit前的pick改成edit。比方这样: 退出之后,git会主动带咱们回到咱们抉择edit的分支提交之后的版本。咱们进行咱们想要的批改,这里我在第15篇文章当中加上了一行:尝试rebase。之后再应用git add以及git commit --amend进行批改提交后果。 再之后咱们执行git rebase --continue,把剩下要利用的变更利用实现。 所有都完结之后,咱们能够应用一下git show命令查看一下咱们批改的bee9ce3这个commit的记录。能够看到曾经多了这一行,阐明咱们的批改胜利了。 程序变更、合并、拆分程序变更咱们不仅能够批改某一次commit当中的内容,还能够批改这些commit的绝对程序,以及能够让它们合并以及拆分。 批改程序其实很简略,咱们只须要人为地批改rebase -i之后弹出的vim文件即可。比如说本来的记录是: `pick A change Apick B change Bpick C change C` 如果咱们想要更换程序,咱们只须要批改这个文件即可。比方变成: `pick B change Bpick A change Apick C change C` 那么当咱们在退出vim的时候,git会首先利用B commit的变更,再利用A最初利用C。 合并除此之外,咱们还能够合并多个commit记录成一个。操作的办法也很简略,就是咱们只须要把pick批改成squash。git会主动把所有squash的commit记录合并在一起。 `pick A change Asquash B change Bsquash C change C` 拆分有的时候一个commit十分微小,咱们可能也会想要将它拆分,其实操作也很简略。比方咱们想要把commit B拆分成两条,首先,咱们在rebase的时候将commit B后面的pick批改成edit。 `pick A change Aedit B change Bpick C change C` 当咱们退出的时候,咱们会进入到B commit刚刚提交完的状态。因为咱们要做的是拆分B这个提交,所以咱们须要执行git reset HEAD^,把上一次提交重置。而后再别离add咱们想要拆分开来提交的文件。 整个操作如下: `git reset HEAD^git add test/*git ci -m 'add test'git add code/*git ci -m 'update code'git rebase --continue` 这样咱们就把commit B拆分成了两个commit插入到了历史记录当中了。 最初的最初,大家须要留神,尽管这些伎俩在批改记录的时候十分好用。然而如果这些commit曾经被提交到了近程,咱们是不能够间接git push同步的。因为git会校验咱们提交的hash值,发现对不上之后会禁止咱们的提交。所以如果想要提交到近程的话,只能应用git push -f强制笼罩。然而这是一个十分十分危险的操作,如果你git push -f了,没有人会晓得你到底批改了什么,只倡议在本人独有的分支上如此操作,肯定肯定要审慎应用。 ...

December 28, 2020 · 1 min · jiezi

关于git:git原理学习记录从基本指令到背后原理实现一个简单的

一开始我还放心 git 的原理会不会很难懂,但在浏览了官网文档后我发现其实并不难懂,仿佛能够入手实现一个简略的 git,于是就有了上面这篇学习记录。 本文的叙述思路参照了官网文档Book的原理介绍局部,在一些节点上探讨代码实现,官网文档链接。 看完本文你能:1. 理解 git 的设计思维。2. 播种一点高兴? 编程语言抉择了 go,因为刚学不太熟悉想多应用一下。这是我的仓库地址,但如果你和我一样是初学,间接看代码可能不能疾速上手,举荐顺着文章看。 迷你git实现--链接 如果文章看得吃力能够跟着官网文档的原理局部操作一次再回头看,可能更易懂?init======== 在学习 git 原理之前,咱们先忘掉平时用的 commit,branch,tag 这些炫酷的 git 指令,前面咱们会摸清楚它们的实质的。 要晓得,git 是 Linus 在写 Linux 的时候顺便写进去的,用于对 Linux 进行版本治理,所以,记录文件我的项目在不同版本的变更信息是 git 最外围的性能。 大牛们在设计软件的时候总是会做相应的形象,想要了解他们的设计思路,咱们就得在他们的形象下进行思考。尽管说的有点玄乎,然而这些形象最终都会落实到代码上的,所以不用放心,很好了解的。 首先,咱们要奠定一个 ojbect 的概念,这是 git 最底层的形象,你能够把 git 了解成一个 object 数据库。 废话不多说,跟着指令操作,你会对 git 有一个全新的意识。首先咱们在任意目录下创立一个 git 仓库: 我的操作环境是 win10 + git bash$ git init git-testInitialized empty Git repository in C:/git-test/.git/ 能够看到 git 为咱们创立了一个空的 git 仓库,外面有一个.git目录,目录构造如下: $ lsconfig description HEAD hooks/ info/ objects/ refs/ 在.git目录下咱们先重点关注 .git/objects这个目录,咱们一开始说 git 是一个 object 数据库,这个目录就是 git 寄存 object 的中央。 ...

December 28, 2020 · 5 min · jiezi

关于git:Git-cherrypick二三事

前天在工作中踩了个cherry-pick的坑,所以抽时间写个对于cherry-pick的用法记录下。 简介在理论的开发工作中常常会遇到如下状况: 图中的abcdefgh示意不同的commmit节点, 在c节点时咱们建设出了2个不同的feature branch -- feature1和feature2来别离进行个性开发, 在工作中可能遇到,feature1分支开发里须要应用到commit g中所提交的内容,实现如下的成果:这时候就要用到cherry-pick的性能。换言之,cherry-pick的作用就是把某个特定的 commit 内容,利用到以后分支上。 根本用法根本命令如下: git cherry-pick <commitId>这里的commitId就比方上述场景里的节点g对应的commit id,能够在git log命令,或者应用gitlab页面或者其余git工具里查到。 进阶用法cherry pick 同样能够pick多个commit 如果是要pick独立的几个commit,能够应用如下命令:git cherry-pick <commitId1> <commitId2> <commitId3>如果是须要pick两个commit之间的所有的提交,则能够应用如下命令git cherry-pick <commitId m>..<commitId n> // pick m 到 n 之间的所有commit,不包含m,包含ngit cherry-pick <commitId m>^..<commitId n> // pick m 到 n 之间的所有commit,蕴含m,包含n当然,这里的m n必须是依照工夫程序的, m必须在n之前提交。 注意事项有必要提到的一个参数是 -n, 是--no-commit的缩写。 默认状况下git cherry-pick <commitId>命令会实现以下以下事件: 将特定commit里的改变使用到以后分支;在以后分支上立刻做一次commit,commit message即commit id对应的那次commit。第一点没有疑难,然而第二点这个性能如果不留神(尤其是习惯应用小乌龟,source tree之类的敌人)进行cherry-pick时,如果没认真看的话,在某些场景下很容易出问题,举个例子: 对于某些项目组,我的项目的开发周期划分比拟清晰,代码的提交阶段分为个别开发阶段,回归测试fix阶段等等,这种划分会体现在commit message的前缀里,假如规定如下: 开发阶段的所有commit message必须是DEV:xxxxx的模式,xxx是具体的提交内容;回归测试阶段,所有commit message必须RT:xxx模式,xxx是具体的提交内容;(这类规定在大型项目里比拟常见,能够比拟不便地做一些治理和统计,比方防止在回归阶段做新性能开发等等),接下来就是重点了: 如果咱们在回归测试阶段遇到一个bug须要fix,并且在fix过程发现有一些改变时能够借用其余分支在开发阶段某次commit的内容。这时候很天然地,咱们会想到应用cherry-pick,然而这时候如果不应用 -n参数,就会导致把开发阶段的commit message,提交到RT阶段。(前事不忘;后事之师,心愿大家不要像我一样犯这种谬误-_-) 所以十分倡议每次应用 cherry-pick都带上-n参数,即只保留文件改变,不做额定commit ...

December 27, 2020 · 1 min · jiezi

关于git:常见git命令

前言实习六个月了,总结了一些罕用的github命令:咱们公司用的办法是先把公司库Fork下来,在本人的本地库批改之后push到本人的近程库上,而后提交PR,他人通过之后就合并了。而且个别不必merge,而用rebase使git树看起来是一条直线(我虽肤浅又很通透的意识),开发代码用的是VSCode,这下面也有治理git的工具(这个在公司电脑上很好用,but not mine) 参考应用 SSH 连贯到 GitHubgithub----向开源框架提交pr的过程这些博客真的帮忙了我很多很多,非常感谢博主们。 流程:申请账号,增加公钥。咱们公司用的是ssh,这个申请权限应用 SSH 连贯到 GitHub。工夫长了,这里就不都赘述了(其实我忘了)。具体过程:fork -> clone -> 创立分支 ->批改代码 -> 提交 ->提交PR能够参见github----向开源框架提交pr的过程 我罕用的几个命令git add .git commitgit statusgit fetch upstreamgit rebase upstream mastergit push origin master -fgit rebase -i HEAD~ngit resetgit checkout -b branchNamegit branch -d branchName不罕用的几个命令 git diff 参见Diff命令VScode自带的或者能够下载的工具 以下操作是没有通过fork的,且在master分支下间接操作的流程。如果想切换分支的话,能够执行:git checkout -b checkName。PS:最开始我都在在master分支下执行的,起初须要PR的多了,就缓缓应用了分支这种形式。切实是太不便了。而且VScode自带工具也很不便操作 进入正题git add把更改的文件从工作区workspace增加到暂存区stash外面,commit前的必须工作。git diff命令能够查看两者的区别(我不罕用)git add . :把所有更改的文件增加到stage外面git add fileName git commit把缓存区里的文件增加到版本库中,git diff head能够查看两者区别,最好是git commit -m "commit信息",如果间接git commit可能会出错,另外commit message标准 ...

December 25, 2020 · 1 min · jiezi