关于git:在多次提交后给某个commit添加tag

应用git log查看提交日志,找出你须要的那个commit。假如提交的commit id为“928a92a123456b126eb1234567c210ab8f1234e9d”应用git checkout <commit id>,例如git checkout 928a92a123456b126eb1234567c210ab8f1234e9d应用git tag进行打标签,例如:git tag v1.0.1而后将本地的git标签提交到近程仓库上,git push origin v1.0.1

September 2, 2020 · 1 min · jiezi

关于git:gitflow版本分支管理策略

1. git&GitFlow1.1. git应用暂无 1.2. GitFlow版本分支管理策略GitFlow开发模型从源代码治理角度对通常意义上的软件开发流动进行了束缚。为咱们的软件开发提供了一个可供参考的治理模型。GitFlow开发模型让开发代码仓库放弃整洁,让小组各个成员之间的开发互相隔离,可能无效防止因处于开发状态中的代码相互影响而导致的效率低下和凌乱。 所谓开发模型,在不同的开发团队,不同的文化,不同的我的项目背景、规模、复杂程度的状况下都有可能须要进行适当的裁剪或裁减。 1.2.1. GitFlow的罕用分支GitFlow的罕用分支包含master、develop、feature、release、hotfix,其中master、develop是近程分支,feature、release、hotfix是本地分支。近程分支是指须要push到gitlab、github近程仓库中。本地分支指开发人员的本地开发时应用的git版本控制环境。 1.2.2. GitFlow的流程图如下 须要把握每个分支的用处,何时创立分支,从哪个分支产生,合并到哪个分支去。 1.2.3. master分支 Ø 主分支,Master分支是最为稳固的,性能比拟残缺的,随时可公布生产环境的代码。留神永远不要在 master 分支上间接开发和提交代码,以确保 master 上的代码始终可用。 Ø master分支是惟一的只读分支,只能从其余分支(release/hotfix)合并,不能在此分支批改。 Ø 另外所有在master分支的推送应该打标签做记录,不便追溯,例如release合并到master,或hotfix合并到master,都须要打tag。 1.2.4. develop分支Ø 用作平时开发的主分支,并始终存在,永远是性能最新最全的分支,基于master分支克隆(仅一次) Ø feature性能分支实现,自测通过,合并到develop,而后删除feature分支 留神:禁止将未编译或编译不通过的代码提交到近程仓库,如果编码工作进行未实现能够提交到本地仓库中,期待该性能点全副实现并自测通过后再将代码推送到近程仓库中。 Ø 当develop分支收集了须要上线的所有性能,即蕴含所有要公布到下一个release的代码,从develop分支拉取release分支 , 进行提测 Ø release/hotfix 分支上线结束 , 合并到develop并推送 1.2.5. feature分支 Ø 性能开发分支,次要用来开发新的性能,基于develop分支克隆,性能开发结束,并自测通过后合到develop分支 Ø feature分支可同时存在多个,用于团队中多个性能同时开发,属于长期分支,性能实现后可选删除 1.2.6. release分支 Ø 测试分支,次要用于提交给测试人员进行功能测试,基于feature分支合并到develop之后,从develop分支克隆 Ø 测试过程中发现的BUG在本分支进行修复,修复时创立修复分支bugfix-*,修复实现所有bug上线后一次性合并到develop/master分支并推送(实现性能),在master分支打Tag Ø 属于长期分支, 性能上线后可选删除留神:如果开始了release分支的测试之后,不容许再将develop分支的新性能合并到release分支,因为release分支曾经开始测试,如果合并新性能则须要全副从新测试,尽量将新性能放到下一个release版本中公布。 1.2.7. hotfix分支 Ø 补丁分支,基于master分支克隆 , 次要用于对线上的版本进行BUG修复 Ø 修复结束后合并到develop/master分支并推送 , 并在master分支打Tag Ø 属于长期分支 , 补丁修复上线后可选删除 ...

August 30, 2020 · 1 min · jiezi

关于git:小程序代码托管无忧云效代码管理接入支付宝小程序平台

8月24日,阿里云云效代码治理(Codeup)正式接入支付宝小程序开放平台。小程序开发者再也不必放心代码托管问题,在支付宝开放平台上即可一键将代码托管到云端。 云效代码治理(Codeup)源自阿里巴巴自研代码平台,提供代码托管、代码评审、代码扫描、品质检测等性能。 代码是企业的外围资产,平安问题是很多企业、开发者在思考代码托管问题首先思考的问题。云效Codeup采纳多正本高可用架构,全副零碎架构在阿里云基础设施上,主动备份免运维,让开发者更省心。不仅如此,云效代码治理(Codeup)下层还提供了事先、事中、预先多种丰盛的平安个性,全方位保障企业的代码平安,让小程序开发者更释怀。 此外,云效还反对丰盛的代码评审场景,内置的自动化代码检测和智能耗时预估等多种智能化代码能力,能够帮忙小程序开发者晋升研发和合作效率。 目前,云效代码治理(Codeup)已撑持阿里巴巴团体百万级代码库、数万名工程师的合作。 阿里云、支付宝开放平台上的开发者,均可收费应用云效代码治理(Codeup)的全副性能,且不限容量、不限用户数。 作为企业级一站式DevOps平台,除代码治理能力外,云效还提供项目管理、流水线、测试治理、制品仓库、WebIDE、知识库等多款产品。 将来,云效也将联结更多合作伙伴,输入更多产品能力,继续赋能开发者。 云效,您的智能研发助手在以后数字智能时代,什么样的平台,领有什么样的能力,能力让咱们更容易的成为精英研发团队?云效始终在思考这个问题。 首先,从合作、编码、测试、交付、利用运维,能够全面应用云化工具一站式实现。先进的工具加上先进的理念能够帮忙企业构建通明高效的组织。当咱们一直生产和积攒常识后,研发数字化的魅力开始展示。在将来智能化研发助手将成为承载咱们最先进的软件工程技术和能力的化身,会承当两大职责:1、代替人去实现繁琐的工作,比方缺点排查、故障发现、继续监控、帮助沟通等等。2、成为软件交付专家,依据每个企业的理论状况,推送最优质的代码,最合适的编程框架,最适宜团队的流程改良倡议等等。 让每个企业都能够成为精英研发团队是咱们的幻想,为此咱们一直迭代产品沿着这个路线后退。明天我很荣幸给大家演示下云效智能研发助手的一些落地场景。

August 27, 2020 · 1 min · jiezi

关于git:CODING-DevOps-代码质量实战系列第二课-PHP-版

讲师介绍杨周 CODING DevOps 架构师 CODING 布道师 间断创业者、DIY/Linux 玩家、知乎小 V,曾在翻新工场、百度负责后端开发。十余年一线研发和带队教训,经验了 ToB、ToC、O2O、国内、出海各种我的项目,见证了云计算时代的诞生,善于研发最佳实际:Code Review、DevOps、Git Workflow、麻利开发、架构、极客办公硬件。 PHP 老我的项目常见品质问题问题一:未提交 composer.lockComposer 官网文档(getcomposer.org)揭示:肯定要提交 composer.lock 文件到代码库,能力确保所有人、所有机器装置的依赖包都是同一版本。 问题二:提交了 vendor把第三方包的代码提交到了本人的代码库里,导致代码库过大,拉取速度慢,并且无奈跟进第三方包的降级。所以,应该应用.gitignore 疏忽vendor 目录。 解决方案:删除 vendor,执行 composer install,再把 composer.lock 提交到代码库。 后果报错: 1.应用了废除的包; 2.应用了已废除的语法; 3.框架命令执行失败。 查看 PHP 官网文档能够发现:PHP 7.4 不赞成应用花括号语法来拜访数组元素和字符串偏移量。 批改之后即可解决,从这个技术细节能够看出此开源我的项目无奈跟上 PHP 官网的版本升级,在咱们做技术选型时要防止应用这种落后的我的项目、框架,而应应用寰球出名框架,可能紧跟语言官网版本升级,目前 PHP 7.1 曾经废除,7.2 行将完结保护降级,倡议大家应用 7.4 。 批改 composer 包如果须要批改 vendor 中的第三方包,有两个方法: 1.Fork:批改代码→制作补丁,本人用 → 发动合并申请,回馈开源; 2.公有 composer 仓库:把批改后的包公布到 coding.net 制品库。 ...

August 27, 2020 · 1 min · jiezi

关于git:三年-Git-使用心得-常见问题整理

作者丨秋天不落叶 https://juejin.im/post/5ee649... Git 流程图 Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:近程仓库配置 Git# 配置全局用户$ git config --global user.name "用户名"$ git config --global user.email "git账号"# 配置别名$ git config --global alias.co checkout$ git config --global alias.ss status$ git config --global alias.cm commit$ git config --global alias.br branch$ git config --global alias.rg reflog# 这里只是丑化 log 的输入,理论应用时能够在 git lg 前面加命令参数,如:git lg -10 显示最近10条提交$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"# 删除全局配置$ git config --global --unset alias.xxx$ git config --global --unset user.xxx查看 Git 信息# 查看系统配置$ git config --list# 查看用户配置$ cat ~/.gitconfig# 查看以后我的项目的 git 配置$ cat .git/config# 查看暂存区的文件$ git ls-files# 查看本地 git 命令历史$ git reflog# 查看所有 git 命令$ git --help -a# 查看以后 HEAD 指向$ cat .git/HEAD# git 中 D 向下翻一行 F 向下翻页 B 向上翻页 Q 退出# 查看提交历史$ git log --oneline --grep="关键字" --graph --all --author "username" --reverse -num -p --before= 1 day/1 week/1 "2019-06-06" --after= "2019-06-06" --stat --abbrev-commit --pretty=format:"xxx" # oneline -> 将日志记录一行一行的显示# grep="关键字" -> 查找日志记录中(commit提交时的正文)与关键字无关的记录# graph -> 记录图形化显示 !!!# all -> 将所有记录都具体的显示进去# author "username" -> 查找这个作者提交的记录# reverse -> commit 提交记录程序翻转# before -> 查找规定的工夫(如:1天/1周)之前的记录# num -> git log -10 显示最近10次提交 !!!# stat -> 显示每次更新的文件批改统计信息,会列出具体文件列表 !!!# abbrev-commit -> 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符 !!!# pretty=format:"xxx" -> 能够定制要显示的记录格局 !!!# p -> 显示每次提交所引入的差别(按 补丁 的格局输入)!!!git reflog「显示的是一个 HEAD 指向产生扭转的工夫列表」。在你切换分支、用 git commit 进行提交、以及用 git reset 撤销 commit 时,HEAD 指向会扭转,但当你进行 git checkout -- <filename> 撤销或者 git stash  存储文件等操作时,HEAD 并不会扭转,这些批改素来没有被提交过,因而 reflog 也无奈帮忙咱们复原它们。git reflog 不会永远放弃,Git 会定期清理那些 “用不到的” 对象,不要指望几个月前的提交还始终在那里。git log 点线图「git 中一条分支就是一个指针,新建一条分支就是基于以后指针新建一个指针」「切换至某个分支 ,就是将 HEAD 指向某条分支(指针)」「切换至某个 commit ,就是将 HEAD 指向某个 commit」符号解释: ...

August 24, 2020 · 8 min · jiezi

关于git:没想到Git居然有3种后悔药

你晓得Git版本控制系统中都有哪些“后悔药”吗? 本文通过案例解说git reset 、 git revert 、 git checkout在版本控制中的作用; 场景小明同学作为新人退出到一个新的项目组中做开发,在我的项目的迭代开发中,小明勤勤恳恳的写代码,直到有一次... 小明:完了,完蛋了洋仔:怎么了,一惊一乍的小明:我把错误代码用git commit后还push到线上代码库了! 这可怎么办!洋仔:莫慌,git有“后悔药”! 洋仔:容我给你缓缓道来。 然而咱们要先晓得一些git的基础知识,你能力更好的了解git命令的作用准备常识git将我的项目的存储分为4局部,每局部有本人作用, 见下图: Workspace:工作区(以后用户操作批改的区域)Index / Stage:暂存区 (add后的区域)Repository:仓库区或本地仓库(commit后的区域)Remote:近程仓库(push后的区域)整体过程能够简述为: 工作区–>add–>暂存区–>commit–>本地仓库区–>push–>近程仓库区近程仓库区–>fetch–>应用refsremotes下对应分支文件记录近程分支末端commit_id 和 本地仓库区 -->merge–>工作区近程仓库区–>pull–>应用refsremotes下对应分支文件记录近程分支末端commit_id and 本地仓库区 and 工作区具体的git的组成部分和概念命令,请移步下述两个博客(超链接): Git技术干货!工作中Git的应用实际和常用命令合集! Git - 应用git不晓得外部实现机制怎么行 假如我的项目存在这么一个提交记录: $ git logcommit commit_id4 (HEAD -> master)Author: testDate: Thu Aug 20 16:28:45 2020 +0800 第三次批改README文件commit commit_id3 (HEAD -> master)Author: testDate: Thu Aug 20 16:28:45 2020 +0800 第二次批改README文件commit commit_id2Author: testDate: Thu Aug 20 16:28:19 2020 +0800 第一次批改README文件commit commit_id1Author: testDate: Thu Aug 20 16:26:59 2020 +080 初始化我的项目提交程序为:commit_id1 --> commit_id2 --> commit_id3 --> commit_id4 ...

August 20, 2020 · 2 min · jiezi

关于git:个人整理Hive安装手册1后期不断更新

1.上传tar包 2.解压     tar -zxvf hive-1.2.1.tar.gz 3.装置mysql数据库    举荐yum 在线装置(运行脚本装置) 4.配置hive     (a)配置HIVE_HOME环境变量           vi conf/hive-env.sh          配置其中的$hadoop_home          (b)配置元数据库信息           vi  hive-site.xml          增加如下内容:         <configuration>         <property>         <name>javax.jdo.option.ConnectionURL</name>         <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>         <description>JDBC connect string for a JDBC metastore</description>         </property>         <property>         <name>javax.jdo.option.ConnectionDriverName</name>         <value>com.mysql.jdbc.Driver</value>         <description>Driver class name for a JDBC metastore</description>         </property> ...

August 20, 2020 · 2 min · jiezi

关于git:CODING-仪表盘功能正式推出实现工作数据可视化

CODING 仪表盘性能现已正式推出!该性能旨在用一张张统计卡片的模式,统计并展现应用 CODING 中所产生的数据。这意味着无需额定的设置,就能够收集演绎贵重的工作数据并予之量化剖析。这些海量的数据皆会以图表或列表的形式跃然纸上,不便团队成员随时查看各项目标进度、状态和指标,云端合作迎来真正意义上的工作数据可视化。 本文将介绍如何配置仪表盘,内容包含如何应用仪表盘中的统计卡片编辑、自在拖拽统计卡片,自定义仪表盘布局等自定义性能,并简要展现每张统计卡片的作用及统计范畴,点击浏览原文可查阅各统计卡片具体阐明。 如何配置点击仪表盘「自定义」按钮进入编辑状态后,能够进行增加卡片、统计卡片编辑、统计卡片拖拽等仪表盘布局操作。 您的每次设置只会利用于集体视图,不会影响团队中其余成员的视图。 增加卡片在编辑状态中点击「增加卡片」按钮,右侧会浮现菜单栏展现各统计卡片,可拖拽至仪表盘面板实现卡片的增加。 统计卡片编辑在编辑状态中点击卡片右上角的编辑或删除按钮,能够对卡片进行重命名或调整统计范畴,还能够删除卡片。 统计卡片拖拽每张卡片均可拖动调整卡片地位,点击卡片空白处可拖拽整张卡片。 若需调整单张卡片的范畴,则需点击卡片右下角进行横向调整。 各统计卡片阐明卡片分为我的项目协同、代码仓库和继续集成三类: 我的项目协同蕴含我的项目列表、近期事项数、进行中的迭代、迭代概览、长期滞留事项和近期事项趋势。 代码仓库蕴含近期的合并申请数量、近期合并申请列表、近期代码提交统计和代码提交排名。 继续集成蕴含近期构建次数和近期构建趋势。 点击查阅各统计卡片具体阐明。对于 CODING,理解更多

August 20, 2020 · 1 min · jiezi

关于git:macos-git修改账号密码

git config --global credential.helper osxkeychaingit config --global user.name "账号"git config --global user.email "邮箱"git config --global user.password "明码"

August 20, 2020 · 1 min · jiezi

关于git:git-submodule-子仓库使用

git仓库嵌套子仓库应用计划话不多说,间接贴代码git clone https://father.gitcd father# 子仓库1git submodule add http://child1.gitgit statusgit commit -am "add child1"git pull origin branchgit push origin branch# 子仓库2git submodule add http://child2.gitgit commit -am "add child2"git pull origin branchgit push origin branch如果git submodule 过程中遇到问题如warning: adding embedded git repository: 子仓库namehint: You've added another git repository inside your current repository.hint: Clones of the outer repository will not contain the contents ofhint: the embedded repository and will not know how to obtain it.hint: If you meant to add a submodule, use:hint: hint: git submodule add <url> 子仓库namehint: hint: If you added this path by mistake, you can remove it from thehint: index with:hint: hint: git rm --cached 子仓库name这个时候就证实你没有submodule add 胜利,须要将缓存中的革除。git rm --cached 子仓库name,此时如果报错如下:# errorfatal: not removing 'module-name' recursively without -r# 将命令批改成git rm -r --cached module-namesubmodule add 胜利之后 git status 查看可看到 new file .gitmodules这个时候证实胜利了。对于子仓库的应用心愿能帮到你,有问题能够留言。 ...

August 19, 2020 · 1 min · jiezi

关于git:CODING-DevOps-微服务项目实战系列最后一课周四开讲

随着软件工程越来越复杂化,如何在 Kubernetes 集群进行灰度公布成为了生产部署的”必修课“,而如何实现平安可控、自动化的灰度公布也成为了继续部署重点关注的问题。CODING DevOps 微服务项目实战系列最初一课:《DevOps 微服务项目实战:基于 Nginx-ingress 的自动化灰度公布》将由 CODING DevOps 后端开发工程师 王炜老师 向大家介绍 Nginx-ingress 灰度公布的原理,并联合 Demo 深刻解说如何实现自动化的灰度公布。 课程主题DevOps 微服务项目实战: 基于 Nginx-ingress 的自动化灰度公布 课程工夫8 月 20 日(周四)19:00 课程讲师王炜 CODING DevOps 后端开发工程师 CODING DevOps 后端开发工程师,多年研发教训,云原生、DevOps、Kubernetes 深度实践者,领有 Kubernetes CKA、CKAD、AWS 架构师认证。 课程纲要什么是灰度公布自动化 A/B 测试自动化灰度公布如何建设部署流水线扫描 海报二维码 即可预约系列课程 对于 CODING,理解更多

August 19, 2020 · 1 min · jiezi

关于git:Git配置多个SSHKey这样搞超简单

背景个别状况下,当有多个git账号,如果没有咧,都去尝试一下,例如: gitee账号,国产github,码云值得领有github账号,寰球最大同性交友网站gitlab账号,公司外部的工作开发,至多我所在开发组应用的这个解决方案解决办法很简略,新建一个config文件就能够了。 1、本地生成SSH-Key生成一个gitee用的SSH-Key $ ssh-keygen -t rsa -C 'xxxxx@163.com' -f ~/.ssh/gitee_id_rsa生成一个github用的SSH-Key $ ssh-keygen -t rsa -C 'xxxxx@163.com' -f ~/.ssh/github_id_rsa生成一个公司用gitlab的SSH-Key $ ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitlab_id_rsa在默认文档中就会生成如下这些文件: 2、git平台设置中将 .pub 文件中内容复制到相应的平台SSH设置中,例如: gitee_id_rsa.pub中的文件内容复制到码云的SSH公钥中。 3、新建config文件在 ~/.ssh 目录下新建一个config文件,增加如下内容: # giteeHost gitee.comHostName gitee.comPreferredAuthentications publickeyIdentityFile ~/.ssh/gitee_id_rsa# githubHost github.comHostName github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/github_id_rsa# gitlabHost xxxx.comHostName xxxx.comPreferredAuthentications publickeyIdentityFile ~/.ssh/gitlab_id_rsa其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的门路。 切实不知道Host和HostName怎么填的呢,譬如不晓得公司外部的服务器域名,能够在known_hosts文件中查看。 4、测试是否联通用ssh命令别离测试,@前面跟着的是域名呀。 $ ssh -T git@gitee.com$ ssh -T git@github.com$ ssh -T git@xxxx.com看到界面返回欢送标语的时候,就阐明胜利啦。 至此,你就能够在同一台电脑上,欢快的进行各大平台的代码提交。 ...

August 18, 2020 · 1 min · jiezi

关于git:CODING-DevOps-微服务项目实战系列第二课来啦

近年来,工程项目的构造越来越简单,须要接入适合的继续集成流水线模式,能力满足更多变的需要,那么如何优雅地应用 CI 能力晋升生产效率呢?CODING DevOps 微服务项目实战系列第二课 《DevOps 微服务项目实战:CI 进阶用法》 将由 CODING DevOps 全栈工程师 何晨哲老师 向大家介绍继续集成流水线的进阶能力,联合示例解说各种场景下的继续集成用法,解放重复性劳动,更快交付成绩。 课程主题DevOps 微服务项目实战:CI 进阶用法 课程工夫8 月 19 日(周三)19:00 课程讲师何晨哲 CODING DevOps 全栈工程师 CODING DevOps 全栈工程师,CODING Devops 自研制品库/CI 从 0 到 1 开创者。热衷于钻研分享全栈常识、DevOps 技术。 课程纲要DevOps 我的项目构造剖析CI JenkinsFile 构造分析不同场景的 CI Pipeline 用法扫描 海报二维码 即可预约系列课程 对于 CODING,理解更多

August 18, 2020 · 1 min · jiezi

关于git:fatal-unable-to-access-仓库地址-Could-not-resolve-host-gitlab

例如gitlab仓库的域名是http://127.1.1.1.1:8080而clone的地址却是http://gitlab/xxx/xxx.git就会呈现报错:fatal: unable to access 'http://gitlab/xx/xxx.git/': Could not resolve host: gitlab解决办法:将gitlab替换成仓库域名也就是clone的地址变成:http://127.1.1.1.1:8080/xxx/xxx.git git clone/pull/push失败的其余起因:1.仓库权限不够,让有权限的我的项目成员给你改一下就行了2.remote: HTTP Basic: Access denied:本地git的账号密码与仓库注册时的账号密码不统一,从新设置一下本地git的账号密码或者是注册仓库的账号密码,只有保持一致就行了。

August 18, 2020 · 1 min · jiezi

关于git:fatal-unable-to-access-仓库地址-Could-not-resolve-host-gitlab

例如gitlab仓库的域名是http://127.1.1.1.1:8080而clone的地址却是http://gitlab/xxx/xxx.git就会呈现报错:fatal: unable to access 'http://gitlab/xx/xxx.git/': Could not resolve host: gitlab解决办法:将gitlab替换成仓库域名也就是clone的地址变成:http://127.1.1.1.1:8080/xxx/xxx.git git clone/pull/push失败的其余起因:1.仓库权限不够,让有权限的我的项目成员给你改一下就行了2.remote: HTTP Basic: Access denied:本地git的账号密码与仓库注册时的账号密码不统一,从新设置一下本地git的账号密码或者是注册仓库的账号密码,只有保持一致就行了。

August 18, 2020 · 1 min · jiezi

关于git:精通Git第二版简体中文

精通Git第二版简体中文 下载地址:https://pan.baidu.com/s/19mgLag2I4nq_Kmq1T16MfA 扫码上面二维码关注公众号回复100004 获取分享码 本书目录构造如下: 第 1章 入门 1 1.1 对于版本控制 1 1.1.1 本地版本控制系统 1 1.1.2 集中式版本控制系统 2 1.1.3 分布式版本控制系统 3 1.2 Git简史 4 1.3 Git根底 4 1.3.1 快照,而非差别 4 1.3.2 简直所有操作都在本地执行 5 1.3.3 Git的完整性 6 1.3.4 Git通常只减少数据 6 1.3.5 三种状态 7 1.4 命令行 8 1.5 装置Git 8 1.5.1 Linux上的装置办法 8 1.5.2 Mac上的装置办法 8 1.5.3 Windows上的装置办法 9 1.5.4 从源码装置 9 1.6 Git的首 次配置 10 1.6.1 用户身份 11 1.6.2 集体编辑器 11 1.6.3 查看集体设置 12 1.7 获取帮忙 12 1.8 小结 12 第 2章 Git根底 13 ...

August 17, 2020 · 4 min · jiezi

关于git:精通Git

精通Git 下载地址: https://pan.baidu.com/s/12kJefrDUhvsPhvfBug2VEA 扫码上面二维码关注公众号回复100012 获取分享码 本书目录构造如下: ProGit. . . . . . .  . . . . . . . . . . . . . . . 1 Scott Chacon 序 . . . . . . . . . . . . . .  . . . . . . . 2 Ben Straub 序 . . . . . . .  . . . 3 ...

August 17, 2020 · 12 min · jiezi

关于git:Git-如何同步上游分支代码

小伙伴们,当参加开源我的项目或者采纳 Fork 模式来协同开发时,经常会在本人的 Fork 分支上提交各种批改。然而有一个问题? 上游仓库,也就是源分支代码更新了,咱们 Fork 的上游分支,怎么同步上游仓库的更新呢? 本文是 Git 小常识系列文章的第一篇,当前将不定时的推送开发中常见的 Git 问题解决方案,Git 应用小技巧。 如果你喜爱的话,记得四连一下,分享,点赞,珍藏,留言 上面让咱们来看看规范的七步法计划,轻松搞定这个问题。 第一步:查看所有近程库的近程地址git remote -v 第二步:增加源分支 URLgit remote add upstream [源我的项目 URL] 第三步:查看所有近程库的近程地址git remote -v 第四步:从源分支获取最新的代码git fetch upstream 第五步:切换到主分支git checkout master 第六步:合并本地分支和源分支git merge upstream/master 第七步:Push 到 Fork 分支git push 愿者上钩如何同步上游分支代码? 老铁四连一下,分享,点赞,珍藏,留言

August 15, 2020 · 1 min · jiezi

关于git:git报错no-matching-key-exchange-method-found

git报错:no matching key exchange method found. Their offer: diffie-hellman-group1-sha1须要在用户目录下的 .ssh文件夹下新建一个 config 文件,增加: Host * KexAlgorithms +diffie-hellman-group1-sha1原文:http://www.mamicode.com/info-detail-2358181.html

August 14, 2020 · 1 min · jiezi

关于git:git报错no-matching-key-exchange-method-found

git报错:no matching key exchange method found. Their offer: diffie-hellman-group1-sha1须要在用户目录下的 .ssh文件夹下新建一个 config 文件,增加: Host * KexAlgorithms +diffie-hellman-group1-sha1原文:http://www.mamicode.com/info-detail-2358181.html

August 14, 2020 · 1 min · jiezi

关于git:如何规范你的Git-commit

简介: commit message应该如何写才更清晰明了?团队开发中有没有遇到过让人头疼的git commit?本文分享在git commit标准建设上的实际,规定了commit message的格局,并通过webhook在提交时进行监控,防止不标准的代码提交。 背景Git每次提交代码都须要写commit message,否则就不容许提交。一般来说,commit message应该清晰明了,阐明本次提交的目标,具体做了什么操作……然而在日常开发中,大家的commit message千奇百怪,中英文混合应用、fix bug等各种抽象的message司空怪罪,这就导致后续代码保护老本特地大,有时本人都不晓得本人的fix bug批改的是什么问题。基于以上这些问题,咱们心愿通过某种形式来监控用户的git commit message,让标准更好的服务于品质,进步大家的研发效率。 标准建设标准梳理初期咱们在互联网上搜寻了大量无关git commit标准的材料,但只有Angular标准是目前应用最广的写法,比拟正当和系统化,并且有配套的工具(IDEA就有插件反对这种写法)。最初综合阿里巴巴高德地图相干部门已有的标准总结出了一套git commit标准。 commit message格局 <type>(<scope>): <subject>type(必须) 用于阐明git commit的类别,只容许应用上面的标识。 feat:新性能(feature)。 fix/to:修复bug,能够是QA发现的BUG,也能够是研发本人发现的BUG。 fix:产生diff并主动修复此问题。适宜于一次提交间接修复问题to:只产生diff不主动修复此问题。适宜于屡次提交。最终修复问题提交时应用fixdocs:文档(documentation)。 style:格局(不影响代码运行的变动)。 refactor:重构(即不是新增性能,也不是批改bug的代码变动)。 perf:优化相干,比方晋升性能、体验。 test:减少测试。 chore:构建过程或辅助工具的变动。 revert:回滚到上一个版本。 merge:代码合并。 sync:同步主线或分支的Bug。 scope(可选) scope用于阐明 commit 影响的范畴,比方数据层、管制层、视图层等等,视我的项目不同而不同。 例如在Angular,能够是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。如果你的批改影响了不止一个scope,你能够应用*代替。 subject(必须) subject是commit目标的简短形容,不超过50个字符。 倡议应用中文(感觉中国人用中文形容问题能更分明一些)。 结尾不加句号或其余标点符号。依据以上标准git commit message将是如下的格局:fix(DAO):用户查问短少username属性 feat(Controller):用户查问接口开发以上就是咱们梳理的git commit标准,那么咱们这样标准git commit到底有哪些益处呢? 便于程序员对提交历史进行追溯,理解产生了什么状况。一旦束缚了commit message,意味着咱们将谨慎的进行每一次提交,不能再一股脑的把各种各样的改变都放在一个git commit外面,这样一来整个代码改变的历史也将更加清晰。格式化的commit message才能够用于自动化输入Change log。监控服务通常提出一个标准之后,为了大家更好的执行标准,就须要进行一系列的拉通,比方分享给大家这种标准的长处、能带来什么收益等,在大家都认同的状况下最好有一些强制性的措施。当然git commit标准也一样,后期咱们分享完标准之后思考从源头进行强制拦挡,只有大家提交代码的commit message不符合规范,间接不能提交。但因为代码仓库操作权限的问题,咱们最终抉择了应用webhook通过发送正告的模式进行监控,督促大家依照标准执行代码提交。除了监控git commit message的标准外,咱们还退出了大代码量提交监控和删除文件监控,缩小研发的代码误操作。 整体流程 服务注册:服务注册次要实现代码库相干信息的增加。反复校验:避免merge request再走一遍验证流程。音讯告警:对不符合规范以及大代码量提交、删除文件等操作发送告警音讯。DB:存我的项目信息和git commit信息便于后续统计commit message标准率。webhook是作用于代码库上的,用户提交git commit,push到仓库的时候就会触发webhook,webhook从用户的commit信息外面获取到commit message,校验其是否满足git commit标准,如果不满足就发送告警音讯;如果满足标准,调用gitlab API获取提交的diff信息,验证提交代码量,验证是否有重命名文件和删除文件操作,如果存在以上操作还会发送告警音讯,最初把所有记录都入库保留。 ...

August 13, 2020 · 1 min · jiezi

关于git:如何规范你的Git-commit

简介: commit message应该如何写才更清晰明了?团队开发中有没有遇到过让人头疼的git commit?本文分享在git commit标准建设上的实际,规定了commit message的格局,并通过webhook在提交时进行监控,防止不标准的代码提交。 背景Git每次提交代码都须要写commit message,否则就不容许提交。一般来说,commit message应该清晰明了,阐明本次提交的目标,具体做了什么操作……然而在日常开发中,大家的commit message千奇百怪,中英文混合应用、fix bug等各种抽象的message司空怪罪,这就导致后续代码保护老本特地大,有时本人都不晓得本人的fix bug批改的是什么问题。基于以上这些问题,咱们心愿通过某种形式来监控用户的git commit message,让标准更好的服务于品质,进步大家的研发效率。 标准建设标准梳理初期咱们在互联网上搜寻了大量无关git commit标准的材料,但只有Angular标准是目前应用最广的写法,比拟正当和系统化,并且有配套的工具(IDEA就有插件反对这种写法)。最初综合阿里巴巴高德地图相干部门已有的标准总结出了一套git commit标准。 commit message格局 <type>(<scope>): <subject>type(必须) 用于阐明git commit的类别,只容许应用上面的标识。 feat:新性能(feature)。 fix/to:修复bug,能够是QA发现的BUG,也能够是研发本人发现的BUG。 fix:产生diff并主动修复此问题。适宜于一次提交间接修复问题to:只产生diff不主动修复此问题。适宜于屡次提交。最终修复问题提交时应用fixdocs:文档(documentation)。 style:格局(不影响代码运行的变动)。 refactor:重构(即不是新增性能,也不是批改bug的代码变动)。 perf:优化相干,比方晋升性能、体验。 test:减少测试。 chore:构建过程或辅助工具的变动。 revert:回滚到上一个版本。 merge:代码合并。 sync:同步主线或分支的Bug。 scope(可选) scope用于阐明 commit 影响的范畴,比方数据层、管制层、视图层等等,视我的项目不同而不同。 例如在Angular,能够是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。如果你的批改影响了不止一个scope,你能够应用*代替。 subject(必须) subject是commit目标的简短形容,不超过50个字符。 倡议应用中文(感觉中国人用中文形容问题能更分明一些)。 结尾不加句号或其余标点符号。依据以上标准git commit message将是如下的格局:fix(DAO):用户查问短少username属性 feat(Controller):用户查问接口开发以上就是咱们梳理的git commit标准,那么咱们这样标准git commit到底有哪些益处呢? 便于程序员对提交历史进行追溯,理解产生了什么状况。一旦束缚了commit message,意味着咱们将谨慎的进行每一次提交,不能再一股脑的把各种各样的改变都放在一个git commit外面,这样一来整个代码改变的历史也将更加清晰。格式化的commit message才能够用于自动化输入Change log。监控服务通常提出一个标准之后,为了大家更好的执行标准,就须要进行一系列的拉通,比方分享给大家这种标准的长处、能带来什么收益等,在大家都认同的状况下最好有一些强制性的措施。当然git commit标准也一样,后期咱们分享完标准之后思考从源头进行强制拦挡,只有大家提交代码的commit message不符合规范,间接不能提交。但因为代码仓库操作权限的问题,咱们最终抉择了应用webhook通过发送正告的模式进行监控,督促大家依照标准执行代码提交。除了监控git commit message的标准外,咱们还退出了大代码量提交监控和删除文件监控,缩小研发的代码误操作。 整体流程 服务注册:服务注册次要实现代码库相干信息的增加。反复校验:避免merge request再走一遍验证流程。音讯告警:对不符合规范以及大代码量提交、删除文件等操作发送告警音讯。DB:存我的项目信息和git commit信息便于后续统计commit message标准率。webhook是作用于代码库上的,用户提交git commit,push到仓库的时候就会触发webhook,webhook从用户的commit信息外面获取到commit message,校验其是否满足git commit标准,如果不满足就发送告警音讯;如果满足标准,调用gitlab API获取提交的diff信息,验证提交代码量,验证是否有重命名文件和删除文件操作,如果存在以上操作还会发送告警音讯,最初把所有记录都入库保留。 ...

August 13, 2020 · 1 min · jiezi

关于git:git在日常开发中常用的使用方法

文章创立背景目前自己正在学习中,以下均为集体学习总结,若存在谬误的中央欢送斧正,将来会继续更新。 对于gitgit一个开源的分布式版本控制系统,用于麻利高效地解决任何或小或大的我的项目.罕用的git代码托管服务平台 github.comgitee.com操作流程创立git我的项目 本地创立文件夹或将代码拉取到本地(这里介绍将代码拉取到本地) git clone 'HTTPS链接'进入文件夹内创立相应内容git add -Agit commit -m "提交的内容形容"git push以上实现上传至git操作当进行协同开发时,想要获取git仓库中最新代码 git pull 获取以后仓库中最新代码当一个分支不能满足档期须要时,须要创立多个分支时 查看以后领有什么分支git branch -a在本地创立一个新的分支git branch 分支名切换至新的分支git checkout 新的分支向仓库提交进行新分支创立git push --set-upstream origin 新的分支以上实现新分支创立并领有本地与近程仓库分支的绑定当进行协同开发时,本地没有分支与近程仓库的某个分支绑定 查看以后近程仓库领有的分支git branch -a创立新分支并绑定某个近程分支git checkout -b 本地分支名 近程分支名以上实现当本地没有与近程分支绑定的分支时,创立并绑定相应分支操作合并某个分支到以后分支(这里咱们以master分支为例) 切换到你想将代码同步到的分支git checkout 你想将代码同步到的分支合并dev分支到master分支git merge dev这里咱们能够看到dev分支的内容已与master分支同步接下来能够间接提交代码咯开发的时候咱们可能会遇到,某人提交错误代码导致以后我的项目呈现不可逆的操作时,须要回退版本(回滚)时 首先须要先备份一下你的代码,避免彻底找不回来 = =||查看提交历史git log进行代码回滚git reset --hard 版本号以回到你所想要回退的版本结尾以上是自己在开发时遇到的对于git的问题及解决方案,如果对您有所帮忙能够点个赞反对一下,如果有谬误的中央欢送斧正,谢谢! 本文参考/援用:廖雪峰的官方网站 - Git教程

August 12, 2020 · 1 min · jiezi

关于git:CODING-DevOps-代码质量实战系列最后一课周四发车

随着 ToB(企业服务)的衰亡和 ToC(生产互联网)产品进入成熟期,线上故障带来的损失越来越大,代码品质越来越重要,而「品质内建」正是 DevOps 核心理念之一。 《DevOps 代码品质实战(Java 版)》为 CODING DevOps 代码品质实战系列的最初一课,同时也是本系列的 Java 版,杨周老师将以 Java Spring 为例,解说代码标准、Git workflow、继续集成、代码生成 API 文档、批改 maven 包、单元测试、Docker 等内容。 课程主题DevOps 代码品质实战(Java 版) 课程工夫8 月 13 日(周四)19:00 课程讲师杨周 CODING 布道师 CODING DevOps 架构师 间断创业者、DIY/Linux 玩家、知乎小 V,曾在翻新工场、百度负责后端开发。十余年一线研发和带队教训,经验了 ToB、ToC、O2O、国内、出海各种我的项目,见证了云计算时代的诞生,善于研发最佳实际:Code Review、DevOps、Git Workflow、麻利开发、架构、极客办公硬件。 课程纲要增量查看 Java 代码标准制品库:批改 maven 包继续集成:Java 单元测试继续交付:Docker主动部署:K8s扫描 海报二维码 即可预约系列课程 对于 CODING,理解更多

August 12, 2020 · 1 min · jiezi

关于git:TortoiseGit的安装及使用

Git作为一个简单的版本控制系统,命令很多,即便常常应用,有些命令也记不住。上面要借助一个图形化的软件 —— TortoiseGit来操作git。1. 下载安装Git及Tortoisegit下载安装需按上面程序一一装置下载安装git下载地址:https://git-scm.com/downloads (始终next即可实现装置) 下载安装TortoiseGit下载地址:https://tortoisegit.org/download/ (始终next即可实现装置) 下载安装TortoiseGit语言包下载地址:https://tortoisegit.org/download/ (始终next即可实现装置) 在桌面或任意文件夹里右键 → tortogit → setting → General,把language项改为中文,点击确定就能够了 2. Tortoisegit的应用(1) 配置用户用户作为你操作git的集体标识,进入设置,点选右边的Git标签,能够发现,左边能够配置用户的名字与Email信息 (2) 克隆右键抉择git克隆,填写对应git仓库地址和本地的寄存地址 克隆胜利,则在文件夹上就能够看到角标标识: 文件上的图标,能够反映出以后文件或者文件夹的状态: 1、失常的:绿色的对号 2、被批改过的:红色感叹号 3、新增加的:蓝色的加号 4、未受控的(无版本控制的):蓝色的问号 5、疏忽不受控的:灰色的减号 6、删除的:红色的x号 7、有抵触的:红色的感叹号 提醒: 若是状态图标不能失常显示请看上面教程: TortoiseGit状态图标不能失常显示的解决办法 (3) 提交推送代码在本地我的项目的空白处点击鼠标右键,抉择 【Git提交(C) -> "master"...】 在弹出提交(Commit)对话框中实现提交阐明信息,和抉择须要提交的文件,可依据须要新建分支,而后点击 【提交】 按钮,将批改提交到本地仓库: 弹出提交进度窗口,提交胜利后还须要“推送”将本地仓库的批改推送到近程仓库: 同步拉取,如果多人合作或者多个客户端进行批改,在推送之前须要先执行同步拉取(Pull ...)操作: 在本地仓库文件夹上【右击鼠标】→【Tortoisegit】→【拉取】 : 如果服务器上的文件被批改过了(本地文件批改前不是最新版本),就会提醒抵触。先要解决抵触,而后再提交后果: (4) 新建分支在本地仓库文件夹上【右击鼠标】→【Tortoisegit】→【创立分支】 : ...

August 12, 2020 · 1 min · jiezi

关于git:gitignore-忽略目录下文件仅保留目录形态

现有目录构造如下 ├── public │── x1 │ │── file1 │ └── file2 │── x2 │ │── file3 │ └── file4 └── thumb │── file5 └── file6 想要疏忽 x1,x2 目录及全副文件,疏忽 thumb 目录下的文件保留 thumb 目录构造。 创立 public/.gitignore 文件,语义为“疏忽 当前目录下的全副文件和目录,但不疏忽 thumb 目录”。 # public/.gitignore# 疏忽*# 不疏忽!.gitignore!thumb/然而,这样不能满足咱们的要求,尽管疏忽了 x1-xn 的目录及其下文件,保留了 thumb 目录,但 thumb 目录下的文件也被保留下来,咱们要的是只保留 thumb 目录构造。 再创立 public/thumb/.gitignore 文件,进行解决。语义为“疏忽当前目录的所有文件,但不疏忽 .gitignore 文件”。 # public/thumb/.gitignore*!.gitignore能够看到 public/.gitignore 文件和 public/thumb/.gitignore 文件对于 thumb 目录的疏忽规定是由抵触的。因为当前目录的规定优先级高于父级目录定义的规定,所以提交 git 后,thumb 目录下仅存在 .gitignore 文件,thumb 目录将得以保留。 ...

August 10, 2020 · 1 min · jiezi

关于git:gitignore-忽略目录下文件仅保留目录形态

现有目录构造如下 ├── public │── x1 │ │── file1 │ └── file2 │── x2 │ │── file3 │ └── file4 └── thumb │── file5 └── file6 想要疏忽 x1,x2 目录及全副文件,疏忽 thumb 目录下的文件保留 thumb 目录构造。 创立 public/.gitignore 文件,语义为“疏忽 当前目录下的全副文件和目录,但不疏忽 thumb 目录”。 # public/.gitignore# 疏忽*# 不疏忽!.gitignore!thumb/然而,这样不能满足咱们的要求,尽管疏忽了 x1-xn 的目录及其下文件,保留了 thumb 目录,但 thumb 目录下的文件也被保留下来,咱们要的是只保留 thumb 目录构造。 再创立 public/thumb/.gitignore 文件,进行解决。语义为“疏忽当前目录的所有文件,但不疏忽 .gitignore 文件”。 # public/thumb/.gitignore*!.gitignore能够看到 public/.gitignore 文件和 public/thumb/.gitignore 文件对于 thumb 目录的疏忽规定是由抵触的。因为当前目录的规定优先级高于父级目录定义的规定,所以提交 git 后,thumb 目录下仅存在 .gitignore 文件,thumb 目录将得以保留。 ...

August 10, 2020 · 1 min · jiezi

关于git:玩转-Git-别名

1. 为什么要取别名?别名,能够把较长的命令变得更加简洁、简单化,便于记忆;别名,能够帮忙咱们节约大量的键盘敲打工夫,相当于晋升了咱们的办公效率;别名,能够无效改善咱们的情绪,当然也能够把集体的本身价值(bi ge)进步;2. 定义 Git 别名2.1 第一种办法:通过命令形式设置这里列举了几种定义 Git 别名例子,大家能够照葫芦画瓢,触类旁通。 $ git config --global alias.gp pull$ git config --global alias.br branch$ git config --global alias.co checkout$ git config --global alias.ci commit$ git config --global alias.st status2.1.1 git config如果命令不带 --global 参数,它只会对以后仓库失效,配置的内容会写入到以后仓库下本地文件 .git/gitconfig,比方以后的 Git 仓库名称为 box3,那么批改的文件门路是 box3/.git/gitconfig 2.1.2 git config --global如果命令带 --global 参数,它会对以后用户下所有的 Git 仓库失效,配置的内容会写入到以后用户的本地文件 ~/.gitconfig,若终端登录用户是 fanjiapeng,那么文件全门路是 /home/fanjiapeng/.gitconfig 留神:配置雷同的别名,只有最初一次配置会失效,雷同的配置最初一次笼罩前一次设置。以后仓库的别名配置权重(优先级)高于全局别名配置(git config > git config --global)。2.2 第二种办法:批改本地文件2.2.1 针对以后用户全局设置批改以后用户下全局配置信息,以下命令关上的文件就是 ~/.gitconfig,批改会对以后用户下所有的 Git 仓库失效。若没有 [alias] 这项配置,不要惊恐哟,阐明还没有配置 Git 别名。 ...

August 7, 2020 · 2 min · jiezi

关于git:git-clone时出现RPC-failed-curl-56-OpenSSL-SSLread

1.问题形容 在应用git clone我的项目时报错:error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset, errno 10054 2.解决办法 输出以下3个命令:> git init> git config http.postBuffer 524288000> git config http.sslVerify "false"3.问题解决 转载自:【GIT】clone时呈现RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errfno 10054

August 6, 2020 · 1 min · jiezi

关于git:Git权威指南

Git权威指南 下载地址: https://pan.baidu.com/s/14FArzIRqvbIXEYDJk9A4ag 扫码上面二维码关注公众号回复100009 获取分享码 本书目录构造如下: 前言 第1篇 初识Git 第1章 版本控制的前世和今生 1.1 光明的史前时代 1.2 CVS——开启版本控制大暴发 1.3 SVN——集中式版本控制集大成者 1.4 Git——Linus的第二个平凡作品 第2章 爱上Git的理由 2.1 每日工作备份 2.2 异地协同工作 2.3 现场版本控制 2.4 防止引入辅助目录 2.5 重写提交阐明 2.6 想吃后悔药 2.7 更好用的提交列表 2.8 更好的差别比拟 2.9 工作进度保留 2.10 代理SVN提交实现移动式办公 2.11 无处不在的分页器 2.12 快 第3章 Git的装置和应用 3.1 在Linux下装置和应用Git 3.2 在Mac OS X下装置和应用Git 3.3 在Windows下装置和应用Git(Cygwin篇) 3.4 Windows下装置和应用Git(msysGit篇) 第2篇 Git合奏 第4章 Git初始化 4.1 创立版本库及第一次提交 4.2 思考:为什么工作区根目录下有一个.git目录 4.3 思考:git config命令的各参数有何区别 ...

August 4, 2020 · 3 min · jiezi

关于git:应用中心最佳实践使用应用组完成多集群一键部署

简介: 在事实中的利用交付实际中,经常须要将同一利用同时部署到多个集群中。利用核心反对将同一个数据源定义的利用,通过利用组的模式一键部署到多个集群中,实现对立治理。 作者:指北 背景在事实中的利用交付实际中,经常须要将同一利用同时部署到多个集群中。利用核心反对将同一个数据源定义的利用,通过利用组的模式一键部署到多个集群中,实现对立治理。 利用组是一系列利用的汇合,这些利用都具备雷同的数据源,但部署的指标集群或命名空间不同,相干概念如下图所示: 如何应用增加多个集群到利用核心进入利用核心,点击右上角“设置”,进入集群设置页面,通过增加集群性能,将心愿部署利用的集群都增加到利用核心管控范畴内。 创立利用组在“利用”页面中点击“创立利用”,指定利用参数并创立。 名称将作为利用组名称,如利用组名称为app-set,利用核心将主动创立一系列利用app-set-0、app-set-1等。 数据源能够抉择Git仓库、Helm仓库或ACK编排模板。 指标集群能够抉择任意多个,每个集群能够独立指定部署的命名空间。 查看利用组创立实现后,“利用”页面将列出利用组,以及组内的全副利用。 部署到指标集群点击“部署所有利用”,能够抉择整个利用组,将组内的利用同时部署到指标集群,也能够独自指定部署组内的局部利用。

August 3, 2020 · 1 min · jiezi

关于git:Git-如何切换到不同远程仓库

在很多时候,咱们心愿将 Git 切换到不同的近程仓库地址。 例如咱们有一个我的项目 USRealEstate,以后应用的是微信的 Git,咱们心愿切换到 GitHub 上。 如何进行切换? 尝试应用上面的办法首先在 GitHub 中创立一个空的仓库 USRealEstate。 而后能够应用 TortoiseGit 配置近程仓库。 你须要先配置近程仓库地址,而后单击保留。 在这里你可用抉择 NO,不要从近程仓库中进行下载。 右键抉择,将本地内容推送到近程仓库中。 如果没有问题,你将会看到 PUSH 胜利的界面。 而后你可用到 GitHub 中查看你的内容有没有 PUSH 胜利。 查看情况到 GitHub 中查看,可用看到曾经 PUSH 胜利了。 https://www.ossez.com/t/git/322

August 1, 2020 · 1 min · jiezi

关于git:git-常用指令

更新本地代码git pull --rebase origin origin_branch新建分支git checkout -b new_branch # 新建并切换分支切换分支git checkout branch # 切换分支git checkout - # 切换到上一次分支查看本地文件状态git status暂存代码git add .提交代码git commit -m 'message'查看提交信息git log # 以后分支git log --all # 所有分支git log --oneline代码推到远端git push origin origin_branch合并分支git merge --no-ff branch革除本地文件批改git checkout -- xxx # 某个文件git checkout -f # 所有长期保留最近批改git add . # 没有被 git 治理的文件,须要应用git stash查看stashgit stash list复原长期保留git stash pop stash@{stash_id}git stash抵触git stash pop 抵触,不会主动删除git stash中的记录需手动清理 git stash drop stash@{stash_id}删除本地分支git branch -d local_branch # 一般删除git branch -D local_branch # 强制删除删除远端分支git push --delete origin origin_branchTip:无奈重命名远端分支,须要现删除远端分支,再将本地分支推到远端。 ...

August 1, 2020 · 1 min · jiezi

关于git:git-常用指令

更新本地代码git pull --rebase origin origin_branch新建分支git checkout -b new_branch # 新建并切换分支切换分支git checkout branch # 切换分支git checkout - # 切换到上一次分支查看本地文件状态git status暂存代码git add .提交代码git commit -m 'message'查看提交信息git log # 以后分支git log --all # 所有分支git log --oneline代码推到远端git push origin origin_branch合并分支git merge --no-ff branch革除本地文件批改git checkout -- xxx # 某个文件git checkout -f # 所有长期保留最近批改git add . # 没有被 git 治理的文件,须要应用git stash查看stashgit stash list复原长期保留git stash pop stash@{stash_id}git stash抵触git stash pop 抵触,不会主动删除git stash中的记录需手动清理 git stash drop stash@{stash_id}删除本地分支git branch -d local_branch # 一般删除git branch -D local_branch # 强制删除删除远端分支git push --delete origin origin_branchTip:无奈重命名远端分支,须要现删除远端分支,再将本地分支推到远端。 ...

August 1, 2020 · 1 min · jiezi

关于git:常用-Git-命令清单

前言我在工作中应用 vscode 作为开发编辑器,本地装置了 TortoiseGit 、git bash、Conemu 来使得命令行操作有所缩小,然而必要的命令还是必须的。为了进步操作的效率与应用体验,还做了自定义配置。 在这里记录一下我罕用的 Git 命令清单,不便查阅。 命令清单初始化# 配置用户名git config --global user.name "本人的名字"# 配置邮箱git config --global user.email "本人的邮箱"# 生成设施公钥ssh-keygen -t rsa || ssh-keygen# 测试 github 连贯状态ssh -T git@github.com# 拷贝我的项目与历史记录git clone [url]配置# 显示以后的Git配置git config --list# 编辑Git配置文件git config -e [--global]查看信息# 查看提交日志,图形化显示合并关系 (自定义简化命令)git lgh# 显示整个本地仓库的最近提交,包含所有分支git reflog# 显示工作区有变更的文件git status => git st# 查看某次 commmit 的提交信息git show [commitID]# 显示某次提交时,某个文件的内容$ git show [commitID]:[filename]# 显示两次提交之间的差别$ git diff [first-commitID] [second-commitID]撤销# 重置以后分支的HEAD为指定commitID,同时重置暂存区和工作区,与指定commit统一git reset --hard [commitID]# 勾销 rebasegit rebase --abort代码提交=> 后为自定义的简化命令# 拉取远端最新代码(本地没有批改)git pull --rebase => git pr# 拉取远端最新代码(本地有批改)git pull --rebase --autostash => git prs# 增加指定文件到暂存区git add [file1] [file2] ...# 增加当前目录的所有文件到暂存区git add .# 提交 log 正文git commit -m "commit log"# 推送到远端git push分支# 列出所有本地分支git branch => git br# 列出所有近程分支git branch -r# 列出所有本地分支和近程分支git branch -a# 新建一个分支,但仍然停留在以后分支git branch [branch-name]# 新建一个分支,并切换到该分支git checkout -b [branch]# 合并指定分支到以后分支git merge [branch]# 删除分支git branch -d [branch-name]# 删除近程分支git push origin --delete [branch-name]自定义配置[user] name = yanyue404 email = xiaoyueyue165@gmail.com signingkey = ""[credential] helper = store[http] postBuffer = 500M sslBackend = openssl maxRequestBuffer = 100M[color] diff = auto status = auto branch = auto ui = true[alias]# 简化命令 br = branch ci = commit co = checkout st = status mg = merge# 日志 lg = log --color --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit lgh = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit lgr = log --color --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --reverse last = log -10# 回退 back = checkout master unstage = reset HEAD rh = reset --hard HEAD# pull pr = pull --rebase prs = pull --rebase --autostash[format] pretty = %C(yellow)%h%Creset %s %C(red)(%an, %cr)%Creset[help] autocorrect = 1[core] compression = 0 quotepath = true[i18n] commitencoding = utf-8 logoutputencoding = utf-8[gui] encoding = utf-8[merge "ours"] driver = true参考http://www.ruanyifeng.com/blo...

August 1, 2020 · 2 min · jiezi

关于git:常用-Git-命令清单

前言我在工作中应用 vscode 作为开发编辑器,本地装置了 TortoiseGit 、git bash、Conemu 来使得命令行操作有所缩小,然而必要的命令还是必须的。为了进步操作的效率与应用体验,还做了自定义配置。 在这里记录一下我罕用的 Git 命令清单,不便查阅。 命令清单初始化# 配置用户名git config --global user.name "本人的名字"# 配置邮箱git config --global user.email "本人的邮箱"# 生成设施公钥ssh-keygen -t rsa || ssh-keygen# 测试 github 连贯状态ssh -T git@github.com# 拷贝我的项目与历史记录git clone [url]配置# 显示以后的Git配置git config --list# 编辑Git配置文件git config -e [--global]查看信息# 查看提交日志,图形化显示合并关系 (自定义简化命令)git lgh# 显示整个本地仓库的最近提交,包含所有分支git reflog# 显示工作区有变更的文件git status => git st# 查看某次 commmit 的提交信息git show [commitID]# 显示某次提交时,某个文件的内容$ git show [commitID]:[filename]# 显示两次提交之间的差别$ git diff [first-commitID] [second-commitID]撤销# 重置以后分支的HEAD为指定commitID,同时重置暂存区和工作区,与指定commit统一git reset --hard [commitID]# 勾销 rebasegit rebase --abort代码提交=> 后为自定义的简化命令# 拉取远端最新代码(本地没有批改)git pull --rebase => git pr# 拉取远端最新代码(本地有批改)git pull --rebase --autostash => git prs# 增加指定文件到暂存区git add [file1] [file2] ...# 增加当前目录的所有文件到暂存区git add .# 提交 log 正文git commit -m "commit log"# 推送到远端git push分支# 列出所有本地分支git branch => git br# 列出所有近程分支git branch -r# 列出所有本地分支和近程分支git branch -a# 新建一个分支,但仍然停留在以后分支git branch [branch-name]# 新建一个分支,并切换到该分支git checkout -b [branch]# 合并指定分支到以后分支git merge [branch]# 删除分支git branch -d [branch-name]# 删除近程分支git push origin --delete [branch-name]自定义配置[user] name = yanyue404 email = xiaoyueyue165@gmail.com signingkey = ""[credential] helper = store[http] postBuffer = 500M sslBackend = openssl maxRequestBuffer = 100M[color] diff = auto status = auto branch = auto ui = true[alias]# 简化命令 br = branch ci = commit co = checkout st = status mg = merge# 日志 lg = log --color --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit lgh = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit lgr = log --color --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --reverse last = log -10# 回退 back = checkout master unstage = reset HEAD rh = reset --hard HEAD# pull pr = pull --rebase prs = pull --rebase --autostash[format] pretty = %C(yellow)%h%Creset %s %C(red)(%an, %cr)%Creset[help] autocorrect = 1[core] compression = 0 quotepath = true[i18n] commitencoding = utf-8 logoutputencoding = utf-8[gui] encoding = utf-8[merge "ours"] driver = true参考http://www.ruanyifeng.com/blo...

August 1, 2020 · 2 min · jiezi

关于git:Git-使用进阶

前言随着 git 的应用普遍化,当初更须要关注应用的标准流程,在此纪录。 目录丑陋的徽章更好的 pull配置代理及勾销代理rebase 命令批改 commit 提交历史Git-merge 时疏忽文件丑陋的徽章继续集成 npm 自定义能够自定义批改 左侧 label 文字,右侧色彩 其余 更好的 pull起因 git pull origin xxx --rebase# 间接按 rebase 的形式执行 pullgit config --global pull.rebase true应用 rebase 就感觉所有人都在同一条直线上开发一样,很洁净的 log,看着很难受,而间接应用 pull 的 log 看起来就很乱。 git pull --rebase * | b9feea8 - chore: 增加C返回A埋点 (6 hours ago) <yanyue404>* | b3047fe - fix: ISO8601 time (6 hours ago) <yanyue404>* | bfb6c84 - test: formatTimeStr 兼容 ios (7 hours ago) <yanyue404>* | 0e13196 - chore: IOS 工夫解决 (22 hours ago) <yanyue404>* | f15a0e8 - chore: 游客在名片页面进行受权 (24 hours ago) <yanyue404>* | ee8b125 - chore: 欠缺集体名片 (25 hours ago) <yanyue404>* | deb7a5a - chore: 集体名片增加用户角色校验 (26 hours ago) <yanyue404>* | 5106b02 - chore: 开始辨认用户角色 (27 hours ago) <yanyue404>* | f16b6af - chore: 更换 appid (31 hours ago) <yanyue404>* | 7216da4 - chore: 同步 code (31 hours ago) <yanyue404>* | 9e542b4 - chore: uat 更新 (6 days ago) <yanyue404>* | 473e311 - fix: 批改环境 (6 days ago) <yanyue404>* | f54ae0f - chore: 埋点 (5 hours ago) <yanyue404>git pull ...

August 1, 2020 · 3 min · jiezi

关于git:Git-使用进阶

前言随着 git 的应用普遍化,当初更须要关注应用的标准流程,在此纪录。 目录丑陋的徽章更好的 pull配置代理及勾销代理rebase 命令批改 commit 提交历史Git-merge 时疏忽文件丑陋的徽章继续集成 npm 自定义能够自定义批改 左侧 label 文字,右侧色彩 其余 更好的 pull起因 git pull origin xxx --rebase# 间接按 rebase 的形式执行 pullgit config --global pull.rebase true应用 rebase 就感觉所有人都在同一条直线上开发一样,很洁净的 log,看着很难受,而间接应用 pull 的 log 看起来就很乱。 git pull --rebase * | b9feea8 - chore: 增加C返回A埋点 (6 hours ago) <yanyue404>* | b3047fe - fix: ISO8601 time (6 hours ago) <yanyue404>* | bfb6c84 - test: formatTimeStr 兼容 ios (7 hours ago) <yanyue404>* | 0e13196 - chore: IOS 工夫解决 (22 hours ago) <yanyue404>* | f15a0e8 - chore: 游客在名片页面进行受权 (24 hours ago) <yanyue404>* | ee8b125 - chore: 欠缺集体名片 (25 hours ago) <yanyue404>* | deb7a5a - chore: 集体名片增加用户角色校验 (26 hours ago) <yanyue404>* | 5106b02 - chore: 开始辨认用户角色 (27 hours ago) <yanyue404>* | f16b6af - chore: 更换 appid (31 hours ago) <yanyue404>* | 7216da4 - chore: 同步 code (31 hours ago) <yanyue404>* | 9e542b4 - chore: uat 更新 (6 days ago) <yanyue404>* | 473e311 - fix: 批改环境 (6 days ago) <yanyue404>* | f54ae0f - chore: 埋点 (5 hours ago) <yanyue404>git pull ...

August 1, 2020 · 3 min · jiezi

关于git:git-cherrypick挑选指定commit来合并

前言在咱们应用Git进行日常开发的过程中,经常须要进行的操作就是代码合并了。常见的操做命令是 git merge branch-name,这个命令会合并的是整个分支的commit,然而有时候咱们须要的可能是仅仅某一个 commit或者某几个commit,这时候就须要用到git cherry-pick了。 git cherry-pick的作用就如它的名字一样,精心筛选。咱们能够精心筛选其余分支上的 commit 合并到以后的分支上来。 原理git cherry-pick 能够把其余分支的某个commit利用到以后分支,并且主动生成一个新的 commit 进行提交,因而这两次commit的哈希值是不一样的,属于不同的commit。 根本用法单个commit合并 git cherry-pick commit-hash/branch-name如果应用的是哈希值,则会把对应的commit合并过去,如果是分支名,则会把对应分支的最新一次commit合并过去。 多个commit合并 # 1、 扩散的commitgit cherry-pick commit-hash1 commit-hash2# 2、间断的commit# Git 1.7.2 版本当前,新增了反对批量cherry-pick # 能够将一个间断的工夫序列内的间断commit,进行cherry-pick操作。# 合并(start,end]之间的提交,不蕴含startgit cherry-pick start-commit-hash..end-commit-hash # 合并[start,end]之间的提交,蕴含startgit cherry-pick start-commit-hash^..end-commit-hash 留神无论是对单个 commit 进行 cherry-pick ,还是批量解决,留神肯定要依据工夫线,按照 commit 的先后顺序来解决,否则会有意想不到的问题。 如何解决抵触代码合并不可避免的就是会遇到代码抵触了,git merge会遇到抵触,同样的git cherry-pick也会遇到代码抵触,那么遇到代码抵触的时候,该如何解决呢? 遇到抵触的时候,Git会给出报错信息,并停下来,要求用户解決 conflict 的问题。Git会把所有抵触的文件列在Unmerged paths的中央,能够通过git status查看,如下图。此时咱们有以下解决计划: 解决抵触 批改抵触的中央,并通过命令git add .把文件重新加入暂存区。持续合并,git cherry-pick --continue回退所有批改:git cherry-pick --abort,此时会回到操作前的样子单纯退出cherry-pick:git cherry-pick --quit,此时不会回到操作前的状态罕用配置项-e:批改提交信息,如果不批改,则应用合并过去的commit的提交信息-x:标记起源commit,会在提交信息里标记起源的commit哈希,不便当前追究。-n:只批改工作区和暂存区的代码,而不产生新的commit。这时候能够本人提交或者做其余批改后提交Enjoy it ! 版权申明转载请注明作者和文章出处作者: X学生https://segmentfault.com/a/1190000023414791

July 29, 2020 · 1 min · jiezi

关于git:git-cherrypick挑选指定commit来合并

前言在咱们应用Git进行日常开发的过程中,经常须要进行的操作就是代码合并了。常见的操做命令是 git merge branch-name,这个命令会合并的是整个分支的commit,然而有时候咱们须要的可能是仅仅某一个 commit或者某几个commit,这时候就须要用到git cherry-pick了。 git cherry-pick的作用就如它的名字一样,精心筛选。咱们能够精心筛选其余分支上的 commit 合并到以后的分支上来。 原理git cherry-pick 能够把其余分支的某个commit利用到以后分支,并且主动生成一个新的 commit 进行提交,因而这两次commit的哈希值是不一样的,属于不同的commit。 根本用法单个commit合并 git cherry-pick commit-hash/branch-name如果应用的是哈希值,则会把对应的commit合并过去,如果是分支名,则会把对应分支的最新一次commit合并过去。 多个commit合并 # 1、 扩散的commitgit cherry-pick commit-hash1 commit-hash2# 2、间断的commit# Git 1.7.2 版本当前,新增了反对批量cherry-pick # 能够将一个间断的工夫序列内的间断commit,进行cherry-pick操作。# 合并(start,end]之间的提交,不蕴含startgit cherry-pick start-commit-hash..end-commit-hash # 合并[start,end]之间的提交,蕴含startgit cherry-pick start-commit-hash^..end-commit-hash 留神无论是对单个 commit 进行 cherry-pick ,还是批量解决,留神肯定要依据工夫线,按照 commit 的先后顺序来解决,否则会有意想不到的问题。 如何解决抵触代码合并不可避免的就是会遇到代码抵触了,git merge会遇到抵触,同样的git cherry-pick也会遇到代码抵触,那么遇到代码抵触的时候,该如何解决呢? 遇到抵触的时候,Git会给出报错信息,并停下来,要求用户解決 conflict 的问题。Git会把所有抵触的文件列在Unmerged paths的中央,能够通过git status查看,如下图。此时咱们有以下解决计划: 解决抵触 批改抵触的中央,并通过命令git add .把文件重新加入暂存区。持续合并,git cherry-pick --continue回退所有批改:git cherry-pick --abort,此时会回到操作前的样子单纯退出cherry-pick:git cherry-pick --quit,此时不会回到操作前的状态罕用配置项-e:批改提交信息,如果不批改,则应用合并过去的commit的提交信息-x:标记起源commit,会在提交信息里标记起源的commit哈希,不便当前追究。-n:只批改工作区和暂存区的代码,而不产生新的commit。这时候能够本人提交或者做其余批改后提交Enjoy it ! 版权申明转载请注明作者和文章出处作者: X学生https://segmentfault.com/a/1190000023414791

July 29, 2020 · 1 min · jiezi

关于git:Git-Webhook自动部署项目

为什么用 Webhook ?仅想向测试服主动拉取代码,不须要构建、测试,简略就好。搜了网上的 Webhook 代码,有的既用到了php,又用到了shell,感觉太简单,本人满腹经纶看不懂,于是就想本人写一个简略的,能用就行。 代码间接上代码 // webhook-dev/index.php$token = 'XXX'; // 密钥if (isset($_SERVER['HTTP_X_GITLAB_TOKEN']) && $_SERVER['HTTP_X_GITLAB_TOKEN'] != $token){ die('token 不正确');}parse_str($_SERVER['QUERY_STRING'], $query);if (!isset($query['project'])){ die('请指明我的项目');}$branch = isset($query['branch']) ? $query['branch'] : 'dev';$command = "cd ../{$query['project']} && git pull origin {$branch}";echo shell_exec($command);如何应用把 webhook 独自作为一个我的项目,通过参数能够拉取不同的我的项目、分支、标签。 webhook-dev 我的项目 与 其余我的项目在同级目录指定拉取我的项目和分支,query 参数如下 project 我的项目名branch 分支或标签,默认 dev通过 nginx 独自为 webhook-dev 配置域名或者ip端口,eg:webhook.vm.com。如要拉取我的项目(目录名) 为hello,分支为 dev,则链接为 http(s)://webhook.vm.com?project=project1&branch=dev特地留神权限问题,因为 web 拜访的用户和用户组为 www ,肯定要确保 www 用户领有拉取的我的项目中 .git 目录的权限。 通过 postman 拜访链接,Headers 中设置 X-Gitlab-Token 为本人的密钥,与代码中保持一致。呈现以下相似的 git 信息,则视为部署胜利。 ...

July 28, 2020 · 1 min · jiezi

关于git:Git的基础概念及使用

Git的根底概念 什么是Git Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最风行的版本控制系统。能够疾速高效地解决从很小到十分大的我的项目版本治理。 特点:我的项目越大越简单,协同开发者越多,越能体现出 Git 的高性能和高可用性!Git的个性 Git之所以疾速和高效,次要依赖于它的如下两个个性: ① 间接记录快照,而非差别比拟② 近乎所有操作都是本地执行SVN 的差别比拟 传统的版本控制系统(例如 SVN)是基于差别的版本控制,它们存储的是一组根本文件和每个文件随工夫逐渐累积的差别 SVN的益处 节俭磁盘空间 SVN毛病 耗时、效率低在每次切换版本的时候,都须要在根本文件的根底上,利用每个差别,从而生成指标版本对应的文件Git 的记录快照 Git 快照是在原有文件版本的根底上从新生成一份新的文件,相似于备份。为了效率,如果文件没有批改,Git不再从新存储该文件,而是只保留一个链接指向之前存储的文件。 Git快照毛病 占用磁盘空间较大 Git快照长处 版本切换时十分快,因为每个版本都是残缺的文件快照,切换版本时间接复原指标版本的快照即可。 特点 空间换工夫,近乎所有的操作都只需拜访本地文件和资源个别不须要来自网上 其余计算机的信息 个性 断网后仍旧能够在本地对我的项目进行版本治理联网后,把本地批改的记录同步到云端服务器即可Git 中的三个区域 应用 Git 治理的我的项目,领有三个区域,别离是工作区、暂存区、Git 仓库Git 中的三种状态 已批改 modified 示意批改了文件,但还没将批改的后果放到暂存区已暂存 staged 示意对已批改文件的以后版本做了标记,使之蕴含在下次提交的列表中已提交 committed 示意文件曾经平安地保留在本地的 Git 仓库中 留神: 工作区的文件被批改了,但还没有放到暂存区,就是已批改状态。如果文件已批改并放入暂存区,就属于已暂存状态。如果 Git 仓库中保留着特定版本的文件,就属于已提交状态。根本的 Git 工作流程如下: ① 在工作区中批改文件 ② 将你想要下次提交的更改进行暂存 ③ 提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库Git根底 装置并配置 Git 点击下载相干的Git版本配置用户信息 装置完 Git 之后,要做的第一件事就是设置本人的用户名和邮件地址。因为通过 Git 对我的项目进行版本治理的时候,Git 须要应用这些根本信息,来记录是谁对我的项目进行了操作: ...

July 27, 2020 · 2 min · jiezi

关于git:Git之一探到底

为什么要应用git*本地建设版本库 本地版本控制 多主机异地协同工作 重写提交阐明 有后悔药能够吃 更好用的提交表单 更好的差别比拟 更欠缺的分支零碎 速度极快* 什么是gitgit 是一个版本控制软件gitHub和gitLab都是用于治理版本的的服务端软件gitHub提供收费服务(代码公开)及付费服务(代码为公有)GitLab用于在企业外部治理Git版本库 性能上相似于GitHub git的长处**间接记录快照 而非差别比拟近乎所有的操作都在本地执行时刻保持数据的完整性少数操作仅增加数据** 常见的三种文件状态*文件的三种状态 (Git文件 Git文件已被版本库治理的文件) 已批改(modified) 在工作目录批改Git文件 已暂存(staged)对已批改的文件执行GIt暂存操作 将文件存入暂存区 已提交(committed)将已暂存的文件执行git 提交操作 将文件存入版本库* 待续。。。

July 27, 2020 · 1 min · jiezi

关于git:Git入门二团队开发基本流程概述

前言本文旨在帮忙没有接触过Git的同学,应用Git以及GitHub的基本功能,实用于初学者。 因为内容比拟多,一次写不完,故做成连载,当前还会更新其它内容。 第一期:Git入门(一)——基本操作及实践第二期:Git入门(二)——团队开发根本流程概述 (本期) 步骤零:把我的项目跑起来分为以下两种状况:全新的我的项目,中途接手的我的项目 无论哪种状况,都应该先把GitHub仓库clone到本地,有一个区别就是,全新的我的项目须要先在GitHub上新建仓库。 //作用:把地址中的在线仓库clone到本地的文件夹中git clone <仓库地址> <本地的文件夹>请急躁等它跑完。在本地领有了代码之后,就开始跑我的项目了。 如果是已有的旧我的项目,接下来就是查看开发环境、数据库、Nginx、redis等等,以确保我的项目能胜利的跑起来。如果是新我的项目,仓库中只有一个readme.md,就不须要这一步(但须要额定的一步我的项目初始化,具体如何初始化,取决于开发应用的编程语言)。 步骤一:把本地仓库调整到工作状态出于平安起见,一个谨严的团队,必然会制订一些合作开发的标准,比方 不能向主分支间接提交代码不能由旧分支向新分支发动合并申请因而,在支付一个工作时,咱们本地的仓库可能刚刚实现上一个工作,因而须要进行切回主分支、同步近程仓库的代码、建设新分支等等操作。 假如咱们支付了新工作,issue的编号是300,而咱们本地仓库还处于上次的275分支上,并且刚刚提交完代码: 这时候须要先切换回主分支: // 切换到主分支git checkout master 而后把近程主分支同步到本地主分支:(分支关系: origin/master -> master) // 拉取近程仓库的代码git pull 执行上一步当前,咱们本地的代码曾经和近程仓库完全一致了。接下来为新支付的工作创立一个分支: // 创立新分支git checkout -b <分支号>// 示例:创立分支编号为300的新分支git checkout -b 300 到此为止,咱们既更新了本地的代码为最新版本,又为新支付的工作做好了筹备,因为新的issue将在300分支上实现开发,因而,在合并代码之前,不会对master分支产生影响。 接下来就开始写代码了。 步骤二、提交代码假如当初我的代码曾经写完了,在齐全保留之后,终端中的分支号是黄色的,黄色示意代码有改变,但尚未提交。 咱们能够查看代码变更信息(这一步不是必须的): // 查看代码状态git status 从返回的后果来看,有一个文件是modified状态,这阐明:Git发现了一个文件呈现更改,但并没有记录这个更改,因而提示信息是红色的。 那么咱们怎么让Git记录这些更改呢? // 记录以后目前的所有文件变更// 此命令应该在我的项目根目录执行git add .再git status 就能够看到刚刚显示红色的文件曾经变成绿色: 接下来能够提交代码了(也相当于打一个保留点): // 在本地提交代码变更,最初是备注信息git commit -m <备注信息>// 示例git commit -m issue300已实现提交实现后,本来黄色的分支号会从新变成绿色: 接下来就是把本地的代码提交到近程分支上:(分支关系 300 -> origin/300) ...

July 25, 2020 · 1 min · jiezi

关于git:Git常用命令

July 24, 2020 · 0 min · jiezi

关于git:CODING-DevOps-Nginxingress-实现自动化灰度发布

作者:王炜,CODING DevOps 后端开发工程师,领有多年研发教训,云原生、DevOps、Kubernetes 资深爱好者,Servicemesher 服务网格中文社区成员。取得 Kubernetes CKA、CKAD 认证。前言在 Kubernetes 上的利用实现灰度公布,最简略的计划是引入官网的 Nginx-ingress 来实现。 咱们通过部署两套 deployment 和 services,别离代表灰度环境和生产环境,通过负载平衡算法,实现对两套环境的依照灰度比例进行分流,进而实现灰度公布。 通常的做法是当我的项目打包新镜像后,通过批改 yaml 文件的镜像版本,执行 kubectl apply 的形式来更新服务。如果公布流程还须要进行灰度公布,那么能够通过调整两套服务的配置文件权重来管制灰度公布,这种形式离不开人工执行。如果我的项目数量多,灰度的时间跨度过长,人为误操作的概率将大大增加,过于依赖于人工执行,这对于 DevOps 工程实际是不能忍耐的。 那么,有没有一种形式可能实现无需人工干预的自动化灰度呢?例如在代码更新后,主动公布到预公布和灰度环境,并在一天的工夫内主动将灰度比例从 10% 权重进步到 100%,且可能随时终止,灰度通过后主动公布到生产环境? 答案是必定的,利用 CODING DevOps 就可能满足此类需要。 Nginx-ingress 架构和原理迅速回顾一下 Nginx-ingress 的架构和实现原理: Nginx-ingress 通过前置的 Loadbalancer 类型的 Service 接管集群流量,将流量转发至 Nginx-ingress Pod 内并对配置的策略进行查看,再转发至指标 Service,最终将流量转发至业务容器。 传统的 Nginx 须要咱们配置 conf 文件策略。但 Nginx-ingress 通过实现 Nginx-ingress-Controller 将原生 conf 配置文件和 yaml 配置文件进行了转化,当咱们配置 yaml 文件的策略后,Nginx-ingress-Controller 将对其进行转化,并且动静更新策略,动静 Reload Nginx Pod,实现主动治理。 ...

July 23, 2020 · 3 min · jiezi

关于git:git关联推送删除多个远程仓库

先用git remote -v 查看项目管理的近程仓库,如果关联的有一个近程仓库,那么git remote -v 的执行的后果是 origin http://xxxxxx/xxxxx/xxxxx.git origin 就是为这个近程仓库设置的默认标记,这个标记就像一个id是惟一的,不能反复 想要关联多个近程仓库,就要为这个仓库设置个区别于origin的标记:例如我想再持续关联三个近程仓库: git remote add second http://xxxx/xxx2/xxx.git git remote add three http://xxxx/xxx3/xxx.git git remote add four http://xxxx/xxx4/xxx.git 能够看出下面的second、three、four就是我设置的对应第二个、第三个、第四个近程仓库的标记,当然个别因为工作须要可能要关联两三个,然而关联四五个近程仓库,或者更多的话,额....有当海王的潜质。 关联了那么多近程仓库之后怎么推送到对应的仓库呢? 例如: git push origin master git push second master git push three master git push four master 从下面的代码能够看出,推送仓库的命令就只须要指定推送仓库所对应的标记就行了 怎么删除近程仓库呢? 只须要指定想要删除的近程仓库对应的标记 例如: git remote remove origin git remote remove second git remote remove three git remote remove four ...

July 23, 2020 · 1 min · jiezi

关于git:Git存储原理和敏捷开发

导读目录 1.为什么要用Git版本控制2.Git文件构造和存储原理3.GitFlow分支开发标准4.Git 常见问题和解决方案5.继续集成和麻利开发1.为什么要用Git版本控制以后的版本控制系统有以下几种: Git是目前世界上最先进的分布式版本控制系统,应用Git和Gitlab搭建版本控制环境是当初互联网公司最风行的版本控制形式SVN TortoiseSVN是一款十分易于应用的跨平台的 版本控制/版本控制/源代码控制软件。HG Mercurial 是一种轻量级分布式版本控制系统,采纳 Python 语言实现,易于学习和应用,扩展性强。CVS 是版本控制系统,是源配置管理(SCM)的重要组成部分。SVN存在的缺点 Git的劣势1.Git把内容按元数据形式存储,hash存储形式, 每一次提交都是一个整个我的项目的镜像. 2.每个客户端的源,都能够作为clone对象.蕴含所有核心版本库的元素. 两者差别源于linux的一句话, 所有零碎皆为文件, svn右边, git左边. Git每次提交,都是一个对我的项目的 残缺快照. [传送门]svn转Git治理教程2.Git文件构造和存储原理Git的文件构造当在一个新目录或已有目录执行 git init 时,Git 会创立一个 .git 目录。 这个目录蕴含了简直所有 Git 存储和操作的对象。 所有零碎都是有文件形成. 这些文件治理着 一个我的项目的版本. Git存储构造Git的文件存储构造, 不失当的类比java中 hashMap的存储的(位桶数组+单向链表或红黑树) 桶链存储构造, 艰深的讲: 先用桶用分类规定.把一堆数据,装进筒子里,如下图所示. Git的存储形式文件存储, 版本越多,存储信息越大, 运行也就越慢. 下图,是 一次commit产生的一棵树(一个快照). 只有文件内容雷同, 那么就是一个blob, (不论他的门路是否一样), Git的一次提交, commit信息会刷新,这次产生变动的文件的hash值,也就是blob, git应用hash值作为文件名,次要是为了比照差别,只有文件变了,那么该文件的hash值就会变,与老版本的文件名就不同,就能够据此断定有差别,这个信息会随着文件夹向上传递,也就催生了不同的tree蕴含这些不同的blob。 Emm…沿着思路想上来.. 一个文件,批改后,内容变动了, 产生两个blob, 批改次数越多, blob 越多.内存占用越来越大? git gc 理解一下…. Git 往磁盘保留对象时默认应用的格局叫涣散对象 (loose object) 格局。Git 时不时地将这些对象打包至一个叫 packfile 的二进制文件以节俭空间并提高效率。当仓库中有太多的涣散对象,或是手工调用 git gc 命令,或推送至近程服务器时,Git 都会这样做. ...

July 22, 2020 · 2 min · jiezi

关于git:前端智造内容新生-腾讯-2020-TLC-大会来了

依据寰球驰名的科技市场钻研机构 IDC 的数据,寰球信息技术产业无望在 2020 年达到 5.2 万亿美元,互联网产业的疾速倒退,使得 IT 行业待业薪资继续涨幅。但工作强度、行业竞争、裁员压力以及疫情暴发,使得 IT 人员的薪酬之路仍然起伏。互联网开发人员面对行将压缩的下半场,唯有一直进步本人,一直加强本人对新生事物的敏锐和高阶常识的急躁,能力在风雨到来的时候,耸立不到。前端开发者想要进步本人,也须要一直理解新常识,接触行业大牛,看准行业趋势。在 TLC 大会上,无论你是行业资深开发人员,还是刚入门的小白,都能取得收益。 大会简介 TLC 腾讯直播大会(Tencent Live Conference,简称 TLC),是由腾讯看点团队精心打造,由 IVWEB 团队主办的面向寰球大前端畛域的技术大会,致力于晋升和促成全行业大前端、信息流、serverless、音视频、直播、图像处理等畛域的交换和技术创新,旨在打造一个高品质、高标准的行业交换会议,通过行业出名讲师的分享与交换,帮忙参会者理解各个技术畛域的发展趋势与实际案例。目前 TLC 曾经胜利举办了 3 届,为国内外直播畛域的开发者提供了独特交换技术发展趋势及行业动态的机会。对技术感兴趣的你,肯定不要错过这个绝好的、与行业大牛线下深度交换的机会。 本届 TLC 大会的主题是 “前端智造,内容新生”,主题涵盖社交、电商、娱乐等畛域,讲师是来自腾讯、阿里、paypal、Bilibili、京东等知名企业的技术专家,并且有丰盛的大会分享教训。大会将于 2020 年 9 月 5 日在充满活力的深圳·科兴迷信园国际会议中心与开发者相约。 扫一扫,返回大会官网获取更多信息: 专场介绍讲师阵容大会已邀请到 Node.js 技术布道者狼叔、《Node.js:来一打 C++ 扩大》作者死月、智能生成代码平台 imgcook 研发负责人妙净、腾讯 PCG 技术运营部 TL 潘欣、Bilibili 主站技术核心资深前端开发工程师付强、Taro 框架的外围开发朱天健、腾讯云 CODING DevOps 后端工程师王炜等泛滥国内知名企业技术专家。 主会场集结业内顶尖技术大牛,从行业标准、技术规范、语言倒退、前沿趋势等角度登程,对业界最热门的技术和话题进行分析和解读,帮忙开发者疾速进行技术选型,并且提供卓有成效的最佳实际。到底哪些畛域会引领新潮流,哪些畛域又能长青不倒,TLC 主会场与你一起摸索。 前沿技术专场技术的世界瞬息万变,丝毫不会因为咱们大喊“别再更新了学不动了”而停留脚步。前沿技术如人工智能、WebAssembly、Serverless 会成为本会场关注的重点。如何在时代巨变中以不变应万变,如何在高度内卷化的互联网行业维持本人独特的竞争力,放弃对前沿技术敏锐的嗅觉必不可少。来自腾讯、阿里、京东和 Bilibili 的专家级工程师联合本人一线教训,给咱们带来一场“将来已来”的前沿技术专场。 研发效力专场随着最近几年 DevOps 的炽热,越来越多的陈腐词汇涌入开发者眼帘,继续集成,麻利开发,自动化部署,自动化测试,精益软件开发和继续交付等等。研发效力曾经成为软件企业倒退的外围竞争力,也是开发人员走向高阶的必经之路。最近炽热的前端智能化,也致力于通过机器学习和人工智能的形式来缩小前端开发过程中的干燥和重复性工作。5G 时代悄悄到来,云桌面云办公将来或成为标配,行业改革弹指之间,研发效力专场,带给你更多的前沿技术分享。 ...

July 21, 2020 · 1 min · jiezi

关于git:Git常用操作命令

1. 近程仓库相干命令检出仓库:$ git clone git://github.com/jquery/jquery.git查看近程仓库:$ git remote -v增加近程仓库:$ git remote add [name] [url]删除近程仓库:$ git remote rm [name]批改近程仓库:$ git remote set-url --push[name][newUrl]拉取近程仓库:$ git pull [remoteName] [localBranchName]推送近程仓库:$ git push [remoteName] [localBranchName]2. 分支(branch)操作相干命令查看本地分支:$ git branch查看近程分支:$ git branch -r创立本地分支:$ git branch [name] ----留神新分支创立后不会主动切换为以后分支切换分支:$ git checkout [name]创立新分支并立刻切换到新分支:$ git checkout -b [name]删除分支:$ git branch -d [name] ---- -d选项只能删除曾经参加了合并的分支,对于未有合并的分支是无奈删除的。如果想强制删除一个分支,能够应用-D选项合并分支:$ git merge [name] ----将名称为[name]的分支与以后分支合并创立近程分支(本地分支push到近程):$ git push origin [name]删除近程分支:$ git push origin :heads/[name]2.1 分支操作场景基于master创立了一个branch-demo分支,将作了批改的branch-demo分支提交到近程的master分支。 应用$ git push origin master提交,然而显示的后果却是'Everything up-to-date'。产生问题的起因是$ git push origin master 并没有track近程分支到本地分支中,因而默认提交的是master分支。因为master分支默认指向了origin master分支,这里要应用$ git push origin branch-demo:master,就能够把branch-demo推送到近程的master分支了。本地的某个分支test提交到近程仓库,并作为近程仓库的master分支,或者作为另外一个名叫test的分支,那么能够这么做。 ...

July 19, 2020 · 1 min · jiezi

git命令

git status 查看状态 git log 查看日志 git diff 比拟工作区和暂存区 git diff --cached 比拟暂存区和版本库 git diff master 比拟工作区和版本库 git reset HEAD^ 回退一次。版本库的文件替换缓存区 git reset HEAD~1 回退一次。版本库的文件替换缓存区 git reset --hard HEAD~1 版本回退一次 。罕用 git reset --hard ID 回退到指定ID版本。罕用 --hard 重置暂存区和工作区 --soft 暂存区和工作区内容不变动,仅把HEAD指针扭转 git revert ID 比照回退,生成一次新的提交记录 git restore --staged xx.html 撤回暂存区,但不会批改工作区 git restore xx.html 撤回工作区 git branch dev 创立dev分支 git checkout dev 切换到dev分支 git branch -d dev 删除dev分支 ...

July 16, 2020 · 1 min · jiezi

Git-教程

GIT 教程Git是一个侧重于速度的分布式订正管制和源代码管理系统。Git最后是由Linus Torvalds设计和开发的,用于Linux内核开发。Git是依据GNU通用公共许可证版本2发行的免费软件。本教程介绍了在进行基于Web和基于非Web的利用程序开发时,如何在分布式环境中应用Git进行我的项目版本控制。 版本控制系统版本控制系统(VCS)是一种软件,能够帮忙软件开发人员一起工作并保护其残缺的工作历史。以下列出的是VCS的性能- 容许多个开发人员同时工作。不容许笼罩彼此的更改。保护每个版本的历史记录。以下是VCS的类型- 集中版本控制系统(CVCS)。分布式/扩散版本控制系统(DVCS)。在本章中,咱们将仅专一于分布式版本控制系统,尤其是Git。Git属于分布式版本控制系统 分布式版本控制系统集中版本控制系统(CVCS)应用地方服务器来存储所有文件,并反对团队合作。然而CVCS的次要毛病是它的单点故障,即地方服务器的故障。可怜的是,如果地方服务器宕机了一个小时,那么在那一小时内,没有人能够进行合作。即便在最坏的状况下,如果地方服务器的磁盘损坏并且未进行适当的备份,那么您将失落我的项目的整个历史记录。在这里,分布式版本控制系统(DVCS)成为事实。DVCS客户端不仅签出目录的最新快照,而且还齐全镜像存储库。如果服务器呈现故障,则能够将任何客户端的存储库复制回服务器以进行复原。每次签出都是存储库的残缺备份。Git不依赖地方服务器,这就是为什么离线时能够执行许多操作的起因。脱机时,您能够提交更改,创立分支,查看日志以及执行其余操作。您仅须要网络连接即可公布更改并进行最新更改。 Git的长处收费和开源 Git是依据GPL的开源许可公布的。它能够通过互联网收费取得。您能够应用Git来治理房地产我的项目,而无需花一分钱。因为它是开源的,因而您能够下载其源代码,也能够依据须要进行更改。 又快又小 因为大多数操作都是在本地执行的,因而在速度方面具备微小劣势。Git不依赖地方服务器。这就是为什么无需每次操作都与近程服务器进行交互的起因。Git的外围局部是用C编写的,它防止了与其余高级语言相干的运行时开销。只管Git镜像了整个存储库,但客户端的数据量很小。这阐明了Git在客户端压缩和存储数据的效率。 隐式备份 有多个正本时,失落数据的机会非常少。任何客户端上存在的数据都会镜像存储库,因而能够在解体或磁盘损坏的状况下应用它。 平安 Git应用称为平安哈希函数(SHA1)的通用加密哈希函数来命名和标识其数据库中的对象。在结帐时,每个文件和提交都通过其校验和进行校验和并检索。这意味着,在不理解Git的状况下,不可能从Git数据库更改文件,日期和提交音讯以及任何其余数据。 无需弱小的硬件 对于CVCS,地方服务器必须足够弱小以服务于整个团队的申请。对于较小的团队来说,这不是问题,然而随着团队规模的扩充,服务器的硬件限度可能会成为性能瓶颈。对于DVCS,除非开发人员须要推送或提取更改,否则它们不会与服务器交互。所有沉重的工作都产生在客户端,因而服务器硬件的确能够非常简单。 分支更容易 CVCS应用便宜的复制机制,如果咱们创立一个新分支,它将所有代码复制到该新分支,因而既费时又效率不高。而且,CVCS中分支的删除和合并既简单又费时。然而应用Git进行分支机构治理非常简单。创立,删除和合并分支仅需几秒钟。git 教程git 环境设置git 生命周期

July 15, 2020 · 1 min · jiezi

git使用

git是一个开源的分布式版本控制系统,用于麻利高效地解决我的项目. 装置能够从Git官网当初安装程序, 而后默认选项装置即可.装置胜利后, 在开始菜单找到Git Bash, 跳出命令窗口阐明装置胜利.进行git设置 git config --global user.name "yourName"git config --global user.email email@example.com查看设置的user信息 git config user.namegit config user.email执行 ssh-keygen -t rsa -C "邮箱地址" ,始终回车, 生成ssh key留神: git config命令用了--global参数, 标识这台机器上的所有git仓库都应用这个配置; 当然也能够对仓库指定不同的用户名和emai地址.删除ssh时, 始终默认回车就好, 不必设置ssh的明码, 否则每次提交都要输出ssh的明码.找到生成的ssh(默认是id_rsa.pub文件), 复制秘钥后增加到代码托管平台. mac 下查看cd ~/.ssh cat id_rsa.pub 应用拉取近程代码git clone 仓库地址 , 实现后cd到仓库目录 git branch -a , 能够查看所有分支 git checkout 指标分支 , 检出指标分支 如果要新建本地分支拉取, git checkout -b 新分支名 拉取到本地新分支上, 再 git pull origin 分支 将本地分支与近程分支关联. ...

July 14, 2020 · 2 min · jiezi

Git-提示用户密码错误如何修改

Git 提醒用户明码谬误。 然而在 Git 中有没有方法批改,这是因为针对不同的 Git 网站,咱们会应用 Windows 自带的用户治理。 你须要进入你的控制面板,而后抉择用户。 而后抉择治理用户的登录信息,所有你应用网站的登录信息都会保留在这里。 而后抉择 Windows 账号信息。 在弹出的网站中,找到你以后用户受权失败的 Git 网站。 而后单击批改用户名和明码就能够了。 你也能够删除,那么下次登录的时候会要求你再次输出用户名和明码。 https://www.ossez.com/t/git/253

July 11, 2020 · 1 min · jiezi

如何选择-Git-分支模式

简介: 编写代码,是软件开发交付过程的终点,公布上线,是开发工作实现的起点。代码分支模式贯通了开发、集成和公布的整个过程,是工程师们最亲切的小伙伴。那如何依据本身的业务特点和团队规模来抉择适宜的分支模式呢?本文分享几种支流 Git 分支模式的流程及特点,并给出抉择倡议。 分支的目标是隔离,但多一个分支也意味着保护老本的减少。咱们能够别离从开发和公布分支的多寡,做个简略组合,即: 骨干开发,骨干公布。分支开发,骨干公布。骨干开发,分支公布。分支开发,分支公布。构想两个不同的场景: 如果一个软件,只有一个开发者,只须要一个公布版本,那他须要什么样的分支模式?如果一个软件,有 10 位开发者,须要反对多个版本,那他们又须要什么样的分支模式?一个好的分支模式,能够大大提高软件的开发、集成和公布效率。抉择什么样的分支策略,是每一个开发团队开始工作时面临的第一个问题。那么,抉择什么样的分支模式才适宜咱们呢?在答复这个题之前,咱们先理解一下几种常见的分支模式。 支流的分支模式常见的分支模式有 TBD(即骨干开发模式)、Git-Flow 模式、Github-Flow 模式及 Gitlab-Flow 模式。 TBD(骨干开发模式)即所有开发者,仅在一个开发分支(即骨干)上进行合作开发的模式,在这种模式下,不容许新建任何长期存在的开发分支,有且仅保留骨干分支进行开发合作。 因为没有长期拆散的其余开发分支,任何代码变更继续地更新到骨干上,在肯定水平上防止了 merge 代码带来的困扰。同时,在这种开发模式下,倡议采纳公布分支的策略,依据软件版本的公布节奏拉出公布分支。在 TBD 模式下,所有的批改都是在骨干上,哪怕是缺点的批改也是,批改完缺点后,再 cherry pick 到公布分支上。 其特点总结一下就是: 有且仅有一个开发分支,即骨干分支。所有改变都产生在骨干分支。公布能够从骨干拉公布分支。骨干上进行的修复须要依据缺点的修复策略,确定是否 cherry pick 到对应版本的公布分支。 因为团队共享一个开发分支,并且在开发分支上进行集成验证,而每次代码提交都会触发集成验证,这就要求每次代码的变更在骨干上都能疾速地验证,以确定是否承受下一次代码变更(每次代码变更都应该基于前一个稳固的版本进行),为了保障骨干始终处在可工作状态,这就须要: 每一次的变更要小,这样在验证的过程中能力管制范畴。疾速实现验证,这就要求有绝对欠缺的自动化查看验证机制。所以,骨干开发模式能够说是继续集成的要害推动者。骨干开发模式十分利于继续集成,并且依据稳固和骨干基线,做到随时公布,以达到继续交付。但这些是建设在团队成熟的合作能力和绝对成熟的工程配套的根底上,疾速地对骨干的变更提交实现编译、查看及验证;同时,因为采取公布分支的实际形式,在产品版本、分支、部署场景的对应关系须要梳理分明,防止公布分支凌乱,及缺点批改在各分支上的修复策略。 因为骨干开发要求每次变更提交都要小,并且要疾速验证完,保障骨干是处在可公布状态。对于一些处在开发过程中的个性,如每次变更提交,并非意味着残缺个性的实现,为了隔离“个性半成品”对骨干的影响,个别会采纳个性开关(Feature Toggle)的形式进行隔离。即频繁的代码变更提交,能够先做集成及验证,然而在公布的角度,通过(Feature Toggle)先暗藏相干个性,只有当个性都实现之后,才关上开关,个性齐全透出。 然而,个性开关的引入也并不是没有老本,因为个性开关是配置,实质上跟咱们经常用到的宏定义(#if #else)没啥区别,从实质上,它也是一种代码的分支。个性开关的应用,在肯定水平上让你的代码变得更软弱。所以,个性开关的应用,是建设在良好的代码设计根底上。 为了补救诸如个性开关这样针对某个个性开发的须要,而且当初软件开发中,越来越多的团队独特合作在一起实现某一个个性这样的场景,一种针对个性开发的分支模式就应运而生,这就是个性分支开发模式,最有代表性的就是 Git-Flow。 Git-FlowGit-Flow 是为了解决多个不同个性之间并行开发须要的一种工作形式。当开始一个个性的开发工作的时候,从骨干上拉出一个个性分支,所有的对于该个性的开发工作都产生在这个个性分支上,当实现该个性的工作之后,再把个性分支合并回代码主门路上,并筹备公布。 Git-Flow 有以下几种分支: feature 分支:开发者进行性能开发的分支。develop 分支:对开发的性能进行集成的分支。release 分支:负责版本公布的分支。hotfix 分支:对线上缺点进行批改工作的分支。master:保留最新已公布版本基线的分支。每个个性都有属于本人的开发分支,即 feature 分支,当一个开发者须要在两个个性上进行工作的时候,他须要做的是通过 check out 命令在两个分支之间进行切换。这样做的目标是避免开发过程中,两个个性开发工作的互相烦扰。 个性开发过程中,须要针对该个性进行独自验证,当该个性并验证通过之后,merge 到一个叫做 develop 分支(大部分工夫与 master 分支相近)的集成分支中,对整个软件进行验证。develop 分支永远保留都是最近的未公布版本,当 develop 分支的代码被验证可公布之后,独自从 develop 分支拉出 release 分支进行公布。 当拉出 release 分支进行公布过程中,如果发现缺点,缺点的修复产生在 release 分支上,所做的缺点批改再继续同步到 develop 分支上。当 release 分支被公布完,其代码的最终版本会再次别离同步给 develop 分支和 master 骨干上。咱们能够发现, master 上永远保留的是可工作版本的基线。develop 分支保障的是开发集成中最新的版本。 ...

July 10, 2020 · 2 min · jiezi

git迁移到新仓库保存历史提交记录

第一步,新建仓库并复制仓库地址 例如:http://gitlab.xxx.com/xxx/Pro... 第二步,删除需要迁移的本地项目所关联的远程仓库地址 git remote remove origin 第三步,关联新仓库的地址 git remote add origin http://gitlab.xxx.com/xxx/Pro... 第四步,把项目推送到新的远程仓库 git push origin 最后一步,推送所有分支镜像到远程仓库 git push --mirror http://gitlab.xxx.com/xxx/Pro...

July 7, 2020 · 1 min · jiezi

同时提交gitHub和gitee仓库

在进行平时撸代码的时候就想同时提交到github和码云里面去,虽然码云里面可以直接导入已有仓库,但还是太麻烦了,就想着可以同时提交git和码云,最终还是度娘出来了两套方案; 通过添加SSH公钥访问仓库使用如下命令分别生成github和gitee的SSH-Key。// "~/" 代表根路径 C:\Users\Administrator,校验时会默认搜索此路径ssh-keygen -t rsa -C "xxxxx@xxxxx.com" 按照提示完成三次回车,即可生成 ssh key。可以通过查看根路径.ssh/id_rsa.pub 文件内容,或者在右键git终端中输入 cat ~/.ssh/id_rsa.pub;获取到你的 public key。cat ~/.ssh/id_rsa.pub复制生成后的 ssh key,通过github和gitee中的ssh设置将生成的public key添加到账户中。可以通过在终端输入ssh -T git@gitee.com来验证是否添加成功,首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。在本地增加远程地址给origin 增加一个可以push的地址。 // 添加地址 git remote set-url --add origin git仓库名 // 如果添加地址有问题,可以使用如下命令删除 git remote set-url --delete origin git仓库名通过 git remote -v 查看是否添加成功,如果有刚添加的地址也就证明添加成功。然后就可以正常推送代码了,如果推送不上去,则使用git push origin master -f 强推。参考链接同时使用:gitlab & github一个项目设置两个git地址生成/添加SSH公钥PS本文是从以上文章总结并且加入自己部分理解以及注意点,有问题请及时联系。由于实现的环境问题,可能会存在问题,欢迎一起讨论。

July 5, 2020 · 1 min · jiezi

怎么新建一个gitee仓库

1.登录gitee(码云)网站; 2.点击网站右上角的+号,选择新建仓库,进入新建仓库页面; 仓库相关概念: 仓库名称:仓库的名称,用于仓库命名。 路径:仓库的git访问路径,创建仓库后用户将通过该路径访问仓库。 仓库介绍:仓库的简单介绍。 是否开源:设置仓库是否为公开仓库,公开仓库对所有人可见,私有仓库仅限仓库成员可见。 选择语言:主要用的编程语言。 Readme:项目自述文档,通常包含软件的描述或使用的注意事项。 3.点击创建,即可在gitee上创建你的第一个仓库。 示例代码下载可以复制以上代码运行查看使用效果,也可以到GitHub: https://github.com/Jackyyans/code123下载,更多示例将会持续更新,欢迎关注。

July 3, 2020 · 1 min · jiezi

怎么退出使用Git时弹出的vim编辑器

在使用Git拉取仓库更新的时候经常会弹出下面这样的弹窗,第一次遇到的时候有没有很抓狂?感觉不管按哪个键都无法退出,只有使出终极大招:直接关闭Git。 这个弹出的叫vim编辑器,弹出来的是编辑模式,可以输入任意字符的提示。想要退出的话,可以先按Esc,回到一般模式,你会发现左下角的--插入--不见了。 输入:q即可退出vim编辑器,或者输入:q!(强制退出不保存)、:wq(保存后退出)、:wq!(强制保存后退出)也可以退出编辑器。 另外一种方式就是,按住Esc键,再按两次大写的Z,也可以退出vim编辑器弹窗。 GitHub有个比较有意思的项目叫how-to-exit-vim,列举了N种退出vim编辑器的方法,有的方法很有意思,截几个给大家看看。 有兴趣可以去观摩一下:https://github.com/hakluke/how-to-exit-vim

July 1, 2020 · 1 min · jiezi

git相关问题记录

1.windows下载地址:git 下载地址2.安装后随意文件夹右键是否有这两个选择,有则是安装成功3.安装成功后还需要配置git的邮箱及名字(名字随意打,邮箱是git账号的邮箱)tips:git config 中的 --global表示这台机器上的所有git仓库都会使用这个配置 $ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"

July 1, 2020 · 1 min · jiezi

Git常用命令清单

增加/删除文件# 添加指定文件到暂存区$ git add [file1] [file2] ...# 添加指定目录到暂存区,包括子目录$ git add [dir]# 添加当前目录的所有文件到暂存区$ git add .# 改名文件,并且将这个改名放入暂存区$ 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 --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]撤销# 恢复暂存区的指定文件到工作区$ 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 branch -m old_branch new_branch # Rename branch locally git push origin :old_branch # Delete the old branch git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote放弃修改,强制覆盖本地代码git fetch --allgit reset --hard origin/master git pull//合并写法git fetch --all && git reset --hard origin/master && git pull撤销commitgit reset --soft HEAD^so解决冲突,合并分支//合并指定分支到当前分支git merge master使用一次新的commit,替代上一次提交git commit --amend -m [message]

July 1, 2020 · 2 min · jiezi

怎么删除Git的本地分支和远程分支

在项目开发过程中,Git分支可能越建越多,管理起来比较费劲。所以,我习惯不定期的删除一些分支。 1.查看当前分支 当前分支前面会有*标识。 $ git branch 2.查看所有分支 包括远程分支,远程分支用红色标识。 $ git branch -a 3.删除本地分支 $ git branch -d feature/dev 4.删除远程分支 $ git push origin --delete bug 示例代码下载可以复制以上代码运行查看使用效果,也可以到GitHub: https://github.com/Jackyyans/code123下载,更多示例将会持续更新,欢迎关注。

July 1, 2020 · 1 min · jiezi

git常用操作

常用命令# 代码下载git clone xxxxxx# 日志git log# 代码回退git reset --hard 提交id# 缓存管理git stash listgit stash drop stash@{0}git stash clear# 查看状态 git status# 本地分支管理 # 创建git checkout -b 本地分支名 远程分支名git checkout -b 本地分支名 -t 远程分支名# 查看git branch -agit branch# 删除git branch -d 分支名# 切换git checkout 分支名# 合并 分支A合并到Bgit checkout Bgit merge A# 代码回退# 回退到某个版本git reset --hard <commit_id>git push origin HEAD --force# 回退本地commitgit reset HADEgit push origin developer --force# 逆向提交本地commitgit revert HADEgit addgit commitgit push代码提交流程# 缓存本地修改git stash # 拉取远程代码git pull# 提取本地缓存git stash pop# 解决冲突、提交代码

June 30, 2020 · 1 min · jiezi

git使用常见问题

1、.gitignore部分或全部不起作用清除本地库的缓存: git rm -r --cached .将本地代码重新加入: git add .并让.gitignore文件夹生效,读取我配置的过滤规则: git commit -m ‘update .gitignore’ 2、查看历史文件内容当我们使用 git log 命令找到了某次提交,并且想看看这次提交时文件的完整内容。
这时,我们需要使用 git show 命令:git show xxx:filename也许此时你并不是看看就算了,你想要使用这个版本的文件更新工作区中的文件。
直接从 git show 命令的输出中拷贝内容是个不错的选择。
但也可以通过组合使用不同的命令来实现:git checkout <commit> --filenamegit reset filename此时只有工作区被更新了(你也可以把他当做是一次回滚操作)。
3、比较历史中的文件版本我们经常使用版本控制工具来对比提交历史中的两个文件,下面看看用 git 怎么做:git diff xxxx1 xxxx2 -- filename 4、git 远程仓库文件覆盖本地文件git fetch --allgit reset --hard origin/master //例如 dev/20190926分支: git reset --hard origin/dev/20190926git pull 5、git clone --depth=1depth用于指定克隆深度,为1即表示只克隆最近一次commit. 6、修改上一条提交记录git commit -m 'title' -m 'message:xxx'提交之后,发现提交的标题或说明有问题,则可以通过git commit --amend -m 'title' -m 'message:xxx'重新提交。--amend重新提交是在日志看不到操作记录的,只是修补上一次操作记录 ...

June 30, 2020 · 1 min · jiezi

git合并多次提交记录

命令git rebase -i HEAD~4或者 git rebase -i bddesdd6 #要合并的提交的上一条提交ID合并pick bddebfb1 退出修改f 68326b8c 接口修改f 699501f7 接口修改f 784e86b3 接口修改# Rebase 2b8d14b7..784e86b3 onto 784e86b3 (4 commands)## Commands:# p, pick <commit> = use commit......主要看这里的合并方式根据描述 用f(fixup) (使用这个提交,但合并到前一个提交,并且忽略备注) # Commands:# p, pick <commit> = use commit# r, reword <commit> = use commit, but edit the commit message# e, edit <commit> = use commit, but stop for amending# s, squash <commit> = use commit, but meld into previous commit# f, fixup <commit> = like "squash", but discard this commit's log message# x, exec <command> = run command (the rest of the line) using shell# b, break = stop here (continue rebase later with 'git rebase --continue')# d, drop <commit> = remove commit# l, label <label> = label current HEAD with a name# t, reset <label> = reset HEAD to a label# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]# . create a merge commit using the original merge commit's# . message (or the oneline, if no original merge commit was如果中途发生异常,比如还没完成关闭了终端,可随时中断重新rebasegit rebase --abort同步到远程(确保此分支没有别的提交或者只有你在用)git push origin branchName -f

June 30, 2020 · 1 min · jiezi

git工作流功能分支

【待更新最新最全流程】 克隆完成后,得到的是发布后的master源码,如果想要获取最新的正在开发中的源码,需要对项目流进行初始化,点击“Git工作流” 直接点“确定”,获取develop分支源码 开发任务都是在develop分支上完成的 4. 分支共有5种类型 1) master,最终发布版本,整个项目中有且只有一个 2) develop,项目的开发分支,原则上项目中有且只有一个 3) feature,功能分支,用于开发一个新的功能 4) release,预发布版本,介于develop和master之间的一个版本,主要用于测试 5) hotfix,修复补丁,用于修复master上的bug,直接作用于master 5. master和develop上文中已介绍过,当开发中需要增加一个新的功能时,可新建feature分支,用于增加新功能,并且不影响开发中的develop源码,当新功能增加完成后,完成feature分支,将新功能合并到develop中,更新develop上的代码     1) 新建feature。首先当前开发分支指向develop,点击“Git工作流” 选择“建立新的分支” 在预览中可看到,feature分支是从develop分出的,输入功能名称,点击确定,项目结构中增加feature分支,并且当前开发分支指向新建的feature分支 2) 在F_add_feature分支下进行开发任务,并提交 当切换为develop分支后,会发现,在develop下并没有新增的三个文件,说明在feature下进行操作,并不影响develop分支源码 3) 完成feature开发后,将feature中的源码合并到develop分支。将当前分支指向F_add_feature分支,点击“Git工作流”,选择“完成功能” 预览中,表明feature分支将合并到develop,点击确定,进行提交合并,合并成功后 4) 需要再增加新的功能时,重复以上操作即可 5) 当多人协作开发时,可能会出现,不同人员对同一文件进行操作,从而引起合并冲突,对这种情况进行模拟,在当前新建两个feature,分别对feature_1文件进行修改,然后分别合并 先后合并F_feature_1和F_feature_2,会出现冲突 点击close,查看未提交的更改,提示feature_1.txt出现冲突,  出现<<<<<<< HEAD、=======、>>>>>>> feature/F_feature_2,HEAD和=号之间表示当前分支下的代码,=号和>>>>>>> feature/F_feature_2之间表示要合并的分支下的代码,>>>>>>> feature/F_feature_2表示了要合并的分支的分支名称, ...

June 30, 2020 · 1 min · jiezi

怎么设置文件不被上传在使用Git管理代码的时候

在使用Git管理项目代码的时候,有些文件夹或者文件我们是不希望被上传的,比如依赖文件夹(node_modules),或者数据库账号密码的文件等等。 解决方案创建一份Git忽略清单。 1.文件夹内右键Git Bash,执行touch .gitignore,注意中间有空格; $ touch .gitignore2.编辑器打开生成的.gitignore文件,编辑: data/.vscode/web.configconn.phpnode_modules/3.保存以后,就会忽略你配置的文件或文件夹了。 示例代码下载可以复制以上代码运行查看使用效果,也可以到GitHub: https://github.com/Jackyyans/code123下载,更多示例将会持续更新,欢迎关注。

June 29, 2020 · 1 min · jiezi

GIT使用指南

基本概念 Git基于本地进行完整的版本管理,不强依赖远程仓库。(即:所有开发者在本地就可以做版本管理,本地和远程版本管理再相联接。)这是Git和Svn最本质的区别,也是Git的最强项。SVN是集中式的。SVN适用场景:版本变更、切换不频繁,测试人员产品经理也使用。GIT:功能强大,但操作稍复杂。 我们先来理解下Git 工作区、暂存区和版本库概念 工作区:就是你在电脑里能看到的目录。暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。GIT分支管理命令(以下分支操作都是本地操作):创建分支:git branch (branchname) 删除分支:git branch -d (branchname) git push origin -d (branchname) :删除远程分支合并分支:git merge (branchname): 将任何分支合并到当前分支中。example: git merge newtest 如果当前分支是主分支master,命令执行后将合并newtest分支到master分支。合并冲突:1、修改冲突的文件2、用 git add 要告诉 Git 文件冲突已经解决切换分支:创建新分支并立即切换到该分支下,从而在该分支中操作。git checkout (branchname) git checkout -b (branchname)  :当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。列出分支:git branch: 列出本地的分支git branch -a: 列出本地仓库所有分支git branch -r : 查看远程仓库所有分支GIT创建仓库:Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。完全是本地化的。git init :当前目录作为Git仓库。缺省情况下 Git 就会为你创建"master"分支。git init newrepo :指定目录作为Git仓库GIT拷贝仓库:使用 git clone 拷贝一个 Git 仓库(仓库所有分支)到本地,让自己能够查看该项目,或者进行修改。git clone <repo> :从现有 Git 仓库中拷贝项目git clone <repo> <directory> :克隆到指定的目录git clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。各种写法如下:git clone git@github.com:fsliurujie/test.git --SSH协议git clone git://github.com/fsliurujie/test.git --GIT协议git clone https://github.com/fsliurujie/test.git --HTTPS协议GIT提交&获取:git add & git commit :当目录下有文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交。git add 命令将内容写入缓存区, git commit 将缓存区内容添加到仓库中。git commit -a :如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。git status -s :查看在你上次提交之后是否有修改。 -s 参数,以获得简短的结果输出。git reset head :取消已缓存的内容。git diff:查看工作区与暂存区的不同。git commit、git push、git pull、 git fetch、git merge 的含义与区别*  git commit:是将本地修改过的文件提交到本地库中;*  git push:是将本地库中的最新信息发送给远程库;*  git pull:是从远程获取最新版本到本地,并自动merge;*  git fetch:是从远程获取最新版本到本地,不会自动merge; // fetch并不建立本地分支*  git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支;git pull // 相当于 git fetch + git merge。Git 有两个命令用来提取远程仓库的更新。git fetch + git merge。GIT查看提交历史:git log :想回顾下提交历史,我们可以使用 git log 命令查看。git log —oneline :查看历史记录的简洁的版本。git log --oneline --graph :开启了拓扑图选项,看到何时工作分叉、又何时归并。GIT远程仓库(Github):Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。git remote add [shortname] [url] :添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:github的SSH配置如下:一 、设置Git的user name和email:$ git config --global user.name "xuhaiyan" — 查看命令:git config user.name$ git config --global user.email "haiyan.xu.vip@gmail.com" — 查看命令:git config user.email二、生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh // 如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥,使用以下命令生成SSH Key : $ ssh-keygen -t rsa -C “email@email.com”
按3个回车,密码为空。 最后得到了两个文件:id_rsa和id_rsa.pub
3.打开 id_rsa.pub,复制里面的 key。三、为了验证是否成功,输入以下命令:ssh -T git@github.comgit remote :查看当前配置有哪些远程仓库git remote rm [alias] :删除远程仓库,alias为仓库别名,如origin创建本地仓库并联结远程仓库两种方式:第一种:1、新建一个空文件夹2、初始化 git init3、与远程仓库origin master建立连接 git remote add origin git@github.com:xxx/pname.git4、把远程分支拉到本地 git fetch origin healthyRight/20190124 // fetch并不会建立本地分支,这时 git branch 看不到本地分支,git branch -r 只看到 healthyRight/20190124 一个分支5、在本地创建分支并联结到远程分支 git checkout -b 本地分支名 origin/远程分支名git checkout -b health origin/healthyRight/20190124这样,就完成了本地创建分支并联结远程分支,如果要增加一个本地分支联结远程另一个分支,操作:git fetch origin healthyNewLife/20190221 // fetch并不会建立本地分支git checkout -b newlife origin/halthyNewLife/20190221此时git branch可以查看到两个本地分支了,但本地永远只显示当前分支项目文件,所以本地文件和开发工具中的文件会随着git checkout切换分支而变更。另一种简便方式:git clone -b 分支名 仓库地址 git clone 拷贝一个 Git 仓库(所有分支)到本地,并建立一个本地分支(默认master分支)。git clone后, 执行 git branch 可看到一个本地分支,git branch -r 可看到远程仓库所有分支。这样如果要增加一个本地分支联结远程另一个分支,不需要先git fetch获取远程分支,git clone下载了整个仓库,只需建立本地分支并联结远程分支:git checkout -b newlife origin/halthyNewLife/20190221查看本地分支和远程分支的跟踪关系:git branch -vv

June 28, 2020 · 2 min · jiezi

程序员必备基础Git-命令全方位学习

前言掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ https://github.com/whx123/Jav...公众号:捡田螺的小男孩 文章目录 Git是什么?Git的相关理论基础日常开发中,Git的基本常用命令Git进阶之分支处理Git进阶之处理冲突Git进阶之撤销与回退Git进阶之标签tagGit其他一些经典命令Git是什么在回忆Git是什么的话,我们先来复习这几个概念哈~ 什么是版本控制?百度百科定义是酱紫的~ 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。那些年,我们的毕业论文,其实就是版本变更的真实写照...脑洞一下,版本控制就是这些论文变更的管理~ 什么是集中化的版本控制系统?那么,集中化的版本控制系统又是什么呢,说白了,就是有一个集中管理的中央服务器,保存着所有文件的修改历史版本,而协同开发者通过客户端连接到这台服务器,从服务器上同步更新或上传自己的修改。 什么是分布式版本控制系统?分布式版本控制系统,就是远程仓库同步所有版本信息到本地的每个用户。嘻嘻,这里分三点阐述吧: 用户在本地就可以查看所有的历史版本信息,但是偶尔要从远程更新一下,因为可能别的用户有文件修改提交到远程哦。用户即使离线也可以本地提交,push推送到远程服务器才需要联网。每个用户都保存了历史版本,所以只要有一个用户设备没问题,就可以恢复数据啦~ 什么是Git?Git是免费、开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git的相关理论基础Git的四大工作区域Git的工作流程Git文件的四种状态一张图解释Git的工作原理Git的四大工作区域先复习Git的几个工作区域哈: Workspace:你电脑本地看到的文件和目录,在Git的版本控制下,构成了工作区。Index/Stage:暂存区,一般存放在 .git目录下,即.git/index,它又叫待提交更新区,用于临时存放你未提交的改动。比如,你执行git add,这些改动就添加到这个区域啦。Repository:本地仓库,你执行git clone 地址,就是把远程仓库克隆到本地仓库。它是一个存放在本地的版本库,其中HEAD指向最新放入仓库的版本。当你执行git commit,文件改动就到本地仓库来了~Remote:远程仓库,就是类似github,码云等网站所提供的仓库,可以理解为远程数据交换的仓库~Git的工作流程上一小节介绍完Git的四大工作区域,这一小节呢,介绍Git的工作流程咯,把git的操作命令和几个工作区域结合起来,个人觉得更容易理解一些吧,哈哈,看图: git 的正向工作流程一般就这样: 从远程仓库拉取文件代码回来;在工作目录,增删改查文件;把改动的文件放入暂存区;将暂存区的文件提交本地仓库;将本地仓库的文件推送到远程仓库;Git文件的四种状态根据一个文件是否已加入版本控制,可以把文件状态分为:Tracked(已跟踪)和Untracked(未跟踪),而tracked(已跟踪)又包括三种工作状态:Unmodified,Modified,Staged Untracked: 文件还没有加入到git库,还没参与版本控制,即未跟踪状态。这时候的文件,通过git add 状态,可以变为Staged状态Unmodified:文件已经加入git库, 但是呢,还没修改, 就是说版本库中的文件快照内容与文件夹中还完全一致。 Unmodified的文件如果被修改, 就会变为Modified. 如果使用git remove移出版本库, 则成为Untracked文件。Modified:文件被修改了,就进入modified状态啦,文件这个状态通过stage命令可以进入staged状态staged:暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodified状态.一张图解释Git的工作原理 日常开发中,Git的基本常用命令git clonegit checkout -b devgit addgit commitgit loggit diffgit statusgit pull/git fetchgit push这个图只是模拟一下git基本命令使用的大概流程哈~ git clone当我们要进行开发,第一步就是克隆远程版本库到本地呢 git clone url 克隆远程版本库 git checkout -b dev克隆完之后呢,开发新需求的话,我们需要新建一个开发分支,比如新建开发分支dev 创建分支: git checkout -b dev 创建开发分支dev,并切换到该分支下 ...

June 27, 2020 · 3 min · jiezi

Git入门这一篇就够了

前言欢迎关注公众号,白嫖原创PDF,也可以催更,微信搜:JavaPub,回复:【666】Git 在生产工作中是使用频率很高的工具,但我发现很多文章只是对它做了简单的提交命令说明,真正遇到 版本冲突或文件丢失 等问题又定位不到原因,浪费大量时间。本篇文章较长,但都是在实际项目中用到的点。 阅读本文大概需要6分钟 [toc] 1.版本控制1.1.什么是版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。除了项目,你可以对任何类型的文件进行版本控制。 1.2.为什么版本控制采用版本控制系统(VCS)是个明智的选择。 有了它就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统就算你对项目删除、修改错误,这也没有关系,你也照样可以很容易地就恢复到原先的样子。但额外增加的工作量却微乎其微。 1.3.本地版本控制许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。而且不利于团队协作。为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。图片来源 Git 官网。 其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。 甚至在流行的 Mac OS X 系统上安装了开发者工具包之后,也可以使用 rcs 命令。 它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。 1.2.集中化的版本控制接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 诸如 CVS、Subversion(SVN) 以及 Perforce 等。集中化的版本控制系统是单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。如图(来源 Git 官网): 相对本地版本管理,集中化的版本控制每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。 它也有如下诟病: 单点故障如果宕机,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 需要联网为什么需要联网?集中化的版本控制系统 仓库集中在一台服务器,也就受到服务器网络环境的影响。 1.2.分布式版本控制于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 Git 就是典型的分布式版本控制。还有 Mercurial、Bazaar 以及 Darcs 等。 客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。图片来源 Git 官网。 ...

June 26, 2020 · 2 min · jiezi

OneDev-简单易用的GitLab替代品

OneDev是一个开源的一体化的DevOps平台,目前项目在GitHub上有3K星:https://github.com/theonedev/...。 做这个项目的初衷其实是想解决Build,Issue和Code之间的信息割裂问题的。比如说在一个测试版本发布后,这个版本里包含那些需要测试的Issue,或者某个Issue最早在那个版本里被解决,又或者比较任意两个发行版本,得到所有源代码的改动等等。要方便的整合这些信息,使用一体化的平台很有必要。当初也研究了GitLab,但是觉得这家公司太过于利润导向,特别热衷于加新功能,而对已经存在的呼声很高的问题却经常视而不见,比如说代码的多行注释一直不支持,.gitlab-ci.yml难以维护,runner经常莫名其妙失败等。而GitHub企业版又太贵,消费不起。况且它们在Build,Issue和Code的整合方面也不像想象中那么顺畅。 因为一直做Git相关的开发工作,觉得做个简化版的GitHub/GitLab的Copy Cat应该不是很难,而且公司内部使用,大家低头不见抬头见,不需要那些骚气的社交功能如邀请,关注之类的,而是把精力放在直接提高生产力的功能上,比如代码智能导航,Build定义的图形界面和智能提示,Pull Request增量审查,对Docker和Kubernetes原生支持等等。随着用户的持续反馈和迭代,OneDev目前已经相当成熟和稳定,可以在很大程度上取代GitLab,而且安装维护简单,资源占用少,性能出色。具体文档参见项目主页。 好了,说了这么多废话,还是看看我们做了哪些特色功能吧。 原生支持Docker和Kubernetes 内置持续集成引擎,可以直接在本机上用Docker跑Build,也可以连接到Kubernetes集群上进行大批量的Build。 图形化的Build定义界面 在使用GitHub/GitLab等其他工具定义Build行为的时候,需要写Yaml脚本,不可避免的要去了解复杂的Build定义规则。而在OneDev里提供了图形界面,并辅以自动提示,让这个工作变得非常容易。而且日后在版本升级时,Build定义也可以自动升级。 灵活的Build工作流定义 支持用变量控制Build行为。对不同变量的组合分别进行Build/Test。可以将不同的Build任务连接形成Build Pipeline,并支持并发任务。 支持Issue状态和字段自定义 按需要自定义Issue状态和字段来满足不同的应用场景。不同字段之间可以定义依赖关系,比如说可以指定某字段只有在另一个字段选取特定值的时候显示。Issue状态可以设置基于规则的自动迁移,也可以设置基于权限的手动迁移。 自动刷新的Issue看板 根据Issue状态或者字段来展示Issue看板。所有Issue相关操作都可以在看板中进行。看板即时自动刷新来展示Issue的最新状态。 代码智能搜索和导航 在查看源文件和Diff时,支持基于语法分析的代码智能搜索和导航,并可以展示源码的大纲结构方便阅读。目前支持Java,JavaScript,C,C++,CSharp,Go,PHP,Python,CSS,SCSS,LESS,R。 使用标注对代码进行讨论和阅读 阅读代码时,随时可以加上标注同作者进行讨论。之后即使文件经过了修改或重命名,OneDev依然能够把合适的历史标注显示代码旁帮助理解。 灵活的代码审查规则 制定基于Pull Request的代码审查规则。比如说可以规定某个分支的某些文件修改后需要通过哪些人的审查,或者哪些Build任务必须通过等等。 强大易用的查询语言 系统包含有一个精心设计的查询语言,通过自动提示和补齐,可以快速创建对Issue,build,code,pull request等对象的复杂查询。查询还可以按需保存和订阅,以便在有满足查询条件的事件发生时,自动得到通知。 Code,Issue,Pull Request和Build的深度集成 在代码提交,Pull Request创建/合并,或者Build成功后,可知配置相关的Issue自动转移到所需状态,并通知相关人员。随时获取交叉信息,比如某个Build里包含那些完成的Issue,某个Issue最早在那个Build里被解决,又或者比较任意两个Build,得到所有源代码的改动等等 精细的权限控制 比如您可以定义哪些人可以改动关键源文件,哪些人可以分配Issue,哪些人可以访问测试版本,哪些人可以进行版本发布等等。

June 26, 2020 · 1 min · jiezi

版本库提交信息规范与自动验证

版本库提交信息规范本文规范借鉴社区使用最广的 Angular 规范,稍加修改。 一般提交命令我们使用如 git commit- m "feat(user): add user login" 其中当前 commit message 信息包括三部分:type(必需)、scope(可选)、 subject(必需) typetype 用于说明 commit 的类别,允许使用下面 8 个标识。 feat: # 新功能(feature)fix: # 修补 bugdocs: # 文档(documentation)style: # 格式(不影响代码执行的变动,非css样式专用)refactor: # 重构(既不是新增功能,也不是修改 bug 的代码变动)test: # 增加测试chore: # 构建过程或辅助工具的变动revert: # 对之前修改代码 commit 记录的还原scopescope 用于说明 commit 的影响范围,比如数据层、控制层、视图层、功能模块等,视项目的不同而不同。 例如: 新增用户管理的新增用户功能$ git commit -m "feat(user): add addUser"修复了用户管理的新增用户功能的bug$ git commit -m "fix(user): addUser"更新文档说明$ git commit -m "docs(readme): update readme"调整新增用户代码格式(代码换行或者删除换行)$ git commit -m "style(user/add): wrap line"增加单元测试代码$ git commit -m "test: add test"配置或者修改自动化部署文件或者构建工具$ git commit -m "chore: cicd"$ git commit -m "chore: add vue-router"还有一种是相对来说比较特殊的对之前 commit 代码的回退,比如还原之前修改 bug 的错误提交 ...

June 23, 2020 · 1 min · jiezi

curl-35-OpenSSL-SSLconnect-连接被重置

使用git2.26.2提交远程仓库时,码云没有问题,GitHub报错:fatal: HttpRequestException encountered. 发送请求时出错。查了下原因是因为Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器。解决方案:1.更新git凭证管理器https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/tag/v1.14.02.更新git到最新版本我打算采取第二种,更新git。首先想到肯定用命令啊,搜了下命令为:git update-git-for-windows结果报错:curl: (35) OpenSSL SSL_connect: Connection was reset in connection to api.github.com:443上网查了下原因,找不到,然后打算提问题,想着要把前因后果写明白了,然后一边写,一边翻自己的操作过程,然后发现了一个答案给了我启示,大概是被墙了。然后开启全局代理,果然可以了,不过下载巨慢,索性关掉代理,自己暗搓搓的到git官网上下载了安装包覆盖安装了。

June 22, 2020 · 1 min · jiezi

GIT操作指令

git branch ---------- 获取本地分支 git branch -a ------ 获取所有分支 git branch -r ------ 获取远程分支 git status ------------查看本地修改的所有文件 git reset --hard---放弃当前分支的所有更改 git checkout 文件 --放弃该文件的本地修改 git branch -d 分支1 分支2 ---检查是否merge删除本地分支(支持删除多个) git branch -D 分支1 分支2 ---不检查merge删除本地分支

June 22, 2020 · 1 min · jiezi

git-使用笔记

本文档主要记录 git 日常高频使用命令。 本地仓库由 git 维护的三棵“树”组成。第一个是工作目录,它持有实际文件;第二个是暂存区(Index),它像个缓存区域,临时保存改动;最后是 HEAD,它指向你最后一次提交的结果。如下图所示, 新建git init,创建一个新的本地仓库。git clone -b <远端分支名> <url> <local-name>,从远端 url 拉取仓库拉取制定分支到本地 local-name 文件夹下,如果不加远端分支名,则为默认分支 master。提交git add <file1> <file2> ... 将 working dir 相应文件的更改提交到 index 中。git add . 提交所有文件的更改。git commit -m 'cmmit xx' 将 index 中的内容提交到本地仓库,HEAD 指向最新提交。git commit -a -m 'commit xx' 将 working dir 所有更改一次性提交到本地仓库。git commmit 作用同 3,但是会弹出窗口,支持更长的 commit 信息。git push <上游> <上游分支> 代码提交到远端库。commit 信息变更git commit --amend 进入编辑器,修改上一次的 commit 信息。git rebase -i <commitid> 合并 commit。举例说明,使用 git log 查看,有以下 4 个 commit, ...

June 22, 2020 · 3 min · jiezi

IntelliJ-如何设置-Git-的-Remote-服务器地址

打开你的 IntelliJ Git项目。 右键选择 Git > Repository > Remotes 在弹出的界面中,你可用看到已经设置的 Remotes 因为我们当前的项目是从 SVN 上克隆下来的,所以你会看到有一个 svn 远程仓库。 我们希望将我们当前的项目重新提交到远程的 Git 中,因此我们需要在这里添加一个远程的 Git 仓库。 假设我们的远程仓库地址为: https://gitlab.com/ossez-com/... 在这里我们,可以单击右侧的 + 号 然后将要添加的远程仓库地址添加上去后 OK 保存。 然后你会看到你的远程仓库中有 2 个地址了。 下一步,你需要将你的本地修改推送到远程 Git 地址中。 快捷键 Ctrl + Shift + K 推送的功能路径为如下: 在推送界面的上面,你会看到你的推送路径是哪里: 你需要确定你的推送路径是正确的,有可能会推送到 SVN 仓库中,你当然也可以单击 origin 修改你的目的仓库地址。 然后单击 PUSH 进行推送就可以了。 https://www.ossez.com/t/intellij-git-remote/188

June 20, 2020 · 1 min · jiezi

SVN-向-GIT-进行转换如何拉取所有提交记录

如果你只想拉取 Trunk 分支的提交记录的话。 我们以项目 https://sourceforge.net/p/docutils/code/HEAD/tree/trunk/docutils/ 为示例 我们希望将上面项目的所有 Trunk 的提交记录变成 Git 的仓库。 你可用运行命令: git svn clone https://svn.code.sf.net/p/docutils/code/trunk docutils进行拉取就可以了。 请注意,如果你的提交记录非常多的话,有可能会拉取失败,如果你的计算机网络状况不是非常好,或者你计算机有自动休眠功能的话,也会拉取失败。 建议你在服务器上做,那么的效率会更高。 我们因为网络问题就没有拉完成。 https://www.ossez.com/t/svn-git/186

June 20, 2020 · 1 min · jiezi

太赞了Git-从入门到精通这篇包教包会

1、简介Git 是什么?Git 是一个开源的分布式版本控制系统。 什么是版本控制?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 什么是分布式版本控制系统?介绍分布式版本控制系统前,有必要先了解一下传统的集中式版本控制系统。 集中化的版本控制系统,诸如 CVS,Subversion 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录。 分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。 2、为什么使用 Git?Git 是分布式的。这是 Git 和其它非分布式的版本控制系统,例如 svn,cvs 等,最核心的区别。分布式带来以下好处: 工作时不需要联网 首先,分布式版本控制系统根本没有 “中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件 A,你的同事也在他的电脑上改了文件 A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。 更加安全 集中式版本控制系统,一旦中央服务器出了问题,所有人都无法工作。 分布式版本控制系统,每个人电脑中都有完整的版本库,所以某人的机器挂了,并不影响其它人。 3、Git 安装Debian/Ubuntu 环境安装 如果你使用的系统是 Debian/Ubuntu , 安装命令为: $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \> libz-dev libssl-dev$ apt-get install git-core$ git --versiongit version 1.8.1.2Centos/RedHat 环境安装 如果你使用的系统是 Centos/RedHat ,安装命令为: $ yum install curl-devel expat-devel gettext-devel \> openssl-devel zlib-devel$ yum -y install git-core$ git --versiongit version 1.7.1Windows 环境安装 ...

June 20, 2020 · 12 min · jiezi

git-最全命令总结都在这里了

在线练习https://learngitbranching.js.org/?locale=zh_CN 阅读git官网的Book, 顺手记录一下,方便查阅https://git-scm.com/book/en/v2 git 基础命令git config/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 你可以传递 --global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。 你可以传递 --local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)配置用户: git config --global user.name “username”git config --global user.eamil “email”当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。(–local 相当于上述的local)配置编辑器 git config --global core.editor.vim当 Git 需要你输入信息时会调用它。 如果未配置,Git 会使用操作系统默认的文本编辑器。查看配置信息 查看当前仓库的配置: git config --listgit config < key >git helpgit help < verb >git < verb > --helpman git-< verb >git init该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。 ...

June 20, 2020 · 4 min · jiezi

一文带你彻底学会-Git-Hooks-配置

你好,我是小桔,是一个没有感情的代码崽。 今天给大家介绍一下 Git Hooks,相信 Git 大家都在用吧,Git 除了用作版本控制,还有许多高级功能,Git Hooks 就是其中之一。 本文环境: Git 版本:2.27.0Husky 版本:4.2.5Node.js 版本:12.16.2前言做过前端的同学对 Hook 这个东西应该很了解吧,后端也是有 Hook 这种概念的,比如 Java 的@PostConstruct,也是一种 Hook 的体现。简单来说,Hook 就是在执行某个事件之前或之后进行一些其他额外的操作。 举个栗子,张三现在要吃饭,那么吃饭就是一个事件,吃饭前和吃饭后就可以称为两个钩子。现在你想让张三在吃饭前洗下手,那么我们就可以在吃饭前这个钩子这里,设置一个洗手的动作。张三在每次吃饭前,都会检查一下这个钩子,有什么要做的,都会照做。这样,就实现了我们的需求。 Git 也是如此,在 Git 中也有许多的事件(commit、push 等等),每个事件也是对应了有不同的钩子的(如 commit 前,commit 后),那么我们就可以在这些钩子这里配置一些自己需要执行的操作来实现各种各样的需求。 使用真实场景可能初次了解 Git Hooks 的同学会有一些疑问:这个东西到底能干嘛?我以前没用过它不也一样好好的吗?我干嘛要用它? 其实这说得很对,任何技术都是有需求采用,没有需求就别去硬塞,永远记住:技术为业务服务。但是这并不妨碍你先去了解它,毕竟,只有你先知道了这项技术能解决什么样的问题,日后当你遇到相应的问题时,你才知道该用什么技术去解决。 这里我给出一个真实的场景,是我们团队在开发 Lin UI 的时候遇到的: 我们的 Git 仓库中包含了编译后的代码,所以每次修改了源码,都需要运行一下编译命令,然后把源码和编译后的代码一起提交到 Git 仓库,这个流程没什么问题。但是,人脑不是电脑,总会有疏忽的时候,经常会出现这样一种情况:修改了源码,却忘记了运行编译命令,最后只把源码提交到了 Git 仓库,导致线上仓库的源码和编译产物不一致、 这个问题虽然不是特别严重,但老是出现也总归不好。所以我们就想了一个办法,不再手动编译,把编译任务交给 CI 去做,这样就不存在这样的问题。 但事情总是没那么顺利,因为我们在本地开发调试的时候是需要编译代码的,所以就会生成一部分编译代码,在使用 Git 时,我们经常会使用git add .命令,会把所有修改了的代码都提交到仓库,这显示是不行的。因为现在我们已经把编译交给 CI 去做了,并且为了 Code Review 方便,编译代码不应该再提交到仓库了。如果每次手动去把编译代码去除,又非常麻烦,那该怎么办呢? 这种情况,就可以使用 Git Hooks 帮我们在每次提交前自动把编译代码去掉了。 ...

June 18, 2020 · 2 min · jiezi

git知识全梳理

环境准备1、git 安装安装:官网下载:https://git-scm.com/download下载完直接下一步、下一步安装,无注意点 检查是否安装成功win+r打开运行工具,输入 cmd。键入以下命令 Git --version出现版本号表示成功安装,或者鼠标右击空白处查看,出现下图框选选项表示安装成功 git的使用方式:通过小乌龟进行管理,推荐使用小乌龟,更加便捷直接使用命令行方式一:客户端操作安装tortoise git(乌龟git)官网下载,选择与自己电脑对应的包,如果有需要也可以下载对应的语言包下载地址我选的版本是2.10.0.0目前最新稳定版先安装主程序,在安装语言包,不停的next就ok 安装好之后,去设置语言为中文 使用git本地新建一个文件夹,例如test点击文件夹,右键→Git在这里创建版本库,跳出如下图,不要勾选直接确认    之后test文件夹里会出现一个隐藏的文件夹.git  到现在为止我们分别在托管中心和本地做了准备,  接下来我们就要将他们关联起来 继续右键test文件夹→tortoisegit→设置  跳出如下设置窗口,把你在托管中心注册的用户名和邮箱填上去  然后选择远端  将我们刚才复制的URL填到URL和推送URL上,然后点击添加/保存  之后乌龟git会获取远端信息,直接确认。  这是需要输入你在托管中心注册的用户名和密码    完成后如下       提交文件 通过TortoiseGit提交文件,也就是右键菜单功能 Git 提交(C)—> "master"... // 相当于命令行~: git add 文件,这里只是将文件提交到本地版本库,并非提交到远程版本服务器 如下图: 这里提交之后,其他客户端不能获取到你提交的文件,因为你的文件没有更新到远程版本服务器上。 同步到版本服务器 通过TortoiseGit提交文件到版本服务器,也就是右键菜单功能 Git 同步  // 相当于命令行~: git push origin master 如下图: 点击推送即可完成,将文件更新到远程版本服务器上,其他客户端更新之后可以获取到你提交的文件。 方式二:命令行操作常见命令: git config --global user.name "<姓名>" 设置提交者姓名。git config --global user.email "<邮箱>" 设置提交者邮箱。基础操作git init [目录名] 在指定目录创建仓库,如果没有指定目录名将在当前目录创建仓库。git clone <远程仓库地址> [目录名] 从指定地址克隆仓库,若不指定目录名将默认创建与远程同名目录。git add <目录名|文件名> 将文件或目录中已修改的代码添加追暂存区。git commit -m "<注释>" 提交暂存区内容。git status 查看仓库状态比对 diffgit diff 比对当前内容和暂存区内容。git diff HEAD 比对当前内容和最近一次提交。git diff HEAD^ 比对当前内容和倒数第二次提交。git diff HEAD^ HEAD 比对最近两次提交。历史 loggit log [--oneline] [--all] 查看提交历史。git log --oneline 打印为单行log。git log --all 打印所有记录(忽略HEAD的位置)。git log --graph 打印示意图(忽略HEAD的位置)。分支 branchgit branch [分支] 有分支:创建分支,无分支:列出所有分支。git checkout <分支> 切换至分支。git checkout -b <分支> 创建并切换至分支分支。git merge <分支> 将分支与当前分支合并。远程git pull 拉取远程仓库。git push <远程仓库> <分支> 推送至远程仓库。git remote add origin https://xxx.git 新增远程仓库origingit remote set-url origin https://xxx.git 修改远程仓库origingit remote -v 查看仓库常见错误及解决方案1、TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案 ...

June 18, 2020 · 1 min · jiezi

过来人告诉你去工作前最好还是学学Git

前言只有光头才能变强。文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 之前遇到过很多同学私信问我:「三歪,我马上要实习了,我要在实习前学些什么做准备啊?」 三歪在实习之前也同样问过自己当时的部门老大。 如果再给我一次机会,我会先去花点时间去学学Git。 Git我相信大家对它应该不陌生吧?但凡用过GitHub的同学应该多多少少都会了解一下Git 不知道当时大家学Git的时候是看哪个教程的,我看的是廖雪峰老师的Git系列的。 (别看到廖雪峰就以为是广告了啊,哈哈哈哈,这篇纯原创分享) 分享一下三歪的经历刚实习的时候,一直都忙着看各种东西。有一天,我学长说:我看你也学了一些基础了,我们来看看公司的代码吧,看看我们生产环境是怎么做的。 于是我学长丢了一个Git链接给三歪 https://github.com/ZhongFuCheng3y/3y.git那三歪做了什么?三歪去IDEA下把这个Git给Clone下来: 我用Clone完了以后,我学长又补了一句:这个项目不是用master分支的哦,你切换一下分支。 三歪:啥?切换分支?咋整?我忘了。 我学长看了下我,貌似不咋会切换分支,就说:“我来吧”。 于是在命令行终端一顿操作后,对三歪说:“好了” 三歪:“我对Git不是很熟悉,之前一直都是在IDEA上操作的。你们一般用命令行多还是图形界面的多呀?” 我学长:“这没什么,反正工具这东西,学学就行,不是什么大问题。也没必要说很仔细去学它,就工具嘛” 三歪:“嗯” 时间飞逝,又过了一段时间... 三歪被分配了一个需求,于是就需要新建分支去做这个需求了。所有的标准应用线上走的是master分支,公司通过一个发布系统来控制发布版本、以及整套上下线的流程。 于是我要先在发布系统里边新建Git分支: 完了以后,我就在IDEA界面上选择那个被我新建完的分支 但发现我死活找不到...于是我就问我学长:我在发布系统里边新建了分支,为什么在IDEA上找不到啊? 学长:“怎么会呢,我看看”。 找了一会,他问我:“你fetch 过了吗?” 三歪:“啥?” 于是他拿着我的电脑,打开了终端,又以是命令行的方式敲了一顿,问我:“这是不是你新建的分支?“ 三歪点了点头,于是我学长说:”好了,你再看看“。 后来发现,新建完远程分支,如果在IDEA上要能感知到,可以在pull界面上刷新一下,那就能找到了。 也不是说命令行一定会就比界面牛逼,其实IDEA的Git功能也做得挺好的。现在我都是混合使用,一些操作用命令行,一些操作用IDEA快捷键。 我commit和push的时候就喜欢用快捷键。command+k和command +shift+k我就感觉比敲命令要快不少。 这些都是个人习惯的问题,也无对错之分,怎么方便怎么来。 其实也不是所有的系统都会走发布系统的(有标准应用,非标准应用)。如果要自己写一个启动的脚本,一般我们会做些什么?无非就是用Git拉最新的代码,然后用maven打个包,然后启动。 理解Git如果你看过上一篇《三歪给女朋友讲解什么是Git》应该能大概了解什么是Git了。 其实我觉得学Git主要理解工作区 -> 暂存区->仓库 这几个概念。 我们使用Git其实绝大部分的操作都是在本地上完成的,比如说add 和commit。 只有我们push的时候,才会把本地完成好的内容推到远程仓库上 通过上一篇文章我们知道在每个人的本地都有完整的历史版本,所以我们可以在本地就能穿梭到不同的版本,然后将修改之后的代码再重新提交到远程仓库上。 所谓的工作区实际上就是我们真正的的本地目录。 我们在本地添加文件后,需要add到暂存区,文件一旦被add到了暂存区,意味着Git能追踪到这个文件。 当我们修改到一定程度之后,我们会执行一次提交commit,在提交的时候我们会”备注“自己这次的提交修改了什么内容。 一次commit在Git就是一个版本,Git是版本控制的软件,我们可以随意穿梭到任何的版本中,修改代码。 暂存区是这么一个概念呢? 暂存区就像购物车,没到付款的时候你都不确定购物车里的东西全部都是要的。每拿一件商品就付一次款,那麻烦可大了。从宏观上看,Git其实有本地和远程的概念,只是本地又分了工作区、暂存区、本地仓库。再次强调:我们操作几乎都是在本地完成,每个人的本地都会有所有历史版本信息。 我们一般会新建分支去支持每一次的修改。 其实分支这个概念也挺好理解的:我们需要并行开发,同时我们又不关心对方改的是什么内容,改的是什么文件。因此我们需要在自己的专属环境下去修改内容,只要把最终修改完后的内容合并到一个主分支就OK了。 假设三歪做完了,经过校验通过后,把自己的代码merge(合并)到origin/master分支后,然后就发布上线啦。 随后,鸡蛋也做完了,自己的分支校验完了以后,他此时也想把自己的代码合并到origin/master。不料,他改的代码跟三歪改的代码有冲突了(Git不知道选择谁的的代码),那鸡蛋只能手动merge了。 综合来看,我们使用Git大多数的场景就是各自分支开发,然后各自在本地commit(提交),最后汇总到master分支。 所以,我们学Git大多数就学怎么实现分支的增删改、切换以及版本的穿梭。 ...

June 18, 2020 · 1 min · jiezi

Git-看这一篇就够了

上一篇讲 Git 的文章发出来没想到效果特别好,很多读者都要求继续深入的写。 那今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。 本文的结构如下: 作者和开发原由Git 的数据模型常用命令资源推荐作者和开发原由Talk is cheap. Show me the code.这句话就出自 Linux 和 Git 的作者 Linus Torvalds。 原本 Linux 内核的版本控制系统是用的 BitKeeper,然而 2005 年,BitMover 公司不再让 Linux 开发团队免费使用了。。 Linus 一听,不给用了?老子自己写! 于是,大佬十天之内完成了 Git 的第一个版本。 所以 Git 是一个免费的、开源的版本控制系统。 版本控制系统版本控制其实每个人都用过,那些年修改过的简历: 小齐简历 2012 版 小齐简历 2013 版 小齐简历 2014 版 小齐简历 2015 版 小齐简历 2016 版 小齐简历 2017 版 小齐简历 2018 版 小齐简历 2019 版 ...还有那些年打死都不再改的毕业论文: ...

June 17, 2020 · 3 min · jiezi

活用-Git-撤销提升工程质量文末招聘

0x001 概述一个优秀的前端工程师,必先是个优秀的工程师;一个优秀的工程师,要为自己写的每一行代码负责,要为自己提交的每一个 commit 负责。话虽这么说,但是不想写一篇十分大而全的文章,就想写一些小东西。 0x002 撤销 git add我们知道,要提交一个 commit,必须要先 add,那如果把一些不想要 add 的东西 add 进去了,该咋办?下面提供几个场景和解决方案: 场景1:添加某个误创建文件,这个文件是不想要的环境:误创建了一个 new.txt,并使用 add$ echo new > new.txt$ git add .$ git statusOn branch masterChanges to be committed: (use "git restore --staged <file>..." to unstage) new file: new.txt # ????解决方案:直接删除就好了$ rm new.txt$ git add .$ git statusOn branch masternothing to commit, working tree clean # ????场景 2:新建了一个组件,但是不希望在这次 commit 中一起提交环境:创建了一个 Product 组件,但是这个组件不在当前使用,本次的修改只应该包含一个 index.js$ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: Product/index.css # ???? 多余 new file: Product/index.js # ???? 多余 new file: index.js解决方案 1:使用git rm移除,-r表示文件夹递归,--cache表示从index移除,working tree还保留着$ git rm -r --cache Product/rm 'Product/index.css'rm 'Product/index.js'$ git statusOn branch masterChanges to be committed: (use "git restore --staged <file>..." to unstage) new file: index.js # ???? index 只剩下一个文件了Untracked files: (use "git add <file>..." to include in what will be committed) Product/ # ????但是 working tree 还有$ git commit -m 'feat: index'\[master 3bf1398\] feat: index 1 file changed, 1 insertion(+) create mode 100644 index.js解决方案 2:使用git stash将Product组件先暂存,提交index.js,再放出Product暂存Product$ git stash -- ProductSaved working directory and index state WIP on master: b426e7e feat: initial$ git statusOn branch masterChanges to be committed: (use "git restore --staged <file>..." to unstage) new file: index.js # ???? 只剩下一个文件了提交 index.js$ git commit -m 'feat: index'\[master 3bf1398\] feat: index 1 file changed, 1 insertion(+) create mode 100644 index.js取出 stash 中的Product$ git stash popOn branch masterChanges to be committed: (use "git restore --staged <file>..." to unstage) new file: Product/index.css # ???? 又拿出来了 new file: Product/index.js # ???? 又拿出来了Dropped refs/stash@{0} (28675d4accc329da3e54b0a839967471f21c7102)作为独立commit提交$ git commit -m "feat: product"\[master de42d60\] feat: product 2 files changed, 2 insertions(+) create mode 100644 Product/index.css create mode 100644 Product/index.js0x003 撤销不想要的修改场景1:修改了某个文件,但是又不想要其中一些或者全部环境$ git statusOn branch masterChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: Product/index.js # ???? 不想要 modified: index.js # ???? 不想要解决方案1:git stash,然后就不用管它了,适用于全部抛弃或者部分$ git stash -- Product/index.jsSaved working directory and index state WIP on master: de42d60 feat: product$ git statusOn branch masterChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: index.js # ???? 只剩下这个了no changes added to commit (use "git add" and/or "git commit -a")解决方案2:git reset,适用于当前全部修改都不要了$ git reset --hard HEADHEAD is now at de42d60 feat: product$ git statusOn branch masternothing to commit, working tree clean # ???? 全没了解决方案3:git checkout,适用于部分抛弃$ git checkout -- Product/index.js$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: index.js # ???? 只剩下这个了 no changes added to commit (use "git add" and/or "git commit -a")0x004 撤销/修改 git commit场景1:commit 已经提交,但是 commit message 有错误场景展示$ git add .$ git commit -m 'feat: 错误的 message'\[master ed31f58\] feat: 错误的 message # ???? 2 files changed, 2 insertions(+), 2 deletions(-)解决方案:git commit --amend$ git commit --amend -m 'feat: 正确的 message'\[master 325e290\] feat: 正确的 message # ???? Date: Tue May 26 12:39:07 2020 +0800 2 files changed, 2 insertions(+), 2 deletions(-)场景2:commit 已经提交,但是有文件遗漏了场景展示: ...

June 13, 2020 · 7 min · jiezi

10分钟白嫖我的常用的在线工具网站清单

大家好,我是 Guide 哥,一个三观比主角还正的技术人。 简单整理了一下自己日常经常使用的工具网站,分享给小伙伴们!其他推荐阅读: 完结撒花!JavaGuide面试突击版来啦!「Java面试题精华集」Java基础知识篇(2020最新版)附PDF版 !【Java后端面试经历】我和阿里面试官的“又”一次“邂逅”(附问题详解)1.奶牛快传:用户体验更好的网盘工具。https://cowtransfer.com/ 最近开始使用的一款网盘工具,和百度网盘类似,不过没有下载速度的限制,并且可以支持自定义分享文件的下载次数(需要开会员)。 还有一点让我觉得比较舒服的是,你给别人分享文件,别人无需登录即可直接下载。 就传输速度和体验感来说,奶牛快传真的没话说。缺点也比较明显,免费用户的容量容量只有 5 g并且单次传输上限是 2g,所以,可能需要付费才能更好的使用。 2.docsmall:压缩工具https://docsmall.com/ 我经常用来压缩图片、GIF、PDF,你们平时看到我放的 Gif 图片都是在这里压缩过一波的。 并且,还支持PDF合并和分割。不得不说这个网站做的简直不要太美观,体验感和好感 Max!!! 3.创客贴:平面设计作图神器https://www.chuangkit.com/ 我的公众号首页封面图就是通过这个网站制作的。通过这个网站你可以制作好看的海报、简历、新媒体文章的首页图等等,这个网站甚至还有很多免费且好看的 PPT插件,简直是神器。 4.Dimmy.club:手机电脑等设备的展示模型https://dimmy.club/ 可以让你的图片放在电脑、手机、ipad等模型中展示,大大提升了图片的档次。 5.BrowserFrame:浏览器展示模型https://browserframe.com/ 正如你们所看到的,本文所有的图片都是他通过这个网站在线转换的,相比直接展示要更加美观一些,节省了很多自己手动调整图片的时间。 6.Flourish:数据可视化https://flourish.studio/ 通过这个网站,你可以快速地把表格数据转换为各种各样好看的图表,并且还支持动态可视化。 7.PDF派:20个免费好用的PDF在线工具https://www.pdfpai.com/ PDF在线工具挺多的,PDF派是我最喜欢的一个,功能强大稳定。 8.小码短连接:简单易用的渠道短链接统计工具https://xiaomark.com/ 非常好用的长链接转短链接工具,能够让链接看起来更简洁。并且,转换为短链接之后,还能在后台监测访问数据,如访问次数、访问人数。 9.Kapwing:一个用于创建图像,视频和GIF的协作平台https://www.kapwing.com/ 神器网站!强烈推荐! Kapwing 是一个在线视频编辑网站,集成了很多在线小工具,当有视频编辑的需求手头却没有什么趁手的小工具的话,不妨用来应应急。网站并没有复杂的操作界面,已经把常见的需求做成了单独的小功能,即使没有视频编辑经验的小白,也能三秒上手。 10.removebg:抠图神器https://www.remove.bg/zh 抠图神器,绝对的神器! 11.今日热榜:你关心的热点https://tophub.today/ 今日热榜提供各站热榜聚合:微信、今日头条、百度、知乎、V2EX、微博、贴吧、豆瓣、天涯、虎扑、Github、抖音...。追踪全网热点、简单高效阅读。 12.Apkpure:安卓安装包下载https://apkpure.com/cn/ 因为我的手机无法正常访问 Google Store,所以,很多安装包我都是通过这个网站来下载的。 13.crx4chrome:下载Chrome浏览器插件https://www.crx4chrome.com/ 如果你无法访问谷歌商店的话,可以通过这个网站来下载你想要的Chrome浏览器插件,毕竟没有插件的 Chrome浏览器 ,失去了很大一项乐趣。 14.ProcessOn:在线绘图https://www.processon.com/ 画图工具,支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等。 15.draw.io:又一个画图工具https://www.draw.io/ ...

June 10, 2020 · 1 min · jiezi

利用-Git-钩子提交时交互修改版本号

前端项目在 git 提交时,往往会遗忘更新项目根目录的 package.json 文件的 version,通常不修改也不会问题,但对于强迫症来说,不能忍!咱要改掉它...... 编写一个简单的 node 脚本 check-version.js先安装几个依赖包 yarn add inquirer chalk child_process -D // /scripts/check-version.jsconst inquirer = require('inquirer')const chalk = require('chalk')const { exec } = require('child_process')const { name: projectName, version: versionCurrent } = require('../package')const regVersion = /^[1-9]{1}\d*\.\d+\.\d+$/ // 示例: 1.0.0// const regVersion = /^\d+\.\d+\.\d+$/ // 示例: 0.0.1 / 1.0.1// const regVersion = /^\d+\.\d+\.\d+(-beta.?\d*)?$/ // 示例: 1.0.3 / 0.0.1-beta / 1.0.0-beta.3console.log('\n')// 确认 package.json 版本号inquirer .prompt([ { type: 'input', name: 'version', message: `请确认 ${projectName}/package.json/version 版本号(当前:${versionCurrent}),还需要保持 plugin/config.ts 文件中的版本号一致:\n`, default: versionCurrent, validate(version) { // 校验版本号的格式 if (!regVersion.test(version)) { console.log(chalk.yellow('输入的版本号无效,请检查格式(示例:1.0.0、2.3.2)')) return false } return true }, }, ]) .then(({ version: versionNew }) => { if (versionNew !== versionCurrent) { // 更新 package.json version,更新时不自动生成 tag command(`npm --no-git-tag-version version ${versionNew}`, {}, (error, stdout, stderr) => { if (!error) { console.log( chalk.green( `\n${projectName} 版本号(项目根目录下的 package.json/version)更新成功,version: ${versionNew} !`, ), ) command( `git add package.json && git commit -m 'ci(package.json): 更新项目版本号为:${versionNew}'`, ) console.log(`\n`) process.exit(0) } else { console.log(chalk.yellow(`\n更新版本号(${versionNew})失败了~\n`)) process.exit(1) } }) } else { console.log(chalk.green(`\n本次版本号未做修改,version: ${versionNew} !\n`)) } })function command(cmd, options, callback) { console.log('\n') console.log(chalk.cyan(cmd.toString())) return exec(cmd, { ...options }, callback)}配置 Git 钩子先安装 husky,用于管理 git 钩子,当然,使用原生的也可以。 ...

June 10, 2020 · 1 min · jiezi

工具分享-gitextras

https://github.com/tj/git-extras 有时候想测试些东西,本地改起来比较快,但是要部署到服务器上才能验证,通过 git 的话得反复改反复提交到 gitlab,导致提交历史乱七八糟,这个时候就可以用 git scp 快速复制文件: git extras 里的 git scp 很好用 比如我代码部署在 deploy@server1.com:/data/deploy/project1 git remote add cc0 deploy@server1.com:/data/deploy/project1把本地没有提交的更改复制到指定服务器上,方便我们快速验证 git scp cc0 把当前目录下相比 origin/master 有更改的文件复制到指定服务器上 git scp cc0 origin/master底层其实就是用 rsync 把修改过的文件复制过去。

June 7, 2020 · 1 min · jiezi

在自己的服务器搭建Git服务器

环境和工具: Server:CentOS 7.2Client:Window 10Tools:Git,Ssh1.服务端安装Git yum install git -y配置git用户名和邮箱 git config --global user.name "user"git config --global user.email "user@example.com"liunx添加git用户 adduser git切换到git用户,进行ssh配置,在目录/home/git查看是否存在.ssh目录,如果没有则新建.ssh目录,并新建文件authorized_keys(之后用来存储客户端的ssh公钥id_rsa.pub,一行一个) mkdir .sshcd .sshtouch authorized_keys2.客户端安装git,并生成ssh公钥客户端下载安装 git一直默认安装之后,在鼠标右键面板会有git-bash-here,点击进入git-bash,也要先设置git用户名和邮箱,然后进入当前用户目录,查看是否已经配置ssh,之后生成ssh公钥和私钥 cd ~/.sshssh-keygen -t rsa cat id_rsa.pub(这里ssh-keygen -t rsa之后要按3下回车键,因为是提示是否有设置密码,如果设置了,之后要使用git都需要输入密码,所以这里就直接回车键,设置密码为空,之后会在当前文件夹.ssh生成公钥id_rsa.pub和私钥id_rsa,然后打开公钥文件复制里面的内容,要把它粘贴在服务器上的authorized_keys) 3.服务端设置authorized_keys登录服务器,切换为git用户,并进入~/home/git/.ssh文件夹,修改authorized_keys文件,把之前复制的id_rsa.pub中的内容粘贴上,之后修改authorized_keys文件权限,之后再开放git,.ssh文件夹权限(开放权限这里很重要,不然clone等操作之后都会提示要输入密码,如果提示需要输入密码的,ssh公钥配置这里肯定错了) su gitcd /home/git/.sshvim authorized_keyschmod 700 authorized_keyscd /homechmod 700 gitcd gitchmod 700 .ssh=========================================================== 设置完了之后就可以在客户端使用git了我们先服务器上新建一个空仓库 cd /mywebmkdir gitExamplecd gitExamplegit init 接着在客户端输入git clone git@serverAddress:/repoPath就可以了 参考:git官方文档

June 6, 2020 · 1 min · jiezi

Git简单使用

git安装包下载: 链接:https://pan.baidu.com/s/18B8W... 提取码:ykvf 一、git基础模型 Workspace:工作区,就是你看到的目录文件Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息Repository:本地仓库,就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本Remote:远程仓库,托管代码的服务器二、文件4种状态 Unmodify: 未修改, 即与版本库中的文件快照内容与文件夹中完全一致. 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件Untracked: 未跟踪状态, 一般为新建的文件,不在版本控制内. 可通过git add 状态变为Staged.Modified: 已修改状态, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态Staged: 暂存状态. 执行git commit则同步到本地仓库, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态三、git仓库拷贝 1.在当前目录新建一个Git代码库 > git init2.克隆远程仓库 > git clone [-b branch] [--depth 1] 远程仓库地址-b branch:指定需要克隆的分支--depth 1:depth用于指定克隆深度,为1即表示只克隆最近一次commit. 3.相关设置 > git config --list #查看git相关配置> #设置提交的用户名和邮箱信息 --global:全局配置> git config [--global] user.name 'github用户名'> git config [--global] user.email '邮箱'> #设置保存账号密码,这样只是第一次提交需要输入账号密码> git config --local credential.helper store四、git常见操作 1.本地文件上传至远程仓库 ...

June 6, 2020 · 1 min · jiezi

DinamicX-详解如何让盲人也能在线购物

简介: 目前中国有 1700 多万视障人士,在互联网发达的今天,他们无法像大部分人一样享受到互联网带来的便利,比如用手机网购。不过我们可以通过技术来改善这一现状,最大程度地让他们的生活更加便捷。本文分享手淘在使用 DinamicX 支持无障碍上的技术方案,并给出了相关示例,希望对移动端开发者有所启发。(文末福利:Git 快速上手公开课) 什么是无障碍?无障碍范围很广,一般是指在发展过程中没有阻碍,活动能够顺利进行。比如给腿脚不便的人在一些公共场合比如火车站、机场、商场等地方设置无障碍电梯,无障碍厕所,或者给听觉障碍的人提供助听器等等。 换句话说:为失能人士提供与非失能人士同等机会。这里所说的失能根据具体形式和严重程度各不相同,但主要可以分为四种:认知、视觉、听觉,以及活动能力。 当然失能也分为两种永久性失能和情境性失能。 永久性失能 视觉障碍、听觉障碍、坐轮椅或者行动不便等肢体障碍。 情境性失能 开车的时候试图用手机:汽车晃动导致情境性的视觉障碍、肢体障碍、注意力障碍。开会时聊天软件发来语音:查看消息发出声音会影响周围同事(聊天软件提供语音转文字的功能便是无障碍的一种)。出国旅游语言不通:情境性的口头沟通障碍。买东西时拎着大包小包:情境性的肢体障碍。无障碍的新定义:确保每个用户意图都被理解。 某种程度而言,信息无障碍是智能产品交互设计中针对特殊人群的一个功能,它可以让人们更加平等地享用产品在硬件和软件上的各项功能。 DinamiX 对无障碍的支持本文接下去讲的 DinamicX 对无障碍的支持主要是信息无障碍,一般是针对视觉障碍的人群。通过技术手段,帮助视障人群更好地感受世界的美好,让用户在使用 app 的时候能够顺畅的获取信息、利用信息。 手淘基础核心链路手淘首页、详情、购物车、下单、订单、订单列表、我的淘宝都属于手淘核心链路,目前上述页面 UI 都是使用 DinamicX 作为渲染引擎来绘制。 DinamicX SDK 作为支撑手淘基础核心链路重要的一环,对无障碍的支持责无旁贷。 关于 DinamicXDinamicX 的定位是一个提供三端统一能力的客户端动态化解决方案,为无线基础链路上的高性能和高可用提供基础保障。我们希望通过社区化运营不断丰富 DinamicX 的能力和内容,提高渲染性能和稳定性,将 DinamicX 打造成一个集团内的客户端动态化体系的标准化方案。 动态模板解决方案核心技术:一个包含模板的下载、加载、解析、渲染的引擎,帮你动态生成 View。 DinamicX 对无障碍的支持主要分为两部分: SDK 本身对无障碍的跨平台支持模板开发平台进行卡口校验作为一个跨平台统一的动态化解决方案,势必要抹平端与端的差异,以及降低业务方(模板开发者)想支持无障碍的认知成本,我们团队全体成员包括 Android 开发、iOS 开发以及测试同学讨论了很久,确保两端统一的情况下,勾勒出统一无障碍行为。 技术方案系统原生的无障碍iOS 系统原生的无障碍 原生 iOS 的几种逻辑: View 设置了 isAccessibilityElement=YES,无论是否设置了 accesibilityLabel,所有它的子节点,都不可获得焦点。UILabel 的 isAccessibilityElement 属性默认是 NO,但只要主动地设置过值,就算设置的是 NO,也无法在父容器下自动读出。如果需要父容器获得焦点后自动读取出里面所有 UILabel 的文字,需要 isAccessibilityElement = NO,并且 accessibilityElementsHidden = NO。Label 的 isAccessibilityElement 必须保持原始默认值,不能设置任何值。如果父节点嵌套,并且所有父节点的 accessibilityElement 都设置为 off,会自动将这个父节点所有的子节点的 TextView 的 accessibilityLabel 顺序读出,这意味着所有自动阅读的文字最终都在根节点上被读出。系统无障碍 API: ...

June 5, 2020 · 2 min · jiezi

一分钟玩转-Git

今天又有新来的小朋友问我关于 Git 的用法,我发现还是有蛮多新人不会用的,或者用不好的。其实想想自己刚工作时也是倒腾不清楚这些参数和用法,而且总怕出错,慢慢的多看文档、用得多了就熟悉了,今天简单跟大家分享几点。 必知的 add & commit首先我们要清楚在本地的三种状态: 好吧我把命令已经写上去了。 本地改完了代码,就用 git add 文件名/文件夹/多个也可提交到缓存区,这里如果文件改动的比较多,但又不是每个都需要提交,我会设置 git ignore file,就表示这些文件不要提交,比如在 build project 的时候会自动生成的那些文件等等。 然后再 git commit -m "comment"才会到本地库。一般后面都会跟个 -m 加句 comment,简单说下改了啥,像我们公司大家默认也会把 Jira链接附上,这样就知道这个改动对应哪个任务。 那如果想再改,再重新 git add 即可,但是 commit 这句需要改成 git commit --amend这样就还是一条 git log 信息。 Loggit log 可以让我们查看提交过的日志,这个主要是因为如果需要对版本进行前进 or 后退的(下一个 reset),就需要用到编号。 直接 run git log的话就会显示一大坨信息,从近到远显示每次 commit 的 comment 还有作者、日期等信息,比如大概长这个样子: commit 5abcd17dggs9s0a7a91nfsagd8ay76875afs7d6Author: Xiaoqi<xiaoqi@163.com>Date: xxx xxx xxx改了 Test 文件commit 后面的这个编号,是每次历史记录的一个索引。 这样打印的 log 太多,更简洁的打印方式是: ...

June 5, 2020 · 1 min · jiezi

github打不开的问题

一、确定github网站的ip 打开网址:http://github.com.ipaddress.com/ 192.30.253.112 github.com 192.30.253.113 github.com 二、确定域名ip 打开网址:http://github.global.ssl.fastly.net.ipaddress.com/ 或者是 151.101.185.194 github.global.ssl.fastly.net 151.101.13.194 github.global.ssl.fastly.net 三、确定静态资源ip 打开网址:http://assets-cdn.github.com.ipaddress.com/ 151.101.12.133 assets-cdn.github.com 151.101.184.133 assets-cdn.github.com 四、修改hosts文件 192.30.253.112 Build software better, together 192.30.253.113 Build software better, together 151.101.185.194 github.global.ssl.fastly.net151.101.13.194 github.global.ssl.fastly.net151.101.12.133 assets-cdn.github.com151.101.184.133 assets-cdn.github.com附:https://www.ipaddress.com/ 此网站可以查询网址的ip

June 4, 2020 · 1 min · jiezi

学习一线互联网公司git的工作流让你面试不再尴尬

本文转载自: 望风塔Git虽然是一个好工具,但是想要用好却不容易。网上有很多教你如何使用git命令的教程,但是很少有人教你怎么管理你项目的分支(git工作流)。 假设给你一个超大项目,你怎么去修复线上bug,怎么去保证分支始终是干净可用,怎么保证项目的代码稳定性呢? 我们探究出了一套管理方法,你学了就是属于你的经验了。 管理工具首先,我们不会使用禅道之类的工具记录bug和需求,而是使用github中的issue功能。因为bug和需求是和分支有关联的,如果使用第三方工具(禅道),那么将和分支脱节,难以做到统一的管理。当然你也可以选择使用gitea和gogs之类的工具,和github的功能是一样的。本文以gitea为例来讲解。 分支的分类首先我们将分支分为固定的3个分支: test测试分支,刚刚开发完的功能或者修复的bug,等待测试人员测试。 master预发布分支,包含通过测试的新功能或bug修复,随时都可以发布。 prod正式分支,和生产环境跑的代码一致。 两个动态分支,开发新功能的分支名称以“new_”开头,修复bug的分支名称以“fix_”开头。动态分支用完即可删除。 建立(tag)标签对于issue和pr来说,我们都需要贴对应的tag(标签),来标识对应的状态。一般来说我们会建立如下17个标签: 一级bug二级bug三级bug无效bug重复bug不修复无法重现一级需求二级需求疑问已解决确认解决已实现确认实现解决失败代码优化没关联PR人员的划分在我们的整个git分支管理方法中分为4个角色 测试人员:测试开发人员写的代码开发人员:写代码,实现新功能或者修复bug产品经理:提需求研发组长:代码审查,合并代码具体的流程与对应角色因为每个角色做的事情都不一样,所以我按照角色和动作划分了一下。 动作:新需求角色:产品经理创建issue,打需求(一级需求)标签,指派给研发组长。研发组长,指派给相应的开发人员,标记里程碑。角色:开发人员通过指派人,和“需求”标签来搜索新需求。基于master新建新需求分支,编写代码实现新需求。代码编写完成之后,将代码合并到test分支。提pr到gitea上找到相应的issue,然后将issue和提的pr关联起来,将issue标记为“已实现”。并将测试需求指派给测试人员。角色:测试人员通过指派人,和“已实现”标签来搜索新需求,测试新的需求是否如期实现。如果有bug,新增issue来记录这个bug。并且将bugissue关联到需求issue。如果新需求没有bug或者所有关联的bug都修复完毕,将issue标记为“确认实现”,且将这个需求关联的pr也标记为“确认实现”动作:修复bug角色:测试人员创建issue,打bug标签,指派给相关的开发人员等待开发人员修改bug。通过指派人和“已解决”标签,找到要复测的bug,进行复测。如果bug修复成功,则标记为“确认解决”,并删除“已解决”标签,且将关联的pr标记为“确认解决”。如果bug未修复成功,则标记为“解决失败”,并删除“已解决”标签。然后指派给开发人员。角色:开发人员通过指派人,和bug标签或者“解决失败”标签来搜索未解决的bug。基于master新建修复bug分支,编写代码修改bug。代码编写完成之后,将代码合并到test分支。提PR(注意,如果是新需求产生的bug,不需要重新提pr,直接使用新需求的那个pr)到gitea上找到相应的issue,将issue标记为“已解决”,然后将issue和提的pr关联起来。并将bug指派给测试人员。动作:合并代码角色:研发组长查看PR标题包含“确认解决”或者“确认实现”的标签。查看PR是否关联了issue,没关联issue的不可合并。(因为你不知道有没有bug)查看关联了PR的issue是否标记为“确认解决”或者“确认实现”,如果是则可以合并。先关闭掉所有相关的issue检查代码是否符合规范。(code review)关闭关联的issue之后,合并PR。动作:发布新版本到生产环境角色:研发组长查看所有待合并的PR是否都已经合并完成。将master的分支直接合并到prod。发布prod分支动作:临时修复生产环境bug角色:开发人员基于master分支新建bug修复分支。代码编写完毕后将bug修复分支合并到test分支。测试通过后,提一个PR。角色:研发组长code reivew之后,再合并PR将这个PR涉及到的提交cherry pick到prod分支发布prod分支

June 1, 2020 · 1 min · jiezi

你好Hacktoberfest

原文链接:你好,Hacktoberfest! 什么是 Hacktoberfest?这个词由 Hack、October、Festival 组成,是一项提倡开源精神的活动。今年,也就是 2018年由 DigtialOcean、Github 和 Twilio 三家公司合作举办。活动内容为:只要你在 10月1日至 10月31日之间为任何 GitHub 仓库发起了 5 个PR(Pull Request)就可以获得一件免费的纪念 T-Shirt 和一些贴纸。 在 Hacktoberfest 报名打开 Hacktoberfest 后,点击中间的 Start Hacking 报名。 然后点击 Register Now 注册。 注意:必须使用在这里注册用到的 GitHub 帐号发起 PR 才会计入总数。 之后会要求你填写姓名和邮箱,这是用来和你联系来发送奖品的,请务必认真填写。 什么样的 PR 才计入?任何在 GitHub 上的公开仓库发起的,Hacktoberfest 标签可有可无。只要发起了就计入,就算没被合并。没有被标记成垃圾邮件、无关紧要或无效。在10月1日至10月31日之间发起的,无论你在什么时候注册。也就是说注册之前的发起的也算。想要跟踪进度和查看具体计入情况可以在注册后在主页点击 Check Your Progress。 如何开始发起 PR根据 Hacktoberfest 的价值观和你对开源活动的了解程度可以大致分为以下三类: 如果你是专业的开源专家,或者编程水平高超,你可以提交一些有质量的有挑战性的 PR。例如:优化某个算法、编写新的功能。如果你是刚刚开始了解开源的新手,你可以做一些你力所能及的工作。例如:翻译文档、修改错字。以上两类都可以通过在你熟悉的仓库发起 PR 或者利用 GitHub 的高级搜索查找带有 hacktoberfest 标签的 Issues。查找带有 hacktoberfest 标签的开放的 Issues。 ...

May 31, 2020 · 1 min · jiezi

如何使用-GitHub-Flow-给开源项目贡献代码

原文链接:如何使用 GitHub Flow 给开源项目贡献代码 GitHub 是什么? GitHub 是通过 Git 进行版本控制的软件源代码托管服务。截止到 2015年,GitHub 已经有超过 2800 万注册用户和 7900 万代码库。事实上已经成为了世界上最大的代码存放网站和开源社区。所以,如果你想要给开源项目贡献代码或者翻译文档,学会如何使用 GitHub 来正确地贡献代码是必不可少的。 准备工作关于 git 的基本操作。GitHub 网站的账户。将示例仓库 https://github.com/golang/go 记录在某处。这里我们假设你的用户名为 yourname。复制(fork)一个仓库的副本打开示例仓库的 URL,在右上角点击 Fork 按钮后,开始等待完成。 等待的时间视仓库的大小而定。 在 fork 完成后,你应该可以在你自己的 GitHub 仓库看到同名的一个项目。 它的 URL 应该为:https://github.com/yourname/go。 发现了吗?这里 URL 的变化只不过是将原本的 golang 替换成了 yourname。 这个 fork 后的项目是你自己可以随意修改而不会影响到真正的 go 项目的。下面我们把它称之为副本仓库。 在没有示例仓库的 push 权限的情况下,想要做出的修改能够反映到示例仓库,也就是原始仓库,还需要做接下来的一些操作。 克隆(clone)副本仓库到本地把你 fork 后的副本仓库 clone 到本地。 git clone https://github.com/yourname/go go # clone 到本地的 go 目录使用分支(branch)进入仓库目录后,可以使用如下命令创建并切换到 test 分支。 ...

May 31, 2020 · 2 min · jiezi

一篇文章全面掌握Git

版本控制版本控制就是记录项目文件的历史变化。它为我们查阅日志,回退,协作等方面提供了有力的帮助。 版本控制一般分为集中化版本控制和分布式版本控制。 集中化主要的版本数据都保存服务端。 分布式版本数据分散在多端。 GitGit属于分布式版本控制,也是现在比较流行的一种版本管理工具。 Git项目有三个区块:工作区 / 暂存区 / 版本库 工作区存放从版本库提取出来的文件,供我们编辑修改;暂存区保存了下一次要提交的目录信息;版本库保存项目版本元数据和Objects数据,后文会详解。 Git工作流程 # 下载<<==== clone # 上传====>> add ====>> commit ====>> push# 更新<<==== merge|rebase <<===== fetch区分 Pull vs Fetch我们将一个更新操作拆分为数据更新+合并处理两部分,这样来看 fetch 只是进行数据更新。而pull 其实是 ( fetch + (merge|rebase) )组合操作,它执行数据更新同时执行合并处理。pull 默认是fetch+merge 组合 ,也可以通过参数 --rebase 指定为 fetch + rebase。 区分Merge vs Rebase合并处理是Git很重要的一块知识。两个命令在工作中也经常使用,区分它们对我们很有用。 场景如下 项目有一个mywork分支。C2时间点我和小明各自下载项目进行功能开发,小明效率比较高,先推送了C3 C4 到远程仓库。我本地仓库现在有C5 C6两个提交,要推送到远程仓库,需先同步远程仓库版本。 如果通过 fetch + merge 方式,Git会将远程最新(C4)和本地最新(C6)进行合并并产生一个新的(C7)。 冲突处理步骤 git merge # 发生冲突会出现冲突标记“<<<<<<< HEAD40=======41>>>>>>> 41”# 手动处理冲突git add .git commit -m 'fix conflict'git push origin HEAD ...

May 31, 2020 · 3 min · jiezi

Git-命令的正确使用姿势

常用git操作添加所有变更文件到暂存区 git add .添加所有变更文件并提交到本地仓库 git commit -am [commit-message]新建分支并切换到新分支 git checkout -b [branch-name]删除本地分支 git branch -d [branch-name]删除远程分支 git push origin --delete [branch-name]重置暂存区与工作区,与上一次commit保持一致 git reset --hard重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 git reset [commitId]1、git工作空间 Workspace: 工作区Index/Stage:暂存区Repository: 仓库区(或本地仓库)Remote:远程仓库2、新建代码仓库# 在当前目录新建一个Git代码库$ git init # 新建一个目录,将其初始化为Git代码库$ git init [project-name] # 下载一个项目和它的整个代码历史$ git clone [url]3、配置git# 显示当前的Git配置$ git config --list # 编辑Git配置文件$ git config -e [--global] # 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]"4、增加/删除文件# 添加指定文件到暂存区$ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录$ git add [dir] # 添加当前目录的所有文件到暂存区$ git add .5、代码提交# 提交暂存区到仓库区$ 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] ...6、分支# 列出所有本地分支$ git branch # 列出所有远程分支$ git branch -r # 列出所有本地分支和远程分支$ git branch -a # 新建一个分支,但依然停留在当前分支$ git branch [branch-name] # 新建一个分支,并切换到该分支$ git checkout -b [branch] # 新建一个分支,与指定的远程分支建立追踪关系$ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区$ git checkout [branch-name] # 切换到上一个分支$ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间$ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支$ git merge [branch] # 删除分支$ git branch -d [branch-name] # 删除远程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]7、标签# 列出所有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] --tags8、查看信息# 显示有变更的文件$ git status # 显示当前分支的版本历史$ git log # 显示commit历史,以及每次commit发生变更的文件$ git log --stat # 搜索提交历史,根据关键词$ git log -S [keyword] # 显示指定文件相关的每一次diff$ git log -p [file] # 显示过去5次提交$ git log -5 --pretty --oneline # 显示暂存区和工作区的差异$ git diff # 显示暂存区和上一个commit的差异$ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异$ git diff HEAD # 显示两次提交之间的差异$ git diff [first-branch]...[second-branch] # 显示某次提交的元数据和内容变化$ git show [commit] # 显示某次提交发生变化的文件$ git show --name-only [commit] # 显示某次提交时,某个文件的内容$ git show [commit]:[filename] # 显示当前分支的最近几次提交$ git reflog9、远程同步# 下载远程仓库的所有变动$ 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 remote update origin -p10、撤销# 恢复暂存区的指定文件到工作区$ 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] # 暂时将未提交的变化移除,稍后再移入$ git stash$ git stash pop11、Git参考手册http://gitref.justjavac.com/i... ...

May 29, 2020 · 2 min · jiezi

git提交规范

Git Commit (提交)规范与注意事项请先阅读: How to Write a Git Commit MessageCommit messages - Good practicesangular.js 的命名规范怎么样算是一个好的 commit? 一个 commit 应该只包含一种变更逻辑,多个变更逻辑应该拆分多个 commit容易 code review (多个小 commit 比一个大 commit 容易 review)一次变更在 200 行代码内,或是 4 小时内的工作量 (超过则要考虑拆分 commit)提交历史容易阅读,可以理解一个分支是如何完成的将来容易 revert不确定怎么样算是一个合理的 commit? => 问 code reviewer 的建议若是多个 commit 完成同一件任务,则应该考虑合并 (squash/amend)宁愿先拆分成多个 commit,之后再合并 (操作简单);也不要提交一个大 commit,之后再拆分 (操作困难)reviewer 有权力退回并要求重新拆分或是合并 commits。因为大 commit 会非常难以审查。Commit Message 规范 一个好的 commit message 应该一眼就能理解: 操作的目的 (subject)改变的范围或模块 (scope)操作的类型 (type)而这些讯息应该都放在 commit message 的第一行 (header) 中。commit message 允许输入多行讯息,因此详细的内容应该放在后面的 body 和 footer 中。 ...

May 29, 2020 · 2 min · jiezi

git常见命令及问题

常见命令基础配置 配置用户名 git config --global user.name '用户名'配置邮箱 git config --global user.email '邮箱'生成秘钥 ssh-keygen -t rsa -C '邮箱'连接远程仓库 git remote add '仓库地址'查看远程仓库 git remote -v删除远程仓库 git remote rm '仓库名'第一次git pull 报错 fatal: refusing to merge unrelated histories使用 git pull origin master --allow-unrelated-histories 生成秘钥后,没有known_hosts文件 ssh -T git@gitee.com 报错再执行一次 ssh -T git@gitee.com 连接远程仓库 报错443配置代理 git config \--global http.proxy "localhost:1080"

May 28, 2020 · 1 min · jiezi

Mac使用git出现xcrun-error-invalid-active-developer-path

今天使用git clone项目遇到一个问题 ➜ github git clone https://github.com/Easy-MJ/mj-fe-note.gitxcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun解决办法: ➜ github xcode-select --installxcode-select: note: install requested for command line developer tools安装完成后,再次使用git,ok了~

May 27, 2020 · 1 min · jiezi