idea里git向远程仓库push错代码了-怎么回滚

如图中: 红色1处 是我提交错的分支, 而且push到remote仓库了(这个分支可是上线之后才能合并过去的分支, 我记错了以为我的代码已经上线, 结果合过去了, 现在发现了, 后悔~); 红色2处 就是我要回滚过去的原来的master的代码 step1: 拷贝目标revision numberCopy Revision Number复制要回滚过去的 revision number;如图: step2: 调出Reset Head弹窗;项目名上->右击->git->Repository->Reset HEAD...如图: 出来弹框: "Reset Head": step3: Hard方式Reset Head,用拷贝的目标revision number(1).Reset Type 选 "Hard";(2). To Commit 粘贴进去刚才复制的 revision number;(3). 选择 Reset step4: git push -f 强制提交此时,代码回到老的版本, 不能提交, 会冲突; ~但是~可以强制提交过去: git push -f step5: 完事! 检查确认检查:已经是之前的分支版本了: step6: 拿毛巾擦汗, 然后去接一杯水喝~

May 27, 2020 · 1 min · jiezi

git常用命令

git有些命令使用久了,每次重复百度,也没留心去记,这次整理一下平时常用的,留心记一下。 删除远程分支git push origin --delete 要删除的远程分支名 删除本地分支git branch --delete 要删除的本地分支名称--dlelete 也可以简写为—D 初始化仓库git init 更新本地缓存git fetch --prune origin 修改远程仓库地址git remote set-url origin url 新增远程仓库地址git remote add origin url 删除远程仓库地址git remote rm origin url 备份当前工作区的内容,保存到git栈中git stash git栈中获取最近一次stash的内容,恢复工作区的内容git stash pop Head引用指向指定提交,仅移动当前Head指针,不会改变工作区和暂存区的内容git reset --soft Head 版本回退,Head引用指向指定提交,暂存内容和工作内容都会变指定提交时的状态git reset --hard Head

May 27, 2020 · 1 min · jiezi

本地代码上传至github

1.github上操作: 在git上建立好仓库之后,可获取到.git地址,创建过程略,可参考https://blog.csdn.net/cnjy_/a... 2.本地电脑上操作:进入你要上传的文件夹,git init,此时会出现隐藏文件夹.git 接着输入命令:// 将项目添加到仓库 git add . // 将项目提交到仓库 git commit -m "xxx"// 将本地文件夹与github仓库关联 git remote add origin https://github.com/wangqyuan/wqy-data-handle.git// 关联好之后就是讲文件push到github上了git push origin master 注意:如果push报错:error: src refspec master does not match any引起该错误的原因是,目录中没有文件,空目录是不能提交上去的 解决方案:创建一个readme.md文件并提交,就可以push成功了touch READMEgit add READMEgit commit -m 'xxx'git push origin master可参考:https://blog.csdn.net/xl_lx/a...

May 26, 2020 · 1 min · jiezi

介绍repo-sync同步Android源码会拉取远端服务器的哪个分支

查看 repo help sync 命令的帮助说明,该命令的格式如下: Usage: repo sync [<project>...]可以看到,它没有提供参数来指定要同步的远端服务器分支。那么在执行 repo sync 时,它同步的是远端服务器的哪个分支? 实际上,repo sync 默认同步在 repo init 时由 -b 选项指定的分支,这也是 repo 所跟踪的分支。 注意:如果本地的 git 仓库切换过分支,当前分支名和 repo init -b 指定的分支名不一样,那么执行 repo sync 会改变本地分支指向,需要注意到这个分支的变化,避免后续操作错分支。 下面具体举例说明 repo sync 后本地分支的变化,在这个例子一开始,本地当前分支名是 branch_m,这不是 repo init -b 所指定的分支。 1.使用 git branch 命令,打印出当前分支名是 branch_m: $ git branch other_branch_xxx* branch_m2.在当前代码目录下执行 repo sync 命令: $ repo sync .Fetching project platform/packages/apps/Settingspackages/apps/Settings/: leaving branch_m; does not track upstream3.再次执行 git branch 命令,会看到当前处于没有命名的分支下: ...

November 13, 2019 · 1 min · jiezi

git-comit-提交规范

更多文章<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>大致分为三个部分(使用空行分割): 标题行: 必填, 描述主要修改类型和内容主题内容: 描述为什么修改, 做了什么样的修改, 以及开发的思路等等页脚注释: 放 Breaking Changes 或 Closed Issuestype: commit 的类型feat: 新特性fix: 修改问题refactor: 代码重构docs: 文档修改style: 代码格式修改, 注意不是 css 修改test: 测试用例修改chore: 其他修改, 比如构建流程, 依赖管理.scope: commit 影响的范围, 比如: route, component, utils, build...subject: commit 的概述body: commit 具体修改内容, 可以分为多行.footer: 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接.示例fix(修复BUG)如果修复的这个BUG只影响当前修改的文件,可不加范围。如果影响的范围比较大,要加上范围描述。 例如这次 BUG 修复影响到全局,可以加个 global。如果影响的是某个目录或某个功能,可以加上该目录的路径,或者对应的功能名称。 // 示例1fix(global):修复checkbox不能复选的问题// 示例2 下面圆括号里的 common 为通用管理的名称fix(common): 修复字体过小的BUG,将通用管理下所有页面的默认字体大小修改为 14px// 示例3fix: value.length -> values.lengthfeat(添加新功能或新页面)feat: 添加网站主页静态页面这是一个示例,假设对页面内容进行了一些描述。 这里是备注,可以是放BUG链接或者一些重要性的东西。chore(其他修改)chore 的中文翻译为日常事务、例行工作,顾名思义,即不在其他 commit 类型中的修改,都可以用 chore 表示。 ...

November 5, 2019 · 1 min · jiezi

佛系笔记我会用命令来git

佛系笔记系列是不求深究,只求会用的粗暴总结。GIT今天请大家来和我一起背命令~~ 创建在项目的目录下执行git init即可将项目变为git项目。目录下会创建.git文件夹。用来管理项目。 添加文件至仓库提交文件要执行两个动作: git add修改了的文件先用git add <文件名>,把文件添加到仓库。 git commit添加到仓库之后,git commit <文件名>把文件提交到仓库。注意在使用commit时,git commit <文件名> -m "xxx"-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。执行之后会返回显示多少文件改变了。 查看状态git statusgit status命令可以让我们知道目录中文件与仓库中的差别。可以知道什么被修改过了,但还没有准备提交的修改。 git diffgit diff可以看到被修改的文件,具体被修改了哪一行。 查看日志git loggit log可以看到三次提交记录,和对应的版本号。加上--pretty=oneline参数可以让结果更简约。 git refloggit reflog记录了你的每一次命令,包括reset的动作。 指针如果把git的厉害记录看成是一个钟表,我们现在所在的位置就是指针指向的位置。git中的指针是HEAD。用HEAD表示当前版本,也就是最新的提交1094adb...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。 git resetgit给了我们时光倒流的机会。我们可以改名git的HEAD的指向。用git reset可以倒退指针,如回到上一个版本。 git reset --hard HEAD^远程仓库我们电脑本地的目录只存在本地,通过远程仓库(github,gitlab等)可以实现多人(多设备)之间协调修改项目。 git remote可以用git remote把本地项目关联到远程仓库中。 git remote add origin <地址>git push用git push命令,可以把当前分支master推送到远程。对于新建的项目,远程仓库是空的,在第一次push 的时候如果带上-u。不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 git clone如果想要从远程仓库中克隆项目到自己本地中,可以用git clone <地址>,即可。 分支如果把git的记录看成时间线,分支就是从一个点开始分出的平行宇宙。各个分支之间互不影响。在未来的某一点可以让分支合并。 在git中主分支默认叫做master。 git branch git branch <分支名>,创建新分支。git branch 会显示所有分支git branch -d dev 会删除指定分支 ...

November 5, 2019 · 1 min · jiezi

Git基本使用

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

November 5, 2019 · 2 min · jiezi

前端漫谈-一巴掌拍平Git中的各种概念

0x000 导读讲git的文章很多,但是大部分都是一个套路,讲概念,讲命令,太多的概念和命令总是让人有一种稀里糊涂的感觉,讲的很对,但似乎没能讲透,没有醍醐灌顶的感觉,大概是我的悟性差吧。所以这几天一直在做各种git的实验,并且阅读了一些博客、文档、资料,综合下来整理出了这么一篇文章。注意: 本篇文章旨在说明我对git的理解,只是一家之言,聊以分享。本片文章不是一篇命令教程,或者概念说明,需要一定的git使用经验和踩坑经验。为了阅读方便,commitID只保留4位0x001 总结[提前]这是一篇比较乱七八糟的文章,不从传统出发,尝试用自己的思想去理解git这一神奇的工具。以前我觉得git是命运石之门,我们在不同的时间线(分支)上跳跃,所有的事件都必须且只能发生在时间线上。但是现在我觉得git是无限的可能性的集合,一个事件可以引申出无限的可能性。而我们要做的是用工具(branch、tag、reset、rebase、merge....)来组织这些可能性,从而构成一个有序的、向前发展的历史,引导整个历史的发展,构建可以走向未来的工程。 0x002 存档和读档存档 其实吧,版本就是存档,就是游戏中的存档,我们不断的推进项目,完成一个又一个任务,然后中途不断的存档,就形成了版本迭代。而版本多了,自然就需要管理了,自然就有了版本管理系统。 在游戏中,存档可以手动存档,也可以到指定点存档,也可以自动定场景存档。在游戏中,存档之后形成的东西叫做档案,而在git中,叫做commit。我们可以使用git add+git commit完成一个档案的创建,或者说版本的创建。 一个commit拥有许多的属性,比如ID、Message、Date、Author:等等,这些信息都有助于我们了解这个版本,就像游戏中的存档会以关卡名/图片之类的信息来提示你这个存档所代表的进度,比如使用git log可以获取以下信息: commit 4963 (HEAD -> master)Author: **********Date: Thu Jan 10 15:22:12 2019 +0800 版本Hcommit 1a42Author: **********Date: Thu Jan 10 15:25:01 2019 +0800 版本Gcommit 931bAuthor: **********Date: Thu Jan 10 15:24:50 2019 +0800 版本F....读档 既然有存档,那就有读档。游戏中直接选择一个档案就行了,那git中呢?如果有可视化操作工具,那我们直接点击也是可以的,但现在不使用工具,而使用命令行,该如何呢。读取一个存档说白了在git中就是读取一个commit而已,所以我们可以使用git checkout和git reset两个命令来做到,那如何指定版本呢?前面提到的commit属性中的ID可以帮我们实现这个目标。 环境说明:我在仓库中git commit了8个,每个commit都添加了一个从a-h的文件,并在commit信息中添加版本标记使用git checkout切到版本A,可以发现,此时只有文件a $ git checkout 401eNote: checking out '401e'....HEAD is now at 401e1b6 版本A$ lsREADME.md a.txt使用git reset切换到版本G,可以发现,此时有了a-g几个文件了 $ git reset 1a42Unstaged changes after reset:D b.txtD c.txtD d.txtD e.txtD f.txtD g.txt$ git stashSaved working directory and index state WIP on (no branch): 1a4268d 版本Gl$ lsREADME.md a.txt b.txt c.txt d.txt e.txt f.txt g.txt总结:我们通过commit的ID属性配合其他命令来达到了任意读档的目的,可以在各种版本中随意穿梭,快乐的很啊。而读档的姿势其实还有很多,但不外乎是对commit操作方式的不同,在git中,我觉得commit 才是构成整个版本管理的基本栗子。每一个commit都是独立的个体,虽然和其他commit存在着关联,但是依旧是独立的,而我们在commit构成节点序列中来回移动和操作,就可以达到所有对版本管理的目的。0x003 别名系统在上一个章节中,我们已经可以依靠一些命令和commit ID做到在版本中自由的穿梭,但是却带来一个问题,那就是commit ID的记忆难度。commit ID是hash值,尽管git支持只提供前几位就能匹配到hash,并且也提供了commit message来说明commit,但是依旧存在commit的辨识和记忆问题。而这个问题,可以通过别名系统来解决。 ...

November 5, 2019 · 7 min · jiezi

git-push-命令使用实例

在使用 git push 命令推送代码到服务器时,不同的需求会有不同的用法。具体说明一些使用实例如下。 强制覆盖服务器的git log信息当我们使用 git reset 命令回退本地 git log 显示的 commit 信息后,使用 git push 提交改动到远端服务器会报错,打印类似下面的错误信息: 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。此时,如果想强制用本地 git log 的 commit 信息覆盖服务器的 git log,可以使用 git push -f 命令来推送代码到服务器。查看 man git-push 对 -f 选项说明如下: -f, --force Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. This flag disables these checks, and can cause the remote repository to lose commits; use it with care.即,-f 选项可以用本地的 git log 信息强制覆盖服务器的 git log 信息。由于这会导致部分提交log信息丢失,请小心使用,确认这样做的必要性。 ...

November 5, 2019 · 1 min · jiezi

SmartGit

修改界面语言最近升级后,默认显示为中文,将其修改为英文 工具栏的 编辑 => 首选项 => 用户界面英文下是:Edit => Prefernces => User Interface上图: 查看界面out(输出)的详细信息每次操作,都会在out界面输出对应的git命令,如下图: 如果想查看历史操作命令及详细信息,可以查看SmartGit的log信息。 打开log文件,对应的信息如下: 38m43s199 (2019-11-05 10:53:43) [WorkerThread-1] INFO q.exec - Executing #19 [G:xx.git] "D:Program FilesGitcmdgit.exe" fetch --progress --prune --recurse-submodules=no origin

November 5, 2019 · 1 min · jiezi

详解执行-git-pull-时是否打印改动的文件信息

在公司的Android代码目录里面,使用 git pull 命令,发现不会打印发生改变的文件信息。例如不会打印类似下面的信息: Fast-forward res/values-zh-rCN/strings.xml | 5 +++-- res/values/strings.xml | 4 ++-- src/com/android/SoftwarePreferenceController.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-)但是之前公司的 git pull 命令会打印改动的文件信息,现在想要确认出现这种差异的原因。 经过排查,这是因为 git pull 执行的是 git rebase 所引起。 在git仓库目录下执行 git config -l 命令,看到有如下配置: pull.rebase=true这是当前代码目录的git仓库里面自行配置的。使用 git config --global -l 查看没有这个全局配置. 查看 man git-config 命令的说明,pull.rebase=true 表示 git pull 使用 git rebase,而不是使用 git merge: pull.rebase When true, rebase branches on top of the fetched branch, instead of merging the default branch from the default remote when "git pull" is run.再查看 man git-rebase 命令的说明: ...

November 4, 2019 · 2 min · jiezi

git-log-命令用法实例-2

使用 git log 命令查看提交记录时,默认打印commit hash值、作者、提交日期、和提交信息。如果想要查看更多内容,可以提供不同的参数来指定查看的信息。具体实例说明如下。 在git log中显示committer信息git log 命令默认显示的里面只有author,没有committer,类似于下面的信息: $ git logcommit b932a847f5xxxxxAuthor: John <john@xxxx.com>Date: Mon Oct 21 16:18:09 2019 +0800 hello release如果要显示committer的信息,可以使用 --pretty=full 选项。例如下面显示的信息: $ git log --pretty=fullcommit b932a847f5xxxxxAuthor: John <john@xxxx.com>Commit: John <john@xxxx.com> hello release查看 man git-log 对 --pretty 选项说明如下: --pretty[=<format>], --format=<format> Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, email, raw and format:<string>.默认的 medium 格式样式如下: ...

November 3, 2019 · 2 min · jiezi

git-log-命令用法实例-1

使用 git log 命令查看提交记录时,默认打印commit hash值、作者、提交日期、和提交信息。如果想要查看更多内容,可以提供不同的参数来指定查看的信息。具体实例说明如下。 查看提交记录具体的改动执行 git log 命令会打印提交信息,默认不会列出具体的改动内容。可以使用 git log -p 命令来显示具体的改动内容。查看 man git-add 对 -p 选项说明如下: -p, -u, --patch Generate patch (see section on generating patches).即,git log -p 命令默认以patch的形式来显示改动内容,会显示修改前、修改后的对比。 在 git log -p 后面还可以提供 commit hash 值来从指定的 commit 开始查看,但不是只查看这个 commit 的改动。例如,git log -p 595bd27 命令是从 595bd27 这个 commit 开始显示代码修改,继续往下翻页,可以看到后面的 commit 改动。 如果只想查看指定 commit 的改动,可以使用 git show 命令。例如,git show 595bd27 只显示出 595bd27 这个 commit 自身的改动,翻看到最后就结束打印,不会继续往下显示后面 commit 的改动。 ...

November 2, 2019 · 1 min · jiezi

转hexo博客yili主题个性化自定义教程1-借鉴中学习初认yili主题

文章转载于:hexo博客yili主题个性化自定义教程(1) ——借鉴中学习,初认yili主题这个博客跌跌撞撞也弄了好多天了,由于Next主题不知道什么情况,被我玩坏了。所以换了一个主题。大名鼎鼎的yilia主题,崇尚简约优雅,以及极致的性能,符合我的性格。以后很长一段时间都用这个主题啦。接下来来说一下一些yili主题个性化自定义的方法和自己走过的坑。 本教程适用于yilia主题 <!--more--> 前言由于yilia已经不维护了,坑还挺多的,所以下面这些方法都是我试过了才敢拿出来的。如果有错误,请原步骤返回检查错误,或者参考官方教程↓yilia主题github开源地址 本篇收集了全网目前最全的攻略啦,各位凑活着看。这是一个系列,第一步先借鉴一下别人的代码,哈哈哈哈嗝。 如何正确使用yilia主题安装$ git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia 配置修改hexo根目录下的_config.yml : theme: yilia 自定义配置主题配置文件在主目录下的_config.yml,请根据自己需要修改使用。 完整配置例子,可以参考作者的博客 主题配置详细介绍接下来我来说一下主题配置中的基本配置有哪些可以自定义的地方,详细看下面的备注部分代码我会用我自己的配置来讲解具体用法 # Header// 这段代码是左侧栏的相关展示内容,后期可以加上分类,关于等。每个页面后面是它的存放路径menu: 主页: / 随笔: /tags/随笔/# SubNav // 这段代码是左侧栏的相关联系方式图标,后期可以修改图标等。subnav: github: "#" //不需要就改成 "#"这个是github weibo: "#" //微博 rss: "#" //RSS zhihu: "#" //知乎 #qq: "#" //QQ #weixin: "#" //微信 #jianshu: "#" //简书 #douban: "#" //豆瓣 #segmentfault: "#" //思否segmentfault #bilibili: "#" //哔哩哔哩 #acfun: "#" //acfun #mail: "mailto:litten225@qq.com" //比如你想展示邮箱,就把这里的地址改成你自己的邮箱即可。前面的 mailto: 不要去掉 #facebook: "#" //facebook #google: "#" //google #twitter: "#" //twitter #linkedin: "#" //linkedinrss: /atom.xml# 是否需要修改 root 路径# 如果您的网站存放在子目录中,例如 http://yoursite.com/blog,# 请将您的 url 设为 http://yoursite.com/blog 并把 root 设为 /blog/。root: # Content# 文章太长,截断按钮文字excerpt_link: more //这个文字是可以自己修改的,比如我的就改成了展开全文# 文章卡片右下角常驻链接,不需要请设置为false,如果上面改成了展开全文,这个建议改为falseshow_all_link: '展开全文'# 数学公式mathjax: false# 是否在新窗口打开链接open_in_new: false# 打赏# 打赏type设定:0-关闭打赏; 1-文章对应的md文件里有reward:true属性,才有打赏; 2-所有文章均有打赏reward_type: 2# 打赏wordingreward_wording: '谢谢你请我吃糖果' //这个是打赏时候显示的文字,可以修改# 支付宝二维码图片地址,跟你设置头像的方式一样。比如:/assets/img/alipay.jpg ,网络图片直接用 https://xxx.png 即可alipay: # 微信二维码图片地址weixin: # 目录# 目录设定:0-不显示目录; 1-文章对应的md文件里有toc:true属性,才有目录; 2-所有文章均显示目录toc: 1# 根据自己的习惯来设置,如果你的目录标题习惯有标号,置为true即可隐藏hexo重复的序号;否则置为falsetoc_hide_index: true# 目录为空时的提示toc_empty_wording: '目录,不存在的…'# 是否有快速回到顶部的按钮top: true# Miscellaneousbaidu_analytics: '' # 百度分析google_analytics: '' # 谷歌分析favicon: /favicon.png # 站点logo#你的头像urlavatar:#是否开启分享share_jia: true#评论:1、多说;2、网易云跟帖;3、畅言;4、Disqus;5、Gitment#不需要使用某项,直接设置值为false,或注释掉#具体请参考wiki:https://github.com/litten/hexo-theme-yilia/wiki/#1、多说duoshuo: false#2、网易云跟帖wangyiyun: false#3、畅言changyan_appid: falsechangyan_conf: false#4、Disqus 在hexo根目录的config里也有disqus_shortname字段,优先使用yilia的disqus: false#5、Gitmentgitment_owner: false #你的 GitHub IDgitment_repo: '' #存储评论的 repogitment_oauth: client_id: '' #client ID client_secret: '' #client secret# 样式定制 - 一般不需要修改,除非有很强的定制欲望…style: # 左侧栏头像上面的背景颜色 header: '#4d4d4d' # 右滑板块背景 slider: 'linear-gradient(200deg,#a0cfe4,#e8c37e)'# slider的设置slider: # 是否默认展开tags板块 showTags: false# 智能菜单# 如不需要,将该对应项置为false# 比如#smart_menu:# friends: falsesmart_menu: innerArchive: '所有文章' friends: '友链' aboutme: '关于我'friends: 友情链接1: http://localhost:4000/ 友情链接2: http://localhost:4000/ 友情链接3: http://localhost:4000/ 友情链接4: http://localhost:4000/ 友情链接5: http://localhost:4000/ 友情链接6: http://localhost:4000/aboutme: 很惭愧<br><br>只做了一点微小的工作<br>谢谢大家 //这个是出现在 关于我 页面的一句话 <br> 是换行的意思。请照着上面的备注,一条一条修改看看效果,就能大概掌握最基础的主题自定义啦。 ...

November 2, 2019 · 3 min · jiezi

GitFlow规范和指令

前言在利用Git管理团队代码的时候,都会涉及到如何管理分支,如何发布版本的问题。如果能够制定一套统一的规则,就能够有效的保障团队的开发流程和效率。如下流程主要参考自 A successful Git branching model 进行的一个设计。能够确保各个分支的合理使用,以及发布版本的管理。此外,以下介绍的流程没有涉及到Pull Request 相关的操作,为的是能够快速地将每个开发的代码合并到主要分支,如果希望添加 Pull Request 的流程,可以在功能分支合并到开发分支中添加。 流程详细见: 中文:介绍一个成功的 Git 分支模型 英文:A successful Git branching model 主分支(长期分支) master 可执行版本记录分支,上面的每个节点都是发布到线上的一个版本,具体的版本号由tag确定develop 代码开发分支,所有开发辅助分支(短期分支) feature 详细功能分支,每个功能分支应该尽可能的小(最好一天以内),开发完成之后尽快移入仓库中release 测试版本发布分支,同时接收该版本的bugfix,直到稳定之后再发布到master,并合并到develop中。hotfix 紧急修复线上bug分支,直接从master的版本分出,同时最小版本号加1。修复完成后发布一个最新版本,同时合并到develop中。版本发布分支: master可执行版本记录分支,上面的每个节点都是发布到线上的一个版本,具体的版本号由tag确定 命名规范master是一条长期分支,仅有master这个名字。 commit note直接表示merge:Merge branch 'release/v1.0.1' 表示版本升级Bump version to v1.1.1 建议使用第二种,因为不想gitlab, github上的节点并不能看到tag,所有只能通过commit note来进行识别,而第二种可以清楚地表达出版本的变化的意思,而不是第一种的git操作。 注意 代码合并的时候,请务必使用 git merge --no-ff <branch-name> 这样会是分支的节点更加清晰,分支中才不会有无关的commit node,特别是对master分支极为重要。方便对代码的review,可以很清楚地知道这个功能修改了那些内容方便出错的时候进行回退,只需要回退一个节点接口完成代码的回退在代码发生冲突的时候,git会为我们创建一个节点,也就是平时看到的“Merge”信息的节点。但如果被合并的代码超前于目标分支,git就会将所有的节点都合并到目标分支中,而不是生成一个新的节点再合并。这对于master分支简直就是灾难,因为release分支或者hotfix分支必然是超前于master分支的。Tag操作每个tag即表示一个版本,也就是合并一个分支到master都需要打一个tag。 # git tag v1.2.3 #你可以省略对这个tag的说明git tag -a v1.2.3 -m "This is comment" [<commit-id>]git push origin v1.2.3[参考] 廖雪峰的官方网站-创建标签 廖雪峰的官方网站-操作标签 ...

November 2, 2019 · 4 min · jiezi

CentOS使用Yum升级Git到21x新版本

使用yum最多只能安装到1.8,版本太旧了,下载源码手动编译安装?先不说国内下载官网包2kB/s的速度,就是下载下来了编译也麻烦啊,包管理是吃干饭的嘛? 其实只要换个源,重新下载就好了 先卸载旧版 yum remove git添加新源后安装新版 yum install -y https://centos7.iuscommunity.org/ius-release.rpmyum install -y git2u检验 git version 最后附带我的安装过程 root@izwz957qhjacaocedubzjjz /tmp/installGit [20:43:53] > # yum install -y https://centos7.iuscommunity.org/ius-release.rpm已加载插件:fastestmirrorius-release.rpm | 8.2 kB 00:00 正在检查 /var/tmp/yum-root-6VAioA/ius-release.rpm: ius-release-2-1.el7.ius.noarch/var/tmp/yum-root-6VAioA/ius-release.rpm 将被安装正在解决依赖关系--> 正在检查事务---> 软件包 ius-release.noarch.0.2-1.el7.ius 将被 安装--> 正在处理依赖关系 epel-release = 7,它被软件包 ius-release-2-1.el7.ius.noarch 需要Loading mirror speeds from cached hostfile--> 正在检查事务---> 软件包 epel-release.noarch.0.7-12 将被 安装--> 解决依赖关系完成依赖关系解决========================================================== Package 架构 版本 源 大小==========================================================正在安装: ius-release noarch 2-1.el7.ius /ius-release 4.5 k为依赖而安装: epel-release noarch 7-12 epel 15 k事务概要==========================================================安装 1 软件包 (+1 依赖软件包)总计:19 k总下载量:15 k安装大小:29 kDownloading packages:epel-release-7-12.noarch.rpm | 15 kB 00:00 Running transaction checkRunning transaction testTransaction test succeededRunning transaction 正在安装 : epel-release-7-12.noarch 1/2 警告:/etc/yum.repos.d/epel.repo 已建立为 /etc/yum.repos.d/epel.repo.rpmnew 正在安装 : ius-release-2-1.el7.ius.noarch 2/2 验证中 : ius-release-2-1.el7.ius.noarch 1/2 验证中 : epel-release-7-12.noarch 2/2 已安装: ius-release.noarch 0:2-1.el7.ius 作为依赖被安装: epel-release.noarch 0:7-12 完毕! root@izwz957qhjacaocedubzjjz /tmp/installGit [20:44:05] > # yum install -y git2u 已加载插件:fastestmirrorius | 1.3 kB 00:00 ius/x86_64/primary | 129 kB 00:01 Loading mirror speeds from cached hostfileius 538/538正在解决依赖关系--> 正在检查事务---> 软件包 git2u.x86_64.0.2.16.5-1.ius.el7 将被 安装--> 正在处理依赖关系 git2u-perl-Git = 2.16.5-1.ius.el7,它被软件包 git2u-2.16.5-1.ius.el7.x86_64 需要--> 正在处理依赖关系 git2u-core-doc = 2.16.5-1.ius.el7,它被软件包 git2u-2.16.5-1.ius.el7.x86_64 需要--> 正在处理依赖关系 git2u-core = 2.16.5-1.ius.el7,它被软件包 git2u-2.16.5-1.ius.el7.x86_64 需要--> 正在处理依赖关系 perl(Git::I18N),它被软件包 git2u-2.16.5-1.ius.el7.x86_64 需要--> 正在处理依赖关系 perl(Git),它被软件包 git2u-2.16.5-1.ius.el7.x86_64 需要--> 正在处理依赖关系 libsecret-1.so.0()(64bit),它被软件包 git2u-2.16.5-1.ius.el7.x86_64 需要--> 正在检查事务---> 软件包 git2u-core.x86_64.0.2.16.5-1.ius.el7 将被 安装---> 软件包 git2u-core-doc.noarch.0.2.16.5-1.ius.el7 将被 安装---> 软件包 git2u-perl-Git.noarch.0.2.16.5-1.ius.el7 将被 安装---> 软件包 libsecret.x86_64.0.0.18.6-1.el7 将被 安装--> 解决依赖关系完成依赖关系解决========================================================== Package 架构 版本 源 大小==========================================================正在安装: git2u x86_64 2.16.5-1.ius.el7 ius 1.1 M为依赖而安装: git2u-core x86_64 2.16.5-1.ius.el7 ius 5.5 M git2u-core-doc noarch 2.16.5-1.ius.el7 ius 2.4 M git2u-perl-Git noarch 2.16.5-1.ius.el7 ius 68 k libsecret x86_64 0.18.6-1.el7 base 153 k事务概要==========================================================安装 1 软件包 (+4 依赖软件包)总下载量:9.2 M安装大小:42 MDownloading packages:警告:/var/cache/yum/x86_64/7/ius/packages/git2u-2.16.5-1.ius.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 4b274df2: NOKEYgit2u-2.16.5-1.ius.el7.x86_64.rpm 的公钥尚未安装(1/5): git2u-2.16.5-1.ius.el7.x86_64 | 1.1 MB 00:02 (2/5): git2u-core-doc-2.16.5-1.ius.e | 2.4 MB 00:00 (3/5): git2u-core-2.16.5-1.ius.el7.x | 5.5 MB 00:03 (4/5): libsecret-0.18.6-1.el7.x86_64 | 153 kB 00:00 (5/5): git2u-perl-Git-2.16.5-1.ius.e | 68 kB 00:00 ----------------------------------------------------------总计 2.6 MB/s | 9.2 MB 00:03 从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7 检索密钥导入 GPG key 0x4B274DF2: 用户ID : "IUS (7) <dev@ius.io>" 指纹 : c958 7a09 a11f d706 4f0c a0f4 e558 0725 4b27 4df2 软件包 : ius-release-2-1.el7.ius.noarch (installed) 来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7Running transaction checkRunning transaction testTransaction test succeededRunning transaction 正在安装 : git2u-core-2.16.5-1.ius.el7.x86_64 1/5 正在安装 : git2u-core-doc-2.16.5-1.ius.el7.noa 2/5 正在安装 : libsecret-0.18.6-1.el7.x86_64 3/5 正在安装 : git2u-perl-Git-2.16.5-1.ius.el7.noa 4/5 正在安装 : git2u-2.16.5-1.ius.el7.x86_64 5/5 验证中 : git2u-2.16.5-1.ius.el7.x86_64 1/5 验证中 : git2u-core-doc-2.16.5-1.ius.el7.noa 2/5 验证中 : git2u-core-2.16.5-1.ius.el7.x86_64 3/5 验证中 : git2u-perl-Git-2.16.5-1.ius.el7.noa 4/5 验证中 : libsecret-0.18.6-1.el7.x86_64 5/5 已安装: git2u.x86_64 0:2.16.5-1.ius.el7 作为依赖被安装: git2u-core.x86_64 0:2.16.5-1.ius.el7 git2u-core-doc.noarch 0:2.16.5-1.ius.el7 git2u-perl-Git.noarch 0:2.16.5-1.ius.el7 libsecret.x86_64 0:0.18.6-1.el7 完毕! root@izwz957qhjacaocedubzjjz /tmp/installGit [20:44:22] > # git version git version 2.16.5感谢https://www.cnblogs.com/jhxxb/p/10571227.html

October 22, 2019 · 2 min · jiezi

Git-提交的正确姿势Commit-message-编写指南

文章目录 一、Commit message 的作用二、Commit message 的格式2.1 Header2.2 Body2.3 Footer2.4 Revert三、Commitizen四、validate-commit-msg五、生成 Change logGit 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。$ git commit -m "hello world" $ git commit基本上,你写什么都行(这里,这里和这里)。 但是,一般来说,commit message 应该清晰明了,说明本次提交的目的。 目前,社区有多种 Commit message 的写法规范。本文介绍Angular 规范(见上图),这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。 一、Commit message 的作用格式化的Commit message,有几个好处。 (1)提供更多的历史信息,方便快速浏览。 比如,下面的命令显示上次发布后的变动,每个commit占据一行。你只看行首,就知道某次 commit 的目的。 $ git log <last tag> HEAD --pretty=format:%s (2)可以过滤某些commit(比如文档改动),便于快速查找信息。 比如,下面的命令仅仅显示本次发布新增加的功能。 $ git log <last release> HEAD --grep feature(3)可以直接从commit生成Change log。 Change Log 是发布新版本时,用来说明与上一个版本差异的文档,详见后文。 回目录二、Commit message 的格式每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。 ...

October 16, 2019 · 2 min · jiezi

常用-Git-命令

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

October 15, 2019 · 2 min · jiezi

学习笔记1迈进版本管理工具Git的大门

作为一名开发者,除了个人开发能力外,团队协作开发也必不可少。多人协作开发一个软件项目,如何管理团队开发的进度,如何控制软件版本,这些问题的解决该如何解决?那不得不说到---Git 一.Git的简介 Git是一个版本管理工具,它有协同修改、数据备份、版本管理、权限控制、历史记录、分支管理等功能。协同修改:多人并行不悖的修改服务器端的同一个文件。数据备份:不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。版本管理:在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。权限控制:对团队中参与开发的人员进行权限控制。除此之外,可以对团队外开发者贡献的代码进行审核,这是git独有的一个功能历史记录;查看修改人、修改时间、修改内容、日志信息,将本地文件恢复到某一个历史状态,不得不说这个功能太赞了,后面会讲到如何在IDE中使用这个功能。分支管理:允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。Git是由Linux之父---Linus用C语言开发了一个分布式版本控制系统,并将Linux也放到上面托管。Git的官网:https://git-scm.com/,因为Git是由Linus开发的,因此Git的命令与Linux命令全面兼容,这也是Git的一大优势 二.Git的实战 说了这么多的理论,下面结合Git的实际操作来进一步感受Git的魅力吧 1.Git的安装 首先,去Git的官网https://git-scm.com/,下载Git的安装包,并打开安装包,并安装下面步骤安装 以上,就是Git的安装过程,在这里解释下,Git Bash其实就是Git的命令行窗口 2.Git的结构 如上图所示,Git分为四个部分,工作区、暂存区、本地库、远程库从工作区到远程库平时写代码是在工作区(IDE环境下),写完后可以添加到暂存区,暂存区起到了一个临时存储的作用,然后提交到本地库,本地库的代码就会发生变化,最后推送到远程库,经过这一系列的操作后,远程库的代码和工作区的代码就保持一致的从远程库到本地库我们的代码一般托管在远程库里,经常需要进行的操作就是从远程库克隆代码到本地库,然后将本地库的代码导入到IDE环境的工作区那么,平时经常听到github、gitlab和这些有什么联系呢?其实,github和gitlab都是代码托管中心,它们的作用是维护远程库github是处于外网环境下,在它上面创建的远程库是公开的,私密性不好,创建私有的远程库是需要付费的。因此,有些公司会在局域网的环境下免费搭建gitlab,可以保证远程库的私有性·

October 9, 2019 · 1 min · jiezi

新建项目上传到git步骤

1、使用cd命令切换到项目目录,通过git init把它变成Git仓库,再通过git add .把项目添加到仓库; 2、再通过git commit -m "注释内容"把项目提交到仓库"; 3、在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin https://github.com/guyibang/T...(这里为你的git项目的地址); 4、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github)上; 由于新建的远程仓库是空的,所以要加上-u这个参数 5、此时执行第5点命令可能会报如下错误: ! [rejected] master -> master (fetch first)error: failed to push some refs to 'https://github.com/shut-up/re...'hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref. You may want to first integrate the remote changeshint: (e.g., 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details. ...

October 8, 2019 · 1 min · jiezi

使用Vue技术栈手把手从零开发开发旅游网站一

vue-travel 旅游网站 github:writing_hand: 项目介绍该项目是一款实现在线预订旅游度假产品,休闲旅游预订平台,提供国内游、国外游、周边旅游以及旅游攻略等功能的web应用。 项目演示 演示地址 项目功能: 1:用户模块 用户注册(包含ajax方式校验邮箱格式与是否重复) 用户激活(邮件激活) 用户登录 用户退出2:旅游景点模块 景点列表(带分页) 景点详情3:订单模块 确认订单(填写出发日期,人数,出发地等信息) 生成订单(将订单信息保存到数据库) 订单详情展示 订单支付(易宝支付) 扩展功能: 1:用户7天免登录功能(自动登录功能) 2:我的订单列表展示(带分页) 项目初始化在任一个文件里,打开git bash,或者cmd来打开命令行窗口,输入命令vue create vue-travel接下来,进行选择,上下箭头切换选项,空格选中选项。看到一下的最终结果:Vue CLI v3.9.3┌────────────────────────────┐│ Update available: 3.11.0 │└────────────────────────────┘? Please pick a preset: Manually select features? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Stylus? Pick a linter / formatter config: Standard? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)Lint on save? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? In package.json? Save this as a preset for future projects? No我这里选择了Babel, Router, Vuex, CSS Pre-processors(Stylus), Linter,根据自己的需求进行选择安装相应的插件。 ...

October 6, 2019 · 3 min · jiezi

Git-GUI-的基本操作

写在前面的话:这并不是一篇讲解Git原理和命令的文章,本文旨在分享通过鼠标点击GUI界面使用Git实现日常开发的版本管理。尽管仅使用少量的Git命令就能够满足日常版本管理,一上手就展示命令行还让是不少想了解Git的人望而却步。 看完这篇文章,你应该对Git的工作流程有基本的了解,并能够使用Git GUI进行日常开发的版本管理。准备:git 2.19.1远程仓库地址: https://github.com/FrankFrank...完成git配置一、Git GUI基本操作1、版本库初始化 gitpractise文件夹就变成了Git可以管理的仓库,目录下多了一个.git文件夹,此目录是Git用于管理版本库的,不要擅自改动里面的文件,这样会破坏Git仓库。(.git文件夹默认是隐藏的,如果你没有看到它,不要慌。) 在想要初始化的文件夹的空白处右键,选择Git GUI Here,新建版本库时文件夹会自动定位到当前文件夹。2、GUI说明 工作区:列出有改动的文件暂存区:存放将要提交到版本库的文件,工作区中修改完成的文件应将放入暂存区差异区:在工作区/暂存区选择文件会显示出改动前后的具体信息提交的说明:提交时写入改动的相关说明 Rescan:扫描出改动的文件,显示在工作区。GUI并不会实时更新对仓库的修改,需要点击Rescan按钮重新扫描。 Stage Changed:将工作区中所有文件放入暂存区。 Sign off:在提交的说明后面附加上当前git账号的信息。多人协作时方便看到提交的编辑者。 Commit:将暂存区的文件提交到版本库。 Push:推送到远程版本库。 3、新增文件让我们从新增一个文件开始,在gitpractise中新建hello.txt文件,然后点击Rescan,可以看到hello.txt出现在工作区 对提交过的文件的修改是可以撤销的,通过Commit -> Revert Changes4、暂存Commit -> Stage To Commit 这里的操作是将选定的单个文件放入暂存区(快捷键是ctrl+t)。多个文件可以按住shift/ctrl进行选定。暂存全部直接点击Stage Changed 4.1、撤销暂存提交前还想再编辑。Commit -> Unstage From Commit 也可以不撤销暂存,直接编辑,再次暂存,效果是一样的。5、提交 6、版本节点和回滚6.1、 查看版本节点为了演示版本的回滚,我对hello.txt做了修改并提交。此时我们有两个版本。Repository -> Visualize master's history 6.2、回滚,回到第一个版本 reset有三种模式:soft | mixed | hard ,不同的模式对工作区、暂存区和版本库的影响不同,具体如下图: soft:回退版本提交历史,暂存区和工作区不变。 mixed:回退版本提交历史,暂存区文件与该版本一致,工作区不变。 hard:回退版本提交历史,暂存区和工作区文件与该版本一致。 二、分支与合并在版本节点和回滚中,我可以看到,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。 在GIt中,可以以任一分支为原型再创建分支,此时新的分支与原型拥有一致的版本库,对新分支的任何改动都不会影响原型分支,新旧分支开始维护各自的版本。最后,可以通过合并分支,将不同分支的内容结合到一起。 分支让每个人拥有独立的工作空间,而合并能将所有人的工作成果归一,协同工作因此变得简单、高效。 1、创建一个分支Branch -> Create 新建并切换工作仓库至branch1,接下来就可以修改、暂存、提交。跟在master分支的操作是一样的。 分支的切换:Branch -> Checkout ...

October 6, 2019 · 1 min · jiezi

GIT从远程仓库获取最新代码合并到本地分支

git fetch + merge: 获取最新代码到本地,然后手动合并分支 //查看所有版本$ git branch -a//获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])$ git fetch origin master [示例1:获取远端的origin/master分支]$ git fetch origin dev [示例2:获取远端的origin/dev分支]//查看版本差异$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]$ git log -p dev..origin/dev [示例2:查看本地dev与远端origin/dev的版本差异]//合并最新代码到本地分支$ git merge master [示例1:合并本地master到当前分支]$ git merge dev [示例2:合并本地dev到当前分支]//或者合并远程最新代码到本地分支$ git merge origin/master [示例1:合并远端分支origin/master到当前分支]$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]

October 4, 2019 · 1 min · jiezi

git命令使用笔记2

列举使用到的一些git命令。切换到某个分支git checkout 分支名 查看分支git branch -a 分支切换并创建git checkout -b 分支名 提交ID 删除本地分支git branch -d 分支名 删除远程分支git push origin --delete 分支名 推送远程taggit push origin tag名字 本地删除taggit tag -d tag名字 git只合并某一个分支的commit1)只合并一个commit(将分支2的提交id合并到分支1) git checkout 分支1git cherry-pick 分支2提交id2)合并连续的多个commit到指定的分支上(将分支2的范围commit合并到分支1) 为分支2创建一个临时的最后范围commit的分支git checkout -b temp 最后范围commit将tmp分支最开始范围的commit用rebase合并范围commitgit rebase --onto 分支1 最开始范围commit

October 3, 2019 · 1 min · jiezi

局域网搭建git

一、服务器搭建Step1. 创建一个文件夹“**.git”,并共享此文件夹。 Step2. 创建git仓库。 至此,服务器已经配置好了。\\192.168.1.145\****.git 这个目录是共享的目录。也是将来在客户端电脑上要克隆的地址。 二、客户端电脑配置直接使用上面配置的地址“\\192.168.1.145\****.git”克隆代码到本地。

September 19, 2019 · 1 min · jiezi

tech-开源之路-github-PR-走起

date: 2019-09-10 22:25:56title: tech| 开源之路: github PR 走起 想快速提高编程能力, 还不快来 「全球最大同性交友社区」~PR 只需几步github 开源之路, 从 PR 开始, 只需要如下简单的几步: 找到心仪的项目, fork 它 自己的仓库里就有了, clone 它 最新的 master 拉一个分支, 修改代码# 更新 mastergit merge upstream/master# 基于最新的 master 拉出新的分支进行开发git checkout -b feat-xxx# coding# 提交git addgit commitgit push# PR 神器PR 神器参上 github desktop 完成 PR 只需要一步: cmd+r 快捷键 参与 PR参与 PR 使用 cmd+b 快捷键, 切换不同分支, 包括 PR 在 hyperf-cloud/hyperf 主项目上, 使用 github desktop 就可以切换到 PR, 参与到 PR 中 ...

September 11, 2019 · 2 min · jiezi

分布式版本控制之git

git版本控制1.git简介: - 特点:协同修改、数据备份、版本管理(文件系统快照)、权限控制、历史记录、分支管理- 优势:大部分操作本地完成、完整性保证(hash算法)、尽可能添加数据而不是删除或修改数据、分支操作便捷流畅、兼容Linxu命令- git结构:工作区(写代码) > git add > 暂存区(临时存储) > git commit > 本地库(历史版本) > 远程库- git和代码托管中心[维护远程仓库]:局域网环境下-gitlab服务器(自己搭);外网环境-github、码云- 团队协作方式: -- 团队内部协作[git push git clone git push git pull] -- 跨团队协作[fork(复制一份远程库)>clone>push>pull request>审核>merge]2.git命令行: -本地库操作 -- 本地库初始化: --- git init > .git目录:存放本地库相关的文件和子目录,不要删除,尽量不要修改 --- 设置签名:用户名、Email地址(和远程库账号密码没有任务关系) 项目级别/仓库级别:仅在当前本地库有效 git config user.name/user.email 信息保存位置:.git/config 系统级别:登录当前操作系统的范围 git config --global 信息保存位置:~/.gitconfig 级别优先级:就近原则 项目 > 系统 -- 基本操作(shift+ins=paste): --- git help command:查看本地文档帮助 --- git status:查看工作区、暂存区状态 # --- git add :工作区修改 > 暂存区 3 --- git rm --cached:从暂存区撤销文件 --- git commit $file > vim 提示输入提交信息 git commit $file -m "First commit new file:test.txt" # --- git log:查看历史版本信息 commit:hash字符串标识一次历史提交;HEAD指针:指向最新的提交 git log --pretty=oneline 提交信息简洁的显示在一行 git log --oneline git reflog --- git reset --hard $fe8986c:基于索引的回退 git reset --hard HEAD^:只能后退 ^:1 step git reset --hard HEAD~3:只能后退,后退3部 --hard:本地库移动HEAD指针、重置暂存区、重置工作区 --soft:仅仅在本地库移动HEAD指针 --mixed:在本地库移动HEAD指针,重置暂存区 --- git reset --hard [指针位置] 通过历史记录进行版本控制,删除文件并找回;前提是文件存在时的状态提交到了本地库 --- git diff:比较文件差异 git diff [file_name]:工作区和暂存区文件比较 git diff [history_version] [file_name]:工作区和本地库文件比较 git diff HEAD:所有文件的改变 -- 分支管理: --- 版本控制过程中,使用多条线同时推进多个任务 --- 优点:并行推进功能开发,提高效率;某个分支开发失败,不会影响其他分支,删除重写开始即可. --- git branch -v:查看所有分支 --- git branch branch_name:创建分支 --- git checkout branch_name:切换分支 --- 合并分支 1.git checkout [branch_name]:切换到接受修改的分支(master) 2.git merge [branch_name]:执行merge命令,合并分支(修改的分支) 3.解决冲突:多个分支修改同一个文件的同一个地方 冲突的表现:<<<<<HEAD当前分支内容 =====另一分支内容>>>>>>分支名 冲突的解决: 1>编辑文件,删除特殊符号; 2>把文件修改到满意的程度,保存退出; 3>git add [file_name]; 4>git commit -m "log message". [commit不能带文件名] --- 删除分支: 1.git checkout [other branch_name]:切换到别的分支 2.git branch -d [delete branch_name]:删除分支 git branch -D [.....]:强制删除分支 3.git push origin --delete [delete branch_name]:删除远程分支 4.git fetch origin common_branch:common_branch:从公用仓库fetch代码 5.git checkout common_branch:切换分支 -- 远程库操作 --- 创建远程库: 0.本地创建文件夹; 1.网页操作; 2.git remote -v [查看远程库] git remote add origin https://github.com/scott-teng/gitpro.git [新建别名origin=url] 3.git push origin master --- git clone:作用1、完整的把远程库下载到本地;2、创建origin远程地址别名;3、初始化本地库. --- 邀请成员加入团队 --- git push:提交 --- git pull[远程地址/远程分支]=git fetch[remote repository][remote branch] + git merge[remote别名/远程分支名] git fetch:只拉取,不合并; git fetch origin master git checkout origin/master git merge:合并 git merge origin/master --- 解决冲突:非最新,不能推送,必须先拉取;若进入冲突状态,先解决冲突,在推送. --- debug:HEAD detached from XXX 游标脱离问题解决 ---fork:跨团队协作 -- git workflow:集中式、分支、fork --- 分支:master、develop、hotfix、release、feature3.git图形化界面 ...

September 11, 2019 · 2 min · jiezi

持续集成及自动化部署之Jenkins

持续集成及自动化部署工具持续部署[CD]**仅仅单元测试还不够,各个模块必须能够在服务器上运行;**关注点在于项目功能(各个模块)部署至服务器后可以运行,为测试环节或最终用户使用做好准备;持续集成[CI]**经常性、频繁的把所有模块集成在一起进行测试[集成测试],有问题尽早发现;**关注点在于尽早发现项目整体运行问题,尽早解决;持续交付[CD]**用小版本不断进行快速迭代,不断收集用户反馈信息,用最快的速度改进优化;[大版本/release]**关注点在于研发团队的最新代码能够尽快让最终用户体验到;总体目标**好处: ***1.降低风险; ***2.减少重复过程[如编译、测试、打包等固定流程] - 自动化流程; ***3.任何时间、任何地点生成 "可部署的软件"; ***4.增强项目的可见性<1>有效决策;<2>注意到趋势; ***5.建立团队对开发产品的信心;Jenkins<open> | Hudson<Oracle>** 前提知识:Linux基本命令|vim编辑器|Maven项目构建管理|Github|SVN** 可整合Github或Subversion** 人工部署** 自动化部署 *** 搭建持续集成环境:可以把构建、部署自动化,减轻工作量 > deploy web container插件 + > *** dev > git repository > 钩子程序 > jenkins > [GIT插件]> code >打包> war包>部署>Tomcat server > [Maven插件] > + >Jenkins:### Jenkins + SVN: ** 要点: *** 创建虚拟机安装Linux系统:vm1-svn,vm2-jenkins,vm3-application(tomcat); *** 版本控制子系统(SVN): - subversion服务器; - 项目对应版本库; - 版本库中钩子程序; -- linux curl命令:-X:指定请求方式;-v:显示响应结果;-u:携带用户名/密码;-H:携带请求消息头信息; *** 持续集成子系统 - JDK; - Tomcat; - Maven; - Jenkins: -- 主体程序; -- svn插件; -- maven插件; -- Deploy to Web Container插件; ***应用发布子系统 - JDK; - Tomcat;### Jenkins + Github: **要点: *** Jenkins需要部署到外网,因Github无法无法访问内网地址; - 安装Jenkins; *** Jenkins所在主机需要安装GIT,git从GitHub上clone代码; - echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc # >>追加 - source /etc/bashrc # 使文件生效 *** Jenkins需要指定git程序位置,和指定jdk、maven程序位置类似; - 配置git; *** 在GitHub上使用每个repository的webhook方式远程触发Jenkins构建; - GitHub配置webhook[repository>settings>webhook>add webhook>远程触发的身份验证令牌] *** 在Jenkins内关闭“防止跨站请求伪造”; - 全局安全配置 > CSRF Protection > 取消勾选;

September 11, 2019 · 1 min · jiezi

分享一个git-缩写脚本

分享一个git 缩写脚本git 简写命令,加入linux,mac别名使用方法: ./gsh [命令名] [参数,可选] set 设置用户名和邮箱, 1:名称, 2:邮箱init 设置git 简洁命令gst: 代码变化状态,git statusgd: 查看当前代码改动变化, git diff, git diff 分支1 分支2gam: [gam 备注] 代码提交本地仓库: git commit -am "备注"gpu: [gpu 远程分支名] 与远程仓库关联: git push -u origin 分支名gp: [gp]推送到远程仓库: git pushgl: [gl]拉取远程仓库代码:git pullgb: [gb 新分支名]创建并切换新分支:git checkout -b 新分支名gm: [gm 分支名]合并分支: git merge 分支名gcm: [gcm 目标分支名]切换分支,并更新,再合并: git checkout 分支名B && git pull && git merge 分支名Agsave 保存临时修改文件, git stash savegpop 恢复临时修改的文件,git stash popglg 查看git日志.git log ...

September 10, 2019 · 5 min · jiezi

基础环境搭建

前提:macOS工欲善其事必先利其器 node下载安装git配置:命令行下git config --global user.name xxxgit config --global user.email xxxgit config --global push.default simplegit config --global core.quotepath falsegit config --global core.editor "vim"vscode Github账号ssh

September 8, 2019 · 1 min · jiezi

git学习笔记

学习廖雪峰老师博客,一些关于git的笔记。如有记录错误,望能不吝赐教。 1.git诞生git是linus为了linux进行版本控制而自己用c写的分布式版本控制系统,在21世纪初,有cvs、svn这些免费的版本控制系统,这些集中式版本控制系统不仅速度慢,而且需要联网才能使用;还有一些商用的版本控制系统,比如linus后来选择的BitKeeper。 2.集中式vs分布式集中式: 版本库是存放在中央服务器的,干活前,要先从中央服务器取得最新的版本,结束后,还要把自己的活推送给中央服务器。集中式版本控制系统还需要联网才可以进行作业,所以网速慢的话,工作前后等待的时间就极其耗时。分布式: 分布式根本没有”中央服务器“的概念,每台电脑都是一个完整的版本库,这样工作就不需要联网了,版本库在自己的电脑上。工作的时候,只需要把各自的文件互相推送给对方就行了。与集中式相比,分布式更加安全。即使有一个人电脑坏掉了也没关系,因为每个人的电脑都有完整的版本库,可以从别人电脑里复制。但如果集中式版本控制系统的中央服务器坏掉了,那大家什么都不能做分布式通常也将一台电脑充当”中央服务器“来进行方便电脑与电脑直接的信息推送,但是即使这台充当”中央服务器“的电脑坏了也没关系,因为每个人的电脑都有完整的版本库,只是信息互相推送比较麻烦,需要在同一局域网,两台电脑间才能互相访问。3.安装git 在linux上安装git$ git The program 'git' is currently not installed. You can install it by typing: sudo apt-get install git 输入git看有没有安装sudo apt-get install git 如果没有,据说通过它就可以直接安装 在Mac OS X上安装git一个通过homebrew (http://brew.sh/)一个是通过Xcode:选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了 在Windows上安装git在git官网直接下载安装程序,国内镜像( https://github.com/waylau/git...)开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!安装完成后,还需要最后一步设置,在命令行输入:$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com" 4.创建版本库 版本库又名仓库,英文:repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被git管理起来,每个文件的修改、删除,git都能跟踪。所有的版本控制系统都只能跟踪文本文件的改动,比如TXT文件、网页、程序代码等等,而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但不能跟踪文件的变化。创建一个版本库 git init先创建一个空目录,mkdir <fileName>再通过git init命令把这个目录变成git可以管理的仓库。其中有一个.git的目录是git用来跟踪管理版本库的(这是一个隐藏目录,用ls -ah命令可以看见)。 把文件添加到版本库第一步,用命令git add告诉git,把文件添加到仓库第二步,用命令git commit告诉git,把文件提交到仓库(git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容))添加文件到Git仓库,分两步: 使用命令git add <file>,注意,可反复多次使用,添加多个文件;使用命令git commit -m <message>,完成5.版本回退 ...

August 28, 2019 · 3 min · jiezi

Git-如何撤回某一次提交

Git 如何撤回某一次提交在 master 分支做了一次 commit ??!!git add index.jsgit commit -m '自以为是在开发分支其实是在master分支的一次提交'之前没有出过这样的错误。就算出现也是直接push了然后再 reset 回滚然后再次 push -f。 如何合适的解决这种情况reset的三个参数--mixed(默认参数)重置位置的同时,只保留Working Tree工作目录的內容,但会将暂存区 和 Repository 中的內容更改和 reset 目标节点一致,所以原节点和Reset节点之间的变更文件,会放入Working Tree工作目录中。 简单来说就是:不删除工作空间改动代码,但是撤销commit,并且撤销git add git reset --mixed HEAD^ 和 git reset HEAD^HEAD^ HEAD~1 HEAD~2 其中 HEAD^ HEAD~1 同为上一个版本, HEAD~2 为上两个版本,也就是两次commit,以此类推如果需要再撤销修改 git checkout index.js--soft重置位置的同时,保留 working Tree 工作目录和暂存区的内容,只让 repository 中的内容和 reset 目标节点保持一致,所以原节点和reset节点之间的变更文件会放入暂存区中。 简单来说就是:不删除工作空间改动代码,撤销commit,不撤销git add --hard重置位置的同时,直接将 working Tree工作目录、 暂存区及 repository 都重置成目标 reset 节点的內容。 简单来说就是:删除工作空间改动代码,撤销commit,撤销git add 这个操作会直接恢复到了上一次的 commit 状态。如果已经push origin在做完上面的操作后 ...

August 21, 2019 · 1 min · jiezi

从零开始实现mvc框架

造个轮子— 从socket到mvc框架1. 缘起为什么要造这个轮子?现在Java领域的mvc框架层出不穷,springmvc,struts2,jfinal;容器方面有tomcat,jetty,undertow。为什么要造这个不成熟的东西出来?我想起我在大二刚接触java web是学的struts2,一大堆xml配置让我看到吐,感觉这掩盖了网络编程的本来面目,为什么不从底层的socket写起,解析http协议,封装请求和响应,我觉得这样更能理解本质。于是我造了第一个轮子作为这个想法的验证MineServer, 这个轮子现在放在github上,但这只是一个玩具项目,我想造的是一个完整的轮子,于是我开了这个坑Boomvc。 2. 我想要什么?我想要一个类似spring boot这种开发体验的web框架,可以用一行代码开启一个http server,没有xml配置,使用注解和简单的properties配置文件,最简的依赖,可以不用遵守servlet规范的web mvc框架。框架要包括3个部分:底层的http server和上层的mvc框架,以及ioc容器。http server可以自己从socket实现,也可以使用netty这样的网络框架实现。 3. 实现目前框架已经基本实现完成,还有很多bug,但是完成了自己的想法,我感到很开心。目前框架实现了一下的功能。 轻量级MVC框架,不依赖任何web容器可以直接运行jar包启动一个web服务支持cookie支持session使用jdk原生的nio api实现http serverRestful风格路由支持模板引擎支持JSON输出可以像spring boot 那样一行代码启动 :) public static void main(String[] args) { Boom.me().start(Main.class, args);}写一个controller @RestPathpublic class TestController { @GetRoute("/") public String hello(){ return "hello world"; }}同时还有过滤器和拦截器 public interface Filter { void init(FilterConfig config); void doFilter(HttpRequest request, HttpResponse response, FilterChain chain) throws Exception; void destroy();}public interface Interceptor { boolean preHandle(HttpRequest request, HttpResponse response); void postHandle(HttpRequest request, HttpResponse response, ModelAndView modelAndView); void afterCompletion(HttpRequest request, HttpResponse response, Exception e);}然后像spring boot那样注册,写一个配置类继承WebMvcConfigurerAdapter ...

August 21, 2019 · 1 min · jiezi

Git常用套路07子模块

前提:父项目和子项目都是独立的项目,在父项目中用git方式引入子项目1、从头开始,初始化子项目看一下父项目: 看一下第一个子项目: 看一下第二个子项目: 首先克隆下父项目:git clone git@gitee.com:blueses/parent.git然后进入父项目根目录,添加第一个子项目:git submodule add git@gitee.com:blueses/son-a.git添加第二个子项目:git submodule add git@gitee.com:blueses/son-b.git初始化git submodule init这时候看父项目中的文件状态: 多了两个子项目的目录文件夹和一个.gitmodules文件,然后直接提交所有git commit -m "add all modules"推送git push更新git submodule udpate --remote只更新一个git submodule udpate --remote son-a在进入网页查看父项目 可以看到每个子项目的目录后面跟了一个@开始的地址这个地址对应子项目添加时候的提交id,点击可以查看当时的文件内容在网页上直接点击子项目文件夹,可以直接进入子项目2、半路加入首先克隆父项目git clone git@gitee.com:blueses/parent.git进入目录,发现子项目的文件夹是空的,初始化git submodule init更新,就能更新到文件,但是文件版本是网页上@的版本git submodule update拉取所有子项目最新内容:git submodule update --remote只更新一个git submodule udpate --remote son-a提交git commit -am "update all"git push

August 20, 2019 · 1 min · jiezi

从搭建到部署快速构建一个私人博客

有时候我们希望有一个受控的博客,来记录或分享一些东西。这个博客的主题内容由你自己来决定,可以是技术分享(编程、汉化分享等),也可以是生活感想。 本文将介绍一个可以迅速搭建并部署的受控博客。阅读本文前,希望你对以下知识点有所了解: git(版本控制) 的基础使用markdown 的使用为什么要搭建博客在线类博客有很多选择,为什么我们需要从零搭建新的博客呢?自己搭建的博客有什么好处吗? 首先,前文所提的 “博客受控”,指的就是能够自己控制的博客的样式、内容等,自己想怎么改就怎么改。 内容受控是指我们知道在线类的博客是受平台限制的,这意味着你所发表的内容是需要受审才能发出的,一些敏感的技术词汇,该篇文章都可能会被和谐或被删除。但在自己搭建博客就没有这样的问题,最起码能保留源文件。 其二,博客的样式是受控的。像著名在线博客CSDN上一些博主的文章确实是有学习参考的价值,但问题的是该站广告是在是太多了,字体和排版的阅读体验并不太好。但如果是自己搭建的博客的话,就可以自己着手优化这些问题。 但博客的搭建还需要我们从各方面考虑利弊。平台类博客会有相应的推荐系统,会对同类型文章相互引流,在 SEO 方面会做得比我们好。 个人搭建的博客,刚起步时的浏览量并不高,但是可以通过SEO等方式来逐步增加自己网站的权重。或者提高博客的质量和干货,读者认为文章有价值,自然会收藏起来形成熟客。 那么博客能写什么东西呢?在日常生活中,有很多知识点是呈碎片状,写博客的本质上就是对自己知识的一种梳理,然后再将这些知识分享出来,可能会有对这方面知识有疑惑,或者想找到解决方案,自身分享出来的东西能给读者做一定的参考。同时这也会是一个良性循环,因为分享的同时,你可能也需要去查询一些资料,同时也可以找到别人遇到过并分享出来的解决方案,是一个相互收益的过程。 我们的基本需求是梳理与分享,那么更应该把注意力放在内容本身,网站布局的排版样式等则是增加读者阅读体验的问题。因此我们可以使用现成的博客框架快速完成这些事。 博客框架有很多种选择,笔者选择的是 Hexo,因为它足够便捷优雅。 startHexo 依赖 Node.js 和 NPM包管理,Node.js 安装后一般会自带NPM。 我们打开终端(Windows PowerShell / cmd.exe、bash、macOS 里的终端),输入以下命令: # 检查 npm 是否安装成功npm -v# 安装 hexo cli,# 如果安装速度过慢的话,可以安装国内的淘宝镜像# 在命令行输入 ` npm install -g cnpm --registry=https://registry.npm.taobao.org`npm install -g hexo-cli# 检查 hexo 是否安装成功,并查看版本hexo -v依赖安装成功后,我们可以在命令行输入 hexo help 查看使用方式(描述是英文,示例部分笔者将其转为中文): Usage: hexo <command> commanddescriptionhelp获取命令的帮助init创建一个新的 Hexo 文件夹version显示版本信息使用 hexo help [command] 可以查看更多的信息, 如: hexo help init# Usage: hexo init [destination]# Description(描述):# 在指定的路径或当前目录中创建一个新的Hexo文件夹.# Arguments(参数):# destination 文件夹路径。 如果未指定,则在当前文件夹中初始化# Options(选项):# --no-clone 复制文件而不是从GitHub克隆# --no-install 跳过 npm 依赖安装(默认初始化会自动装依赖)全局选项: ...

August 20, 2019 · 4 min · jiezi

Git常用套路06标签操作

前提:master分支是我们的正式分支,我们一般会在每次上线后,在master分支上面打一些tag,就是真正的版本号,也叫里程碑1、在本地打标签本地切换的master分支git checkout master当前最后的提交如果是一次升级,要打版本,比如v2.0git tag v2.0如果上一次忘了打了,上一次的版本号是v1.9,上次的提交记录id是 23432,可以这样git tag v1.9 23432可以打标签的时候指定说明信息:git tag -a v2.0 -m "标签说明"git tag -a v1.9 -m "标签说明" 234322、推送本地标签到远程推送一个本地标签到远程git push origin v2.0推送全部未推送标签git push origin --tags3、删除标签删除本地标签git tag -d v2.0删除远程标签git push origin :refs/tags/v2.0

August 19, 2019 · 1 min · jiezi

手把手教你使用Hexo和github搭建免费个人博客网站

俗话说的好“吃水不忘挖井人”,当自己体验过Hexo搭建个人网站后,也来分享一下搭建过程遇到的乐趣以及遇到的坑! 准备工作(电脑配置工具)在搭建Hexo博客之前,首先需要简单在你电脑安装一些工具以及依赖包(具体安装方法相信大家都会,就省略了) 首先要有一个github账号其次安装node.js,npm依赖然后安装git工具(当然电脑自身的cmd工具也是可以用的)创建github网站(username.github.io的github仓库)新建一个名为“你的用户名.github.io”的仓库,比如说,如果你的github用户名是mengnn,那么你就新建"mengnn.github.io"的仓库(必须是你的用户名,其它名称无效),将来你的网站访问地址就是 mengnn.github.io了,对的,就是这么方便。 <!--more--> 当然,一个github账户下只能创建一个以此命名的仓库,用来直接访问。 点击New repository输入Repository name,必需为username.github.io格式。username替换为用户名点击按钮Create repository进入仓库username.github.io,点击setting,找到GitHub Pages模块点击choose a theme选择一个页面主题访问https://username.github.io就可以访问博客网站了为github设置SSH Keys之所以配置SSH Keys,是因为你提交代码肯定要拥有你的github权限才可以,但是直接使用用户名和密码太不安全了,所以我们使用ssh key来解决本地和服务器的连接问题。 首先检查机器上是否已经存在id_rsa.pub文件 cd ~/. ssh #检查本机已存在的ssh密钥如果不存在那就通过命令生成秘钥 ssh-keygen -t rsa -C "邮箱地址"一路回车就好(记得应该是连续3次回车),最终会生成一个文件在用户目录下,打开用户目录,找到.ssh\id_rsa.pub文件,记事本打开并复制里面的内容。 打开你的github页面,点击setting进入---> SSH and GPG keys ---> New SSH key,然后把你复制的内容放到Key中,其中Title中的内容可以随便填一个就ok了,如下图: 添加成功保存就OK了。 测试SSH Key输入下面命令,测试SSH Key是否安装成功 ssh -T git@github.com # 不用改邮箱地址如果提示Are you sure you want to continue connecting (yes/no)?,输入yes,然后会类似于:`Hi mengnn! You've successfully authenticated, but GitHub does not provide shell access.`的字符,说明你安装成功了。 安装Hexo以上准备工作完成后,就要放大招了,对,接下来就是重头戏-本地部署Hexo。 ...

August 19, 2019 · 1 min · jiezi

BlockLang-040-发布啦

BlockLang 源码: https://github.com/blocklanghttps://gitee.com/blocklangBlockLang 演示网址: https://blocklang.com犹如 Java 语言的 Maven,JavaScript 语言的 npmJs,Rust 语言的 Cargo 等依赖管理工具,Block Lang 0.4.0 版本也引入依赖管理功能。 Block Lang 项目依赖的对象是组件市场中注册的组件仓库。在组件市场时,我们称之为“组件仓库”;跟项目关联后,我们称之为“依赖”。 0.4.0 版本引入的依赖管理包括以下四个功能点: 创建依赖配置文件;添加一个依赖;删除一个依赖;更新依赖版本。依赖配置文件Block Lang 项目的依赖统一配置在位于项目根目录下的 DEPENDENCE.json 文件中。 依赖分为三大类: API - 对应 API 仓库开发 - 组件仓库,在开发阶段使用,是 Block Lang 设计器的扩展构建 - 组件仓库,在构建阶段使用,支持为不同的应用程序配置不同的依赖开发 和 构建 下配置的都是组件仓库,而 API 下是这些组件仓库对应的 API 仓库,因此无需直接配置。 开发 和 构建 下的依赖又按应用程序类型分组,如可以为 web 应用和微信小程序分别配置依赖。 用 json 描述的依赖结构大致如下: { "dev": { "web":{ "github/@owner1/repo1": {"git": "https://github.com/owner1/repo1.git", "tag": "v0.1.0"}, "gitee/@owner2/repo2": {"git": "https://gitee.com/owner2/repo2.git", "tag": "v0.1.0"} } }, "build": { "web":{ "default": { "github/@owner3/repo3": {"git": "", "tag": "v0.1.0"} } }, "wechatMiniApp": { "default": { "github/@owner4/repo4": {"git": "", "tag": "v0.1.0"} } } }}注意:build 分组下多了一层,名为 default,这是为后续版本预留的 Profile 功能。 ...

August 19, 2019 · 1 min · jiezi

Git和Gitlab进行版本控制

1、git安装 $ sudo apt-get install git2、创建gitlab项目仓库gitlab官网进行登陆 3、配置Git $ git config --global user.name " "$ git config --global user.email " "4、忽略文件创建一个名为.gitignore的特殊文件,在其中添加不想追踪的文件名。 5、初始化仓库$ git init 6、连接远程仓库$ git remote add origin git@gitlab.com:NARUTOyou/test.git 关联远程仓库之后就可以使用Gitlab进行版本控制,git的操作在这张照片中,我忘记是从哪里下载的了,就是感觉很好用,分享个大家

August 19, 2019 · 1 min · jiezi

小程序输入框文字上移问题-文字弹出输入框

输入框文字上移问题wxlm <input autoFocus="true" bindconfirm="confirmSearch" bindinput="search" class="srch-ipt" confirmType="search" placeholder="搜索内容" placeholderClass="ipt-placeholder" type="text" value=""></input>wxss .srch-ipt { /* prettier-ignore */ height: 32PX; text-align: left; /* prettier-ignore */ font-size: 15PX;}.ipt-placeholder { /* prettier-ignore */ font-size: 15PX; color: #bebebe; text-align: left;}.lxy-nav-bar-search__input { flex: 1;}上方代码可以完美解决ios文字上移问题,对于Android会降低偏移大小,因为此问题是微信原生组件所带来的,所以此套方案较为合适 Android机子文字弹出输入框在 Android 机子会出现文字被键盘弹起顶出 input 框,解决方案为页面设置一个死的高度不要高于 windowHeight,最好是设置一个固定高度或者动态计算高度赋值小程序自定义导航栏(完美适配所有手机)Taro组件gitHub地址详细用法请参考README原生组件gitHub地址详细用法请参考README

August 19, 2019 · 1 min · jiezi

Git常用套路04分支开发

前提:常见的分支策略有两种,一种是所有人在一个开发分支上开发,另一个种是每个需求都会从新拉取一个新分支1、所有人在一个分支上开发这种方式操作流程其实和svn差不太多,简单粗暴本地操作:先 git add 再 git commit远程同步操作:先 git pull再 git push如果是多人协同开发,就会发现每次pull完再push,会多一条merge记录。如果觉得不好看,可以按照如下流程首先 git pull然后 git rebase最后 git push 2、每个需求拉取一个新分支比如oa项目有个新需求101git checkout -b feature-oa-101开发,完成,本地commit后,不push到远程,然后合并:git checkout devgit merge --no-ff -m "merge feature-oa-101 to dev with no-ff" feature-oa-101git push然后可以删除分支:git branch -d feature-oa-101如果没合并前,就确定这个需求肯定不要了,不用合并,直接删除:git branch -D feature-oa-101

August 18, 2019 · 1 min · jiezi

Git常用套路03合并分支

本文前提:本地和远程存在master、test、dev三个分支,并且一一对应,本地dev开发完成后,要合并到test,test测试完成后合并到master1、从dev合并到test正常的场景中,master和test两个分支是禁止普通开发人员直接push的,现在讨论的是具有权限的人员的操作。在开发当中无论是否要合并分支,无论在哪个分支,注意本地分支要在commit以后push到远程,要首先保持同一个分支的一致性。1 首先切换到dev分支,执行commit和push2 有权限的人员在每个分支 git pull 拉取所有代码以后,从dev转到testgit checkout test3 然后从dev合并到testgit merge dev注意:这种合并一般情况下使用的是快进模式(Fast-forward),也就是直接把test指向dev的当前提交,所以合并速度非常快。但这种模式下,删除dev分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。命令如下:git merge --no-ff -m "merge dev to test with no-ff" dev因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。建议开发中都用这种 no-ff 模式4 现在本地dev已经合并到test了,下面把本地test的变化提交到远程(当前在test分支):git push我们在远程服务器上面看一下test分支的网络图: 2、从test合并到master操作流程和前面的差不多:1 git checkout master2 git merge --no-ff -m "merge test to master with no-ff" test3 git push我们在远程服务器上面看一下master分支的网络图: 3、其它情况有时候在远程仓库私服上面禁止了所有人的push操作,那合并分支只能在私服页面上进行,这种操作一般也是由权限高的人进行的不过gitlab在这方面很多老版本都有问题,会出现报错页面,大家可以多试几次。。。

August 18, 2019 · 1 min · jiezi

vuepress搭建静态网站

vuepress搭建静态网站全局安装 npm install -g vuepress 或者 yarn global add vuepress新建一个文件夹 (例如 my-vuepress-test) mkdir my-vuepress-test (新建文件夹)cd my my-vuepress-test (切换至my-vuepress-test文件夹下)npm init -y (-y表示使用默认方式创建package.json)打开自动生成的package.json文件,默认创建的文件如下: { "name": "my-vuepress-test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", }, "author": "", "license": "ISC", "devDependencies": { "vuepress": "^1.0.3" }}然后在scripts属性中输入一下指令 "docs:dev": "vuepress dev docs", (npm脚本语句 启动服务) "docs:build": "vuepress build docs" (npm脚本语句 编译打包输出docs文件夹里面的内容)然后在my-vuepress-test夹中创建docs文件夹,然后在创建README.md文件(编译启动后默认展示文件) //README.md 文件里面 随便输入一些内容 相当于index.html 例如:# Hello VuePress 初次遇见在刚创建的docs文件夹下在创建.vuepress文件夹,在这个文件下在创建config.js文件 ...

August 18, 2019 · 1 min · jiezi

如何在Github上发布自己写的代码给别人使用

在日常开发,我们都会用到别人写的第三方库,那么我们也可以把自己写的代码发布到github给别人使用首先要新建一个人仓库,命名叫goutil,使用public(私有仓库不能被别人见到哦!) 然后clone到本地 git clone https://github.com/startdusk/goutil.git这里我们使用go mod管理go代码依赖,进入到goutil目录下,执行 go mod init github.com/startdusk/goutil # 使用和github.com上的路径做包名新建文件夹hash,这次我们写个常见的md5加密函数:goutil/hash/md5.go package hashimport ( "crypto/md5" "encoding/hex" "errors" "fmt" "io" "os")// get file md5func FileMd5(filename string) (string, error) { file, err := os.Open(filename) if err != nil { return "", errors.New( fmt.Sprintf("md5.go hash.FileMd5 os open error %v", err)) } h := md5.New() _, err = io.Copy(h, file) if err != nil { return "", errors.New(fmt.Sprintf("md5.go hash.FileMd5 io copy error %v", err)) } return hex.EncodeToString(h.Sum(nil)), nil}// get string md5func StringMd5(s string) string { md5 := md5.New() md5.Write([]byte(s)) return hex.EncodeToString(md5.Sum(nil))}下面是测试代码:goutil/hash/md5_test.go ...

August 18, 2019 · 2 min · jiezi

前端包管理Bower入门教程

Bower了解bower是twitter的一个开源项目,使用nodejs开发,用于web包管理。如果越来越多得开源项目都托管在github上,bower只需要将github上项目加上一个配置文件既可以使用bower方式使用安装包。作为包管理,bower能提供添加新web包,更新web包,删除web包,发布web包功能,管理包依赖。web包通常认为由html+css+javascript构成。 环境依赖bower是依赖于 Node.js的,所以安装之前需要Node环境,Node.js官网 安装最新版本,然后命令行中严重是否安装成功 node -v //版本号查询 我的是v10.16.0安装Bowerbower官网 优点:项目依赖安装,可以固定资源文件,支持资源版本升级,可以支持缓存安装等全局安装bower npm install -g bower //如果你觉得npm安装较慢,可以用淘宝镜像cnpm安装安装完成后,查询版本号 bower -v //如果出现对应的版本号说明安装成功Bower 使用创建文件夹(以我的为例,创建了一个空文件夹bowerDemo),然后命令行到该空文件下 cd bowerDemo初始化bower bower init会提示你输入一些基本信息,根据提示按回车或者空格即可,然后会生成一个bower.json文件,用来保存该项目的配置 插件安装接下来你就可以安装插件了,比如安装下载jquery,在根目录先输入下面命令安装 bower install jquery --save安装成功后你就会在跟文件夹里看到一个bower_components文件夹,这也是插件默认的文件夹 你也可以输入命令查询包的信息,输入命令后会出现包的所以版本,然后你就可以更新安装不同的版本 bower info jquery //包的信息bower update //包的更新bower uninstall jquery //包的卸载这就是一个简单的bower的安装以及插件包的下载 当然,这些仅仅是不够的,作为一个前端开发,有时候会写很多html,css,js页面,甚至每次创建新的项目,都要用同样的模板,所以这个时候,就用到bower的注册功能,把自己的包或者插件发布到bower平台,并下载使用。 bower平台发布插件并下载首先打标签(假设你已经把项目模板发布到github上面),在你的本地仓库根目录下运行下面命令 // -a是添加 标签名,一般写版本号, -m为标签添加注释信息git tag -a 1.0.0 -m “version info″// –tags参数表示提交所有tag至服务器端,普通的git push origin master操作不会推送标签到服务器端git push origin --tags一切准备就绪后,开始注册插件 bower register projectName 项目的github地址 eg:bower register fontend https://github.com/mengnn/fontendGet.git这样,你的插件就注册成功了,你就可以在你的项目根目录下下载你的插件(模板),也就不用每次重复的copy bower install fontend --save-dev //fontend是我注册的插件名称运行成功,你就可以看到你的模板下载到你的项目文件夹下面,just so so! ...

August 17, 2019 · 1 min · jiezi

git-submodule子模块

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个 1、添加子模块git submodule add 【URL】【path】其中,url为子模块的路径,path为该子模块存储的目录路径 安装完成后会创建或者修改.gitmodules,新增一个文件路径 .gitmodules内容如下: 2、初始化更新子模块初始化本地配置文件 git submodule init更新子模块 git submodule foreach "git pull origin master"多个子模块都可以更新 3、修改子模块cd rn-app(子模块目录) modified子模块 git commit -am "modified commit" 提交修改内容 git push origin master 提交代码到远程仓库 4、克隆子模块有两种方式克隆子模块: (1)、采用递归参数 --recursive 克隆整个项目 git clone --recursive git@igit.58corp.com:cst-rn/rnSubscribe.git 可以看到只有父项目添加的子模块,在clone时,都会递归的把子模块全部克隆到项目里面 (2)、先clone父项目,在初始化submodule git clone git@igit.58corp.com:cst-rn/rnSubscribe.git cd rnSubscribe git submodule init git submodule update 5、子模块删除git rm --cached 子模块目录 删除子模块缓存rm -rf 子模块目录 删除子模块目录 ...

August 8, 2019 · 1 min · jiezi

带你理解-Git-中的-Merge-和-Rebase

概念Rebase 和 merge 都被设计用来将变更从一个分支整合到另一个分支,但是它们的实现方式却不同。 下面假如我们有如下提交,merge 会将两个分支的代码合并,而 rebase 会将 feature 分支上所有的变更在 master 分支上重新应用一遍: 当你将 feature 分支 rebase 到 master 时,实际上是将 feature 的 base 移动到了 master 分支的终点,所以 rebase 中文叫变基。(想象上图平移了两条线段)merge 则是拿 feature 分支中的结果,合并到 master 分支,这个过程中只有 master 分支改变了,feature 分支保持不变merge 的时候会产生一个新的 commitMerge 的优与劣优点简单易用,易于理解保留原始提交记录和源分支源分支上的提交与其他分支分离,这会方便你浏览并且合并到其他分支保留你的提交历史,保证提交历史在语义上的准确性缺点提交历史 可能会变得很乱,尤其是很多人同时开发与合并分支时使用 git bisect 调试将变得困难Rebase 的优与劣优点代码历史简洁,线性,可读性强相比众多功能分支来说,只有一个分支,管理起来更加方便简洁的 提交记录 让调试和排查更容易缺点feature 分支变成了一些 commit,不利于体现开发时的场景Rebase 不适合与 pull requests 同时工作,因为你看不出来哪里是别人做的变更。重写了历史记录也不利于团队协作 你在使用 rebase 时也应该更加小心在处理 冲突 时需要花费更多的精力,使用 rebase 来合并功能分支,同一个冲突可能需要合并多次。总结如果有几个开发者同时在 feature 分支上开发,就不推荐使用 rebase,因为 rebase 会掩盖真实的提交场景。相对而言,个人开发更适合使用 rebase。如果你想保留完整的历史记录,就应该使用 merge。记住,Merge 保留历史记录,而 Rebase 改写历史记录Rebase 可以用来精简一个复杂的历史记录,通过交互式 rebase,你可以去掉不想要的 commit,合并多个 commit 甚至修改 commit 信息。 ...

August 7, 2019 · 1 min · jiezi

git常用命令分享

1.简写git config --global alias.st 'status' // git stgit config --global alias.cm 'commit' // git cm -m 'msg'git config --global alias.unstage 'reset HEAD' // git unstage fimeNamegit config --global alias.last 'log -1' // git last// 查看历史提交,推荐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 lg2.存储暂时存储// !只能存储已经被track的文件git stash取出最近存储git stash pop3.合并commitgit rebase -i 要合并的两个分支的上一个分支号squash 表示这个 commit 会被合并到前一个commit4.merge另一个分支上指定的文件git checkout --patch 要merge的分支 filePath5.将一个分支指定的commits合并到另一个分支git cherry-pick 62ecb36.回退版本git reset --hard HEAD^ // 回退到上个版本git reset --hard HEAD~n // 回退到n次提交之前git reset --hard commit_id // 退到/进到指定commit版本7.切换并跟踪远程新分支git checkout --track origin/branch_namegit checkout -b localBranch origin/originBranch8.标签操作git tag tagNamegit tag -a tagName -m 'tagMsg'// 将本地标签推到远程git push origin --tags/tagName// 删除本地标签git tag -d tagName// 删除远程标签git push origin :refs/tags/标签名9.如何将已经track的文件加入.gitignoregit rm -r --cached .git add .git commit -m 'update .gitignore'如果还是不行的话在先将想要取消追踪的文件移到项目目录外,并提交,然后提交后再将刚刚移出的文件再移入项目中即可如果是对所有文件都取消跟踪的话,就是 ...

August 7, 2019 · 1 min · jiezi

git远程仓库

前言在平时的开发中我们的代码管理一般都离不开git,在开发中也不可能永远都是开发别人已经上传搭建好的项目;新建本地项目并创建远程项目仓库地址是我们开发中必不可少的;下面我们就来一步步看一下如何实现。 新建首先是要新建项目目录及项目文件,可以是拷贝原有老项目的基础上修改,也可以是直接新建;如:gitTest 新建文件夹:mkdir gitTestcd gitTestcopy原有项目:mv ** gitTestcd gitTest初始化在目录新建完成之后和git的完全没有关系 这就需要我们来把这个目录初始化成git可管理的仓库 git init 完成项目git初始化如果是拷贝的项目会把原有的仓库信息也拷贝过来,这是就不是你需要的新增的地址,此时需要: 删除项目中的原有git仓库的所有依赖信息rm -rf .git再新增git仓库初始化git init在init完成之后在项目的更目录里面会有一个.git的文件夹,他就是永磊跟踪和管理版本库的。 创建远程地址git remote新增 git remote add origin git@igit.58corp.com:fe_ershouche/docs/gitTest.gitorigin:远程库git@igit.58corp.com:fe_ershouche/docs/gitTest.git:仓库具体地址及名称 查看创建的远程仓库 //列出每个远程库的简短名字git remote//显示出对应的克隆地址git remote -v<img src="https://img.58cdn.com.cn/escs...; > 如果报错fatal: remote origin already exists 说明要创建的远程库已被占用 如下:<img src="https://img.58cdn.com.cn/escs...; > git remote 或者 git remote -v 查看origin已存在并且下面已存在具体仓库那么就需要我们删除远程已被占用的remote git remote remove <name> 如上图:git remote remove origin 直接删除origin远程库删除以后就是在重新add就可以了 如下: <img src="https://img.58cdn.com.cn/escs...; >完成上面操作就新建完成了远程仓库地址 代码提交git代码仓库新建完成之后就是本地代码的提交了 git status可以使用git status查看本地的修改git add .直接把本地所有文件又提交git commitgit commit -m "**" 添加本地提交的commit记录git push最后就是把代码push到新增的远程分支git push origin master

August 7, 2019 · 1 min · jiezi

Git中全局忽略设置和gitignore

本文地址:https://segmentfault.com/a/11...转载请注明出处在使用git过程中,希望git忽略某些特殊文件或文件夹,避免提交例如.DS_Store等等。 先来查看一下git状态: 忽略前[root@localhost dongsir]# git status# 位于分支 segmentfault# 尚未暂存以备提交的变更:# (使用 "git add <file>..." 更新要提交的内容)# (使用 "git checkout -- <file>..." 丢弃工作区的改动)## 修改: .gitignore#忽略后[root@localhost dongsir]# git status# 位于分支 segmentfault无文件要提交,干净的工作区项目中忽略提交(局部)如果只是这一个项目中有部分不需要提交的内容,那么直接在项目最外层创建一个.gitignore: touch .gitignore然后将一些不需要提交的匹配规则(一些相对路径或者通配符),一行一个(#为注释): ._*#.DS_Store.DS_Store最后记得将这个文件添加到Git中去,这样其它的小伙伴也就不用再次加一遍啦。 全部忽略提交(全局)创建一个新的文件 vim ~/.gitignore_global加入忽略匹配规则 .*.swp.DS_Store将这个文件设置到git的全局配置项中 git config --global core.excludesfile ~/.gitignore_global完成,希望可以帮助到大家! 开源是一种精神,分享是一种美德。

August 7, 2019 · 1 min · jiezi

为brewgitpip设置代理为brew正确换源终极版

1.如何正确设置HTTP/HTTPS代理设置了brew通过socks5的代理后,会发现pip其实是不支持socks5的,只能通过http/https。 首先获取端口点击状态栏的小火箭HTTP Proxy Preference获取HTTP的端口号(我是1087)将以下内容添加进.bash_profile(bash用户)/.zshrc(zsh用户)并保存#设置HTTP/HTTPS Proxyexport http_proxy="http://127.0.0.1:1087"; export https_proxy="http://127.0.0.1:1087";保存,进入shell,以zsh为例 #更新配置source .zshrc#验证brew updatepip install --upgrade pip2.如何正确为brew换源设置全局代理或者换源都有各自的优缺点,如果你想换源,那么尝试下面的步骤,要注意的是,换源和设置代理只能选其一,不然结果是一样的。 按照一般方法更换中科大源后,执行brew update还是巨慢,后来发现是cask仍然接在github上,所以要把cask一起换了。要注意的是,Caskroom 的 Git 地址在 2018年5月25 日从 https://github.com/caskroom/h... 迁移到了https://github.com/Homebrew/h...。 更换中科大源:# 替换brew.git:cd "$(brew --repo)"git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git# 替换homebrew-core.git:cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git# 替换homebrew-cask.git:cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-caskgit remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git# 替换homebrew-bottles:echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrcsource ~/.bash_profile重置官方源:#重置brew.git:cd "$(brew --repo)"git remote set-url origin https://github.com/Homebrew/brew.git#重置homebrew-core.git:cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"git remote set-url origin https://github.com/Homebrew/homebrew-core.git#重置homebrew-cask.git:cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-caskgit remote set-url origin https://github.com/Homebrew/homebrew-cask#Caskroom 的 Git 地址在 2018年5月25 日从 https://github.com/caskroom/homebrew-cask 迁移到了 https://github.com/Homebrew/homebrew-cask #最后注释掉/.bash_profile里的homebrew-bottles并保存,以bash为例cd ~open .bash_profile#更新.bash_profilesource .bash_profile#验证brew update

July 15, 2019 · 1 min · jiezi

git-笔记

新建代码库在当前目录新建一个Git代码库$ git init 新建一个目录,将其初始化为Git代码库$ git init [project-name] 下载一个项目和它的整个代码历史$ git clone [url] 配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。 显示当前的Git配置$ git config --list 编辑Git配置文件$ git config -e [--global] 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]" 增加、删除文件添加指定文件到暂存区$ git add [file1] [file2] ... 添加指定目录到暂存区,包括子目录$ git add [dir] 添加当前目录的所有文件到暂存区$ git add . 添加每个变化前,都会要求确认对于同一个文件的多处变化,可以实现分次提交$ git add -p 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2] ... 停止追踪指定文件,但该文件会保留在工作区$ git rm --cached [file] 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed] ...

July 14, 2019 · 4 min · jiezi

git的使用

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件,Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。 git初始设置git config --global user.name #设置用户名git config --global user.email #设置邮箱仓库初始化git init添加文件到暂存区git add <files_name>将暂存区文件提交到本地仓库git commit -m '备注信息'查看当前提交代码状态git status将暂存区文件撤回工作区git checkout --<file_name>git checkout . 撤回在暂存区的所有文件查看提交日志git log git log --pretty=online #只显示一行信息回滚git reset --hard HEAD^ #回滚至上一次提交前git reset --hard <md5_values> #指定回滚查看操作日志可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作) git reflog提交至远程仓库git push -u origin <分支名>切换分支git checkout 创建分支git checkout -b从远程分支更新本地代码git pull合并分支git merge <branch_name>查询分支git branch临时区操作git stash #放入临时区git stash list #查看临时区记录列表git stash apply #临时区取回git stash pop #取回并删除暂存git stash drop #删除临时区

July 14, 2019 · 1 min · jiezi

git常用命令分类总结

在工作中经常会用到git,但有时一些比较少见的操作仍然要在网上查询搜索。因而下面将一些常见的操作归纳总结如下: 1、基础类克隆远程分支代码,-b参数为指定分支名称,不指定则拉取master主分支git clone -b beta git@gitlab.weget.com:phpers/weget.gitgit pull 拉取代码git push 提交代码git add .将本地所有变化文件添加到暂存区git commit -m '提交日志' 提交代码 2、分支类以下gary指代自定义创建的分支名,根据实际情况自定义 git branch -a 查看远程所有分支(方便交互开发互相拉取) git remote -vv 查看git 链接信息 git branch gary 创建本地分支 git branch -d gary 删除本地分支 git push origin —delete gary 删除远程分支 git checkout gary 若gary为本地已存在分支,切换到gary分支。若gary存在远程,则在本地自动创建一个绑定到远程的gary的分支,并且切换到gary分支 git fetch origin gary 拉取远程某分支到本地 git merge origin/beta-local 合并本地某分支的代码到当前分支 git branch -vv 查看分支与远程分支的绑定关系 git remote prune origin 清除分支看到的项目中多余的远程分支(gitlab中删除分支,但git branch -a仍然会看到所有分支的问题)参考文章 3、撤销类分以下三种情况: ...

July 14, 2019 · 1 min · jiezi

Git初步理清基本的gitgithub流程

当我初次接触git时,我需要快速学习基本的git工作流,以便快速接收一个开源web项目维护。但是,我很难理解工作流程,因为我不太了解git使用关键点。 fork,clone,pull、branch、保存、测试、add,评论、commit,push(注以上黑体的单词都是git命令的部分),再次测试,讨论以及重复进行这六个步骤,仅仅为更新进网站,就有这样繁琐的不走,是有点很夸张,有点大张旗鼓。所有初学者都可能会迷惑,会烦恼,会骂搞这么复杂搞毛毛。 网上git教程非常多,图文并茂的也不少。虫虫在此不愿意重复论述。我们在此只对典型地git工作流程的做一下描述、对流程各个关键过程和步骤做解释。以此作为一个基础,帮助初学者理解git的意义,帮他们快速上手。 为什么要使用Git? Git是一个分布式版本控制系统(VCS),人们用它来控制文件的变更过程,对每一步的变化做跟踪,必要时候可以撤回,基于此让大家一起协作工作,其他的VCS还包括最初的RCS、CVS,微软的VSS,SVN,BitKeeper等。Git最初是linus开发来用来为linux内核项目管理用的。 Git基于一个宗旨,鼓励大家都参与,基本上任何人都可以提出变更申请(github:Pull request,gitlab:Merge request),但只有少数负责人(owner和开发组)可以接受,从而合并变更。一个人可以同时处理很多项目,为了管理这大量的项目(Repo),Git(工具)和Gitlab 、GitHub(协作网站)可以制作并保存许多版本的项目和其版本过程,每个项目对应不同的权限或用于不同的目的。 例如,例如构建公共项目代码通常在线托管GitHub中。如果想要修改,增加功能,解决bug,甚至是完善一下文档。我们都可以通过github网站上通过fork,在个人项目下创建一个副本,然后对这个副本进行修改,甚至是"蹂躏",但是无论你做什么原始版本都不会有任何的影响,直到你想把你的修改通过Pull request 提交给主项目,并且主项目的管理者接受你的请求。 先决条件: 创建一个GitHub帐户。 GitHub是一个共有项目托管网站,项目所有者保留项目的正式版本,其他人需要修改,先得有github账号,并fork得到项目的在线副本。当然对公开项目而言如果你只想在本地得到一个项目副本的话,只需要通过git clone 项目地址,即可。比如下面是虫虫的github个人页面: 在本地安装Git Git是版本控制工具,帮助我们跟踪项目文件变更。他运行在我们本地电脑上。如果你本地系统是Linux的话,一般会默认安装,如果没有的话,你可以通过发行版的包管理系统安装,比如yum install git。windows版本git工具是由微软开发和维护的git for window(msysgit)和各种git GUI客户端。 当然git的根本还在于git命令行,通过git shell执行各个命令也是最方便最直白的,建议不管你有没有基础,都先从git shell开始,不要对命令产生任何的恐惧,他是你最好的朋友,当你使用任何图形git客户端工具出现问题时候也建议用git shell再试试,往往根据其错误提示最容易找到问题所在。 典型的github工作流程 一旦你安装了git并且创建了GitHub帐户(当然对内部项目你可以使用gitlab 自建git托管网站),那么你的git之旅正式开始。首先找到你感兴趣的项目,fork或者clone复制它。这两个命令的区别是:fork是在github复制一个自己的在线的项目,你拥有完全地权限,可以任意"蹂躏"。clone是在本地复制一份项目,除非你clone的是自己的项目,否则,你只能在本地修改,不能对其的操作push到github远程仓库。而且clone 可以随意clone只要不是在同一目录下多次clone即可。 典型的工作流程和做法是,由于你没有远程仓库的权限,你先在github通过fork,复制自己的一份远程仓库,然后通过clone你自己这个远程副本到本地,进行修改,修改后push到自己的githu远程副本,然后通过github上的Pull request发起请求,这将会把你的修改请求发送到原始的仓库管理者,发出pull request后,github会自动检查冲突,然后通知原始仓库的管理者,有个Pull request,原始仓库管理检查请求,并对变化进行review,然后做出接受或者拒绝你的变更请求。 在线副本(fork) 要开始为项目提供代码,首先需要做一个可以控制的原始项目的在线副本。然后你所有的改变,都可以将其添加到你的在线副本中。然后发起Pull request,发起变化后Githu会自动的将你的在线副本和原始副本进行比较,通知原始项目维护者,由他并决定是否接受你的变更。github的fork操作可以说是git和github变得流行的最重要的功能。鼓励大量用户,不需要加入项目组就可以随时随地的贡献力量。 Git项目文件夹的一般叫"repository"(仓库),简称"repo"。仓库会包含项目的所有源码文件以及git版本信息,Git版本跟踪的文件,git项目文件都位于项目更目录下的.git目录,以及以markdow格式项目说明文档README.md文档。 要创建一个github在线副本,你在原始项目的右上角,点击 "Fork"按钮。 就会会在您的GitHub帐户利用原始仓库的最新版本创建一个在线副本。所有Fork的项目,都会在项目路径下发,有个forked form xxx的原始仓库的链接,比如虫虫这个项目就是fork于perl6/doc的原始仓库。 本地副本(clone) 要对项目进行修改,并对其测试,或者部署一个github项目,你需要的本地clone一个本地副本。在本地副本上,你可以无限制的修改、测试,而无需任何的审批和预先的review。 例如,你要维护一个网站内容,你就可以在本地构建网站副本。然后再本地修改浏览,确保代码完全无误后,再将变化push到远程仓库。你push你的变化后,你们的测试根据你commit(可能关联某个问题或者bug修复),clone一份或者pull一份代码变化到本地,然后测试功能,确保问题解决,或者功能生效。当然这一部分完全可以自动化完成,就是github或者gitlab的CI/CD(持续的集成和发布),虫虫以后会介绍这些内容。 下载到本地的repo的副本称为"clone"。克隆repo与一般的项目下载不一样,除了项目文件本身,clone还会为附带下载仓库的所有版本变化信息。您可以使用git clone url 命令克隆一个仓库,url可以在项目的"clone and down"按钮下找到。生辰八字起名字 注意Url分两种:https和ssh。如果你clone一个别人共有仓库的时候,只能用https形式,否则你没有任何权限通过ssh clone。 你的单独工作环境(branch) git项目通常不同的贡献者将对同一个仓库进行大量的更新。为了实现这种特性,git让你可以在同一个仓库创建许多不同版本,脱离主线版本做修改,这些不同版本,称为"分支"。分支管理是git版本控制的最大优势之一,git分支管理基于指针来实现,所以分支的创建,切换和合并都非常快捷,几乎没有任何资源消耗。每个人都可以使用分支创建一个单独的工作环境,对其做任何的修改操作,不影响其他分支版本,当确保没有任何问题时,再通过分支合并,把变化合并到主线版本上来。所有仓库,都会有一个主版本,叫Master,一般也会创建一个Develop分支用来做为开发版本。 分支机构和仓库目录之间的关系 你可能会想把每个分支想象成你的项目文件的不同副本,但技术上分支不是副本,前面我们也说过了,不过是通过用指针将其指到了某个commit下而已。 你将在计算机上的同一目录中与你的仓库中所有分支进行交互。当你在那个目录下时,你总是会看到那个目录的一个版本(一个分支)。 当你切换到一个不同分支时,你目录中的大部分文件也会改变,看起来就像你刚刚选择的版本。但是,如果你保存了对任何文件的更改,则这些更改将与上次保存时保持一致,而不管你检出哪个分支。 Git总能知道你已经更改这些文件,并且正在等待你告诉它哪个版本的项目要添加(git add)更改(或者告诉它你不想保留更改)。 维护人员只能查看已添加到分支的更改。分支告诉他们哪个版本的仓库与他们的哪个版本进行比较。当然你分支除非你push到远程仓库,否则其他任何人都是看不到的。

July 13, 2019 · 1 min · jiezi

git的一些操作命令

分支操作查看本地分支: git branch查看远程分支: git branch -a删除本地分支: git branch -d local_branch 删除远程 branch git push origin --delete <branchname>提交代码到程分支 ( 和删除远程分支只相差一个: ) git push origin branch 1 远程已有 remote _branch 分支且已经关联本地分支 local _branchgit push 2 远程没有 本地切换到 local _branch`git push origin local_branch:remote_branch 重命名分支: git branch -m old_branch_name new_branch_name创建并切换分支 dev : git checkout -b dev创建分支 dev : git branch dev切换分支: git checkout dev 冲突处理git status 告诉 我们冲突的文件git diff 查看冲突的文件根据提示的信息,修改后保存再提交Git add readme.txtGit commit -m "conflict fixed"添加远程库git remote add origin git@github.com:MonicaTanglu/vueproject.git ...

July 12, 2019 · 1 min · jiezi

笔记把本地的文件夹和远程的-git-仓库关联并推送

笔记:把本地的文件夹和远程的 git 仓库关联并推送常常有一个问题是:本地有一个文件夹(可能是脚手架程序生成的,也可能是自己最近的重要资料),里面存了一堆文件,如何推送到远程仓库呢?例如,有这样一个文件夹: 有这样一个仓库: 如何把文件夹中的内容很快的放到远程的 git 仓库中呢? 一个方法是 clone 仓库到本地,把文件夹中的文件拷进仓库,然后 commit push。这种方式稍微有点不方便,要是这些文件是在工作空间(项目)中的代码文件,那不是要每次改完代码都要拷贝到本地 git 仓库去 push 吗? 你可能会说,难道不能先 clone 再新建本地的项目吗?可是有人会说,clone会生成一个项目文件夹,脚手架程序创建项目又会生成一个文件夹,文件夹层次不对啊。 所以我们来看一下如何将本地的文件夹和远程 git 仓库关联并推送过去吧。 1. 将本地文件夹变成一个 git 仓库在文件夹下打开 Git Bash ,执行 git init 即可。 2. 关联远程仓库执行 git remote add origin <url> 3. 取回远程仓库的内容执行 git pull origin master 4. 提交本地仓库的内容 5. 推送到远程仓库可能需要输入密码 完成 查看远程仓库,已经推送到了。 (完)

July 11, 2019 · 1 min · jiezi

gitignore文件匹配规则

文件与文件夹匹配在表达式前头出现/则匹配从当前目录(gitignore所在目录)开始的相应文件/文件夹。在表达式后加/来匹配文件夹。如表达式hello/只会匹配文件夹hello, 而不会匹配文件hello。**匹配任意文件/文件夹,或者空内容。如a/**/b匹配a/b,a/x/b以及a/x/y/b。模糊匹配*匹配除了/之外任意数量的任意内容。?匹配除了/之外的任意一个字符。[]匹配包含在[]范围内的任意字符。取消匹配在表达式前使用!来取消匹配,然而当其父文件夹已经被其他表达式匹配时,则该条表达式无效。特殊字符在git中有特殊含义的字符如!, #等在匹配时在前面加\来转义。如表达式后面的空格会在匹配时被忽略掉,如果想要匹配名字后面带有空格的文件/文件夹时,可以使用\加空格来匹配空格。其他使用#添加注释

July 11, 2019 · 1 min · jiezi

借助URLOS快速安装Gogs

简介Gogs 是一款极易搭建的自助 Git 服务。 今天我们介绍一种更快速的安装方法,那就是通过URLOS一键安装Gogs。urlos是什么? URLOS是一个云主机管理软件,基于Docker容器技术打包和运行应用,包含负载均衡和故障转移等高级功能,可自动识别机器和云应用的故障并将云应用转移至可用的机器上,单机故障并不影响业务开展。 你可以使用以下命令安装URLOS: curl -LO www.urlos.com/iu && sh iu在此不讨论URLOS的使用方法,感兴趣的朋友请自行搜索,我们直接来看URLOS如何快速安装Gogs: 安装流程1.登录URLOS系统后台,在应用市场中搜索“Gogs”,找到之后,直接点击安装按钮 2.填写服务名称、选择运行节点、服务端口、选择智能部署 3.填写域名:www.aaa.com(这里填写自己的域名) 然后点击“提交”按钮,等待部署完成; 4.创建数据库应用市场中搜索“mysql”,安装mysql-5.6: 填写如下: 点击“提交”后等待mysql-5.6部署完成; 在服务列表里找到刚刚安装成功的mysql,选择”管理数据库“ 点击右上角的添加数据库 填写如下: 5. Gogs初始化向导访问在第3步中填写的域名:www.aaa.com。 点击“立即安装”。 安装成功后,注册一个帐户并登录:

July 10, 2019 · 1 min · jiezi

git-config配置多用户场景实践

gitgit是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)有所不同。git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。更多相关介绍可以查看百科 git的基本使用主要是指一下基本操作: 安装ssh登入配置命令使用安装根据自己的系统进行选择安装方式,可以使用命令行安装,也可以使用安装包安装,git官方安装包地址 ssh登入配置安装完成之后,需要考虑和远程的仓库建立连接,就需要账号和密码,无论是github、gitlab等,都需要一个账户名,可以注册完成,然后设置: git config --global user.name "yourName"git config --global user.email "yourEmail"为了避免每次push代码都需要密码之类的,我们通过ssh来配置;执行: ssh-keygen一路enter即可,在~/.ssh/下会生成两个文件,复制其中的公钥: pbcopy < ~/.ssh/id_rsa.pub进入远程仓库的个人中心,https://github.com/settings/profile;会找到关于SSH and GPG keys,有一个New SSH key的按钮,点击后,可以黏贴上刚复制的公钥,然后Add SSH key即可; 可以pull和push代码测试是否成功。 git命令使用对于win10系统,推荐升级后使用好的官方新出的终端,Windows Terminal,需要当前最新的win10版本,用起来挺好的,可以再Microsoft的官方商城下载体验。对于mac或者linux用户,推荐配置 oh-my-zsh, 这个oh-my-zsh默认安装上了git plugin在~/.zshrc配置文件中,可以使用很多的简洁命令,git简写命令集合多用户配置git-config的官网巨长文档,开发人员经常遇到这样的问题,我们的公司仓库和个人仓库的用户名和邮箱配置是有区别的,为了能够很好地区分工程上传到不同的远程仓库,我们需要分别处理,保证在不同的工程使用不同的账户 按工程配置多用户按目录配置多用户按工程配置多用户目前git的配置变量可以放在三个地方: /etc/gitconfig 系统配置,对所有用户都生效。~/.gitconfig 用户配置,仅对当前用户生效。 git config --global user.name "yourName"git config --global user.email "yourEmail"projectRootPath/.git/config 项目根目录配置,仅对当前项目生效。对应:进入工程根目录执行 git config user.name "yourName"git config user.email "yourEmail"三层是从3-2-1的优先级处理的,这样我们可以对不同工程完成不同的配置,这个在工程数量多的时候简直不忍直视,所以需要寻找更好的方法。 按目录配置多用户在2017年,git新发布的版本2.13.0包含了一个新的功能includeIf配置,可以把匹配的路径使用对应的配置用户名和邮箱; 在~/目录下面存在三个配置文件, .gitconfig // 全局通用配置文件.gitconfig-self // 个人工程配置文件.gitconfig-work // 公司工程配置文件全局通用配置文件~/.gitconfig里面的内容是:主要是通过includeIf配置匹配不用的目录映射到不同配置文件上, [includeIf "gitdir:~/self-workspace/"] path = .gitconfig-self[includeIf "gitdir:~/workspace/"] path = .gitconfig-work个人工程配置文件~/.gitconfig-self: ...

July 10, 2019 · 1 min · jiezi

利用Git进行多人协作开发入门篇

本篇文章中,不仅讲解一些git的常用语句,更重要的是讲解一下多人协作开发的流程,以及怎么利用Git去实现多人协作开发。 首先,在本地下载好Git以后,我们需要设置提交代码用的用户名和邮箱 git config --global user.name "xxx"git config --global user.email "xxx"如果用了 --global 选项,那么以后你所有的项目都会使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或邮箱,只需在该项目下执行: git config user.name "xxx"git config user.email "xxx"现在,假设我们在GitHub上有一个项目,叫 git-test 一般多人协作开发,都是每个人负责项目不同的模块,每个模块之间共用的文件较少,这样可以减少代码之间的耦合。每个模块建立一个分支,平常我们将代码上传到这个分支,当这个模块开发完毕以后,再将这个分支合并到master分支。 比如现在我们要负责a模块的开发。 那么,我们需要先把最新的项目代码克隆到本地。在本地工作目录下鼠标右键,选择 Git Bash Here ,然后输入: git clone https://github.com/michwh/git-test.githttps://github.com/michwh/git-test.git 是项目的git地址 我们先在本地建立 a 分支,在项目文件夹下执行: // 建立并切换到a分支git checkout -b a这条命令相当于执行下面这两条命令: git branch agit checkout a然后,我们在a分支上进行a模块代码的编写。比如我们在README.md文件里添加一句话: a分支第一次编写编写完以后,我们提交代码到远程的 a 分支。我们按顺序执行下面代码: // 将项目的代码变化提交到缓存区(包括修改、添加和删除)git add -A// 将缓存区的所有内容提交到当前本地分支,并附上提交说明:'xxx'git commit -m 'xxx'// 将代码提交到远程a分支git push origin a如果a模块已经编写完毕,而且经过测试无bug,那么,我们可以把远程 a 分支合并到远程的 master 分支。 不过,在合并之前,我们需要确认当前的 a 分支是从最新的 master 分支牵出来的。 ...

July 9, 2019 · 1 min · jiezi

全栈之路版本控制课程一Git如何把本地代码推送到远程仓库20190709v10

欢迎进入全栈之路之版本控制基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对代码的版本控制进行讲解,希望对广大同行带来一些帮助。若有问题请及时留言或加QQ:243042162。 寄语:如果你不去希望,你就不会发现什么东西超出了你的希望。背景项目建立初期都是先搭建基础框架,再把代码放到代码管理服务器上,让项目组成员进行检出从而进行需求的开发。下面将重点介绍实际项目中如何提交代码至git远程仓库。 步骤1.下载安装git自己本身系统是win10,下载地址:https://git-for-windows.githu...2.初始化版本库:git initrain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center$ git initInitialized empty Git repository in C:/WebstormProjects/cmpy-project/p roject-center/.git/3.添加文件到版本库:git add .rain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project- center (master)$ git add .warning: LF will be replaced by CRLF in assets/css/font-awesome.min.css.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/ie/html5shiv.js.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/ie/respond.min.js.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/jquery.min.js.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/skel.min.js.The file will have its original line endings in your working directory.4.提交到版本库,并填写提交备注:git commit -m "v1.0"rain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git commit -m "v1.0"[master (root-commit) 260e147] v1.0 53 files changed, 8306 insertions(+)5.把本地库与远程库关联:git remote add origin 你的远程库地址rain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git remote add origin 远程库地址6.推送至远程:git push -u origin master -frain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git push -u origin master -fCounting objects: 65, done.Delta compression using up to 4 threads.Compressing objects: 100% (65/65), done.Writing objects: 100% (65/65), 478.97 KiB | 0 bytes/s, done.Total 65 (delta 2), reused 0 (delta 0)7.查看状态:git statusrain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git statusOn branch masterYour branch is up-to-date with 'origin/master'.nothing to commit, working tree clean

July 9, 2019 · 1 min · jiezi

在企业中最常用的Git命令分支代码合并到master分支

工作中最常使用的Git命令==start==1.git pull #取回远程仓库的变化,并与本地分支合并 2.git branch #查看本地分支 3.git checkout #切换分支 4.git status #查看修改的文件 5.git add . #添加当前目录的所有文件到暂存区 6.git commit -m "" #提交暂存区到仓库区 7.git push #上传本地指定分支到远程仓库 8.git checkout master #切换到主分支master 9.git merge #将分支合并到master分支 10.git push ==end==

July 8, 2019 · 1 min · jiezi

MiniFly四轴学习系列2四轴部分main函数

**说明:本文原创作者『Allen5G』首发于微信公众号『Allen5G』,关注获取更多干货!标签:编程,软件,算法,思维** 先看看整个工程的任务关系手机APP是需要自己开发APP的,暂时没空搞,坐等官方。。 然后主要就是上位机和遥控器的使用了上位机通过USB连接四轴,需要烧录固件BootLoader遥控器使用NFR无线通信,这个也是可玩性最高的地方,当然也是最核心的部分---姿态解算和姿态控制,之后主要要研究的就是这块代码 整个系统是基于Freertos系统,所以函数也是在系统中进行任务切换 看下main函数部分:首先说下代码风格很喜欢,可能是强迫症,注释必须对其 #include "system.h" /*头文件集合*/TaskHandle_t startTaskHandle; //创建句柄static void startTask(void *arg);//声明创建函数int main() //主函数{ systemInit(); /*底层硬件初始化*/ xTaskCreate(startTask, "START_TASK", 300, NULL, 2, &startTaskHandle); /*创建起始任务*/ vTaskStartScheduler(); /*开启任务调度*/ while(1){};}/*创建任务*/void startTask(void *arg){ taskENTER_CRITICAL(); /*进入临界区*/ xTaskCreate(radiolinkTask, "RADIOLINK", 150, NULL, 5, NULL); /*创建无线连接任务*/ xTaskCreate(usblinkRxTask, "USBLINK_RX", 150, NULL, 4, NULL); /*创建usb接收任务*/ xTaskCreate(usblinkTxTask, "USBLINK_TX", 150, NULL, 3, NULL); /*创建usb发送任务*/ xTaskCreate(atkpTxTask, "ATKP_TX", 150, NULL, 3, NULL); /*创建atkp发送任务任务*/ xTaskCreate(atkpRxAnlTask, "ATKP_RX_ANL", 300, NULL, 6, NULL); /*创建atkp解析任务*/ xTaskCreate(configParamTask, "CONFIG_TASK", 150, NULL, 1, NULL); /*创建参数配置任务*/ xTaskCreate(pmTask, "PWRMGNT", 150, NULL, 2, NULL); /*创建电源管理任务*/ xTaskCreate(sensorsTask, "SENSORS", 450, NULL, 4, NULL); /*创建传感器处理任务*/ xTaskCreate(stabilizerTask, "STABILIZER", 450, NULL, 5, NULL); /*创建姿态任务*/ xTaskCreate(wifiLinkTask, "WIFILINK", 150, NULL, 4, NULL); /*创建通信连接任务*/ xTaskCreate(expModuleMgtTask, "EXP_MODULE", 150, NULL, 1, NULL); /*创建扩展模块管理任务*/ printf("Free heap: %d bytes\n", xPortGetFreeHeapSize()); /*打印剩余堆栈大小*/ vTaskDelete(startTaskHandle); /*删除开始任务*/ taskEXIT_CRITICAL(); /*退出临界区*/}void vApplicationIdleHook( void ){ static u32 tickWatchdogReset = 0; portTickType tickCount = getSysTickCnt(); if (tickCount - tickWatchdogReset > WATCHDOG_RESET_MS) //添加独立看门狗 { tickWatchdogReset = tickCount; watchdogReset(); } __WFI(); /*进入低功耗模式*/}main函数正常步骤:先是硬件初始化:基本都是32的基础操作,后边看哪部分时涉及到了再说吧! ...

July 7, 2019 · 2 min · jiezi

MiniFly四轴学习系列1四轴部分系统及电源分析

最近硬件四轴很火,了解了很久,还是选择了正点原子的MiniFly,主要还是原子的论坛资料多,后边可以有人讨论,不像很多就是建了个群,研究问题还是在论坛方便很多。 四轴终于拿到手,功能很强大,主要是还支持二次开发,可以研究下玩玩小四轴了 还是先从硬件入手分析下 1.系统框架主体可以分成两个小系统,后续可以按照这个顺序分析代码1.通信部分---基于M0和NFR51822,包括电源管理2.控制部分---基于M4和外围传感器 2.比较关注的电源部分电源还是比较考究,直接包含了充电功能,不用每次使用外置的充电模块(之前自制过一个充电模块,看来以后可以集成到电路里了) 按键断电功能这个比较喜欢:这个是NFR51822控制VEN_D引脚来实现断电的 上个NFR51822部分电路 开始看代码,大致看了下程序,先是监测按键状态 /*按键扫描处理*/void buttonProcess(){    static unsigned int lastTick;    static unsigned int pressedTick;    static bool pressed = false;    if (lastTick != systickGetTick())    {        lastTick = systickGetTick();        if(pressed==false && BUTTON_READ()==BUTTON_PRESSED)        {            pressed = true;            pressedTick = systickGetTick();        }        else if(pressed==true)        {            if(BUTTON_READ()==BUTTON_RELEASED)                pressed = false;            if ((systickGetTick()-pressedTick) > BUTTON_LONGPRESS_TICK)                state = buttonLongPress;            else if(BUTTON_READ()==BUTTON_RELEASED)                state = buttonShortPress;        }    }}/*获取按键状态*/buttonEvent_e buttonGetState(){    buttonEvent_e currentState = state;    state = buttonIdle;    return currentState;}然后就是在主函数中进行相应的操作,先不说了 看下怎么实现电源开关的:这么最后应该F1部分还是有电的,只是消耗较少,寻求一种可以完全断电的方案?? /*开启电源*/void pmPowerOn(void){    nrf_gpio_cfg_output(UART_TX_PIN);   //使能串口TX    nrf_gpio_pin_set(UART_TX_PIN);        nrf_gpio_cfg_output(RADIO_PAEN_PIN);// 开启无线功能    nrf_gpio_pin_set(RADIO_PAEN_PIN);        nrf_gpio_cfg_output(PM_VBAT_SINK_PIN);// 设置ADC    nrf_gpio_pin_clear(PM_VBAT_SINK_PIN);    pmStartAdc();   //开启ADC转换}/*关闭电源*/void pmPowerOff(void){       nrf_gpio_cfg_input(UART_TX_PIN, NRF_GPIO_PIN_PULLDOWN);    uartDeinit();        nrf_gpio_cfg_input(STM_NRST_PIN, NRF_GPIO_PIN_PULLDOWN);    nrf_gpio_pin_clear(STM_NRST_PIN);        nrf_gpio_pin_clear(PM_VCCEN_PIN);     //关闭 LDO使能控制脚        LED_OFF();      nrf_gpio_pin_clear(RADIO_PAEN_PIN);   //关闭PA    nrf_gpio_cfg_input(PM_VBAT_SINK_PIN, NRF_GPIO_PIN_NOPULL);    NRF_POWER->SYSTEMOFF = 1UL;    while(1);  //进入死循环}void pmInit(){       /* STM32 电源配置 */    nrf_gpio_cfg_output(PM_VCCEN_PIN);    nrf_gpio_pin_set(PM_VCCEN_PIN);     //使能stm32电源    msDelay(100);        /* STM32 复位 */    nrf_gpio_cfg_output(STM_NRST_PIN);    nrf_gpio_pin_clear(STM_NRST_PIN);    msDelay(100);       nrf_gpio_pin_set(STM_NRST_PIN);    msDelay(100);       nrf_gpio_cfg_input(USB_CONNECTED_PIN, NRF_GPIO_PIN_NOPULL);    nrf_gpio_cfg_input(PM_CHG_STATE_PIN, NRF_GPIO_PIN_PULLUP);        pmPowerOn(); //开启电源}

July 6, 2019 · 1 min · jiezi

自动化执行npm-publishgit-commitgit-tagghpages全流程的shell

因为过程复杂和老忘记改版本号(╯‵□′)╯︵┻━┻,为简化自己提交开源工具而写的shell,记录一下。 用alias写在了.zshrc里,直接用 command [version] [commit/tag message] [subtreeDir]使用,[version]和[message]必须。 其中包含了自动修改版本号、git提交操作、tag操作、publish、提交gh-pages的subtree。 我的drag-block目前在用,前期准备工作如下: 在github上建库使用webpack打包,设置dev和prod环境build会把代码以及示例打包,分别放在lib/ 和 example/下需要一个npm账号在登录状态配置npm publish之前的ignore、files等建立gh-pages分支,并使用subtree将example/提交到该分支会得到: 一个github仓库github releases,可以用代码包的方式下载可以直接在npm install的工具一个github page,内容是你做的示例页面具体的可以从drag-block这里看。 #!/bin/sh if [ ! -n "$3" ];then subtreeDir="example/"else subtreeDir=$3fiif [ ! -n "$1" ];then echo '请输入版本号';else sed -i '' 's#\("version": "\).*#\1'"$1"'",#g' package.json # 修改package.json中的version npm run build git add . git commit -m "$2" git tag $1 -m "$2" git push git push --tags npm publish git subtree push --prefix=${subtreeDir} origin gh-pages # 使用subtree的方式提交我的 example/ 目录为gh-pages分支内容,用以github pages。fi

July 5, 2019 · 1 min · jiezi

git推送本地项目到远程gitee

git全局设置 git config --global user.name "xxx"git config --global user.email "xxx"创建git仓库 1)进入项目根目录git init 2)添加到本地仓库git add . git commit -m "xxxx" 提交信息 3)从远程获取最新版本并merge到本地 git pull origin master 4)提交本地分支到远程分支 git remote add origin https://gitee.com/tahara/git-... git服务器上创建一个仓库 git push -u origin master在提交过程中,切记要先pull代码,否则可能报出! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://gitee.com/tahara/git-...' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 出现这个问题是因为gitee中的文件不在本地代码目录中,可以通过如下命令进行代码合并,之后在提交 git pull --rebase origin master ...

July 5, 2019 · 1 min · jiezi

git创建分支提交远程分支将分支branch合并到主干master

使用git进行系统开发时,刚开始采用主干master,在项目更新频繁的情况下,就需要新建分支进行开发,每次将新的分支branch提交到gitee上,开发完毕时新分支合并到主干master上。 从已有的分支创建新的分支(如从master分支),创建一个test分支git branch test 创建新分支git checkout test 切换到新分支 上面命令等用于git checkout -b test 创建完可以查看一下,分支已经切换到testgit branch *表示在当前分支提交该分支到远程仓库git push origin test 从远程获取testgit pull origin test设置git push,pull默认的提交获取分支,这样就很方便的使用git push 提交信息或git pull获取信息git branch --set-upstream-to=origin/test 取消对master的跟踪git branch --unset-upstream master随便修改一下工程文件的内容,然后git commit ,git push,之后就可以直接提交到远程的test分支中,而不会是master,若想设置回默认提交获取master,切换master后,重复操作上一步即可在分支test上开发完成后,需要合并到主干master 从当前分支切换到主干master上git checkout master合并某个分支到主干master上传代码git push origin 报出如下: fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master 参考:https://blog.csdn.net/benben_... 解决再次上传git push --set-upstream origin master 报错如下: ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://gitee.com/tahara/blue...' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 出现这个问题是因为gitee中的一些文件不在本地代码目录中,可以通过如下命令进行代码合并 ...

July 5, 2019 · 1 min · jiezi

Git-常用技巧

git 查看文件改动状态使用 git statusgit 查看改动的内容使用 git diffgit 查看提交记录使用 git log 命令HEAD 指针表示的是当前版本,上一个版本为 HEAD^,再往上就是 HEAD^^,往上一百个版本可以写作 HEAD~100git 回退至上个版本使用 git reset --hard HEAD^,若回退至指定版本,先使用 git log 查看版本的 hash,然后使用 git reset --hard <hash_version>如果回退版本后又想回到最新的版本,在不知道最新版本 hash 的情况下,使用 git reflog 查看所有 commit 的 hash,然后使用 git reset --hard <hash_version> 进行回退或者前进git VCS 分为工作区和版本库(暂存区与分支),git add 命令将改动添加进入暂存区,git commit 将改动添加到分支工作区的文件发生了改动,想要撤销修改,可以使用 git checkout -- <file_name> 来撤销掉修改,注意必须要加 -- 符号(-- 与文件名之间有空格),否则 git 会认为是要切换分支如果文件发生了改动并且已经添加到暂存区,想撤销掉暂存区的改动,使用 git reset HEAD <file_name> 命令,这样就把修改了的文件又放回工作区了,暂存区是干净的,放置到工作区后,再使用 git checkout -- <file_name> 将放置在工作区的文件改动撤销掉,这样两步操作就将文件的改动彻底还原了查看工作区与版本库文件的差异可以使用 git diff HEAD -- <file_name>(同样,-- 与文件名之间有空格)如果工作区的文件被误删除,想要恢复可以使用 git checkout -- <file_name>,git checkout 其实是用版本库里的版本替换工作区的版本操作,无论是工作区的修改还是删除,都可以用该命令一键还原本地分支首次推向远程分支的时候可以使用 git push -u origin <branch_name>,其中 -u 参数是 --set-upstream 的简写切换分支使用 git checkout <branch_name>,创建并切换新分支时需要加上 -b 参数,创建新分支使用 git branch <branch_name>,查看分支 git branch合并分支使用 git merge <branch_name>,删除使用 git branch -d <branch_name>git merge 合并分支产生冲突时,先解决冲突,再添加至暂存区,然后提交。解决冲突时,<<<<< HEAD 到 ===== 部分是当前分支的内容,>>>>> 到 ===== 部分是需要并入的分支的内容,确定好要保留好的内容后保存并退出,然后提交。提交成功后,使用 git log --graph 可查看分支合并图如果合并分支时产生冲突,想要还原回原来的状态,可以适用 git merge --abort 命令git 可以将工作区暂时的改动“存储”起来,当你不想将改动提交至暂存区时。使用 git stash 命令即可。当你想将“存储”的内容释放出来时,先使用 git stash list 查看,然后进行恢复。恢复命令有两条,使用 git stash apply <shash@{index}> (这个括号里面的内容是可选的,可以指定恢复第几个 stash 的内容,在多次 stash 时使用),可以将存储的内容恢复至工作区,但是存储的内容并不会删除,需要删除可以使用 git stash drop <shash@{index}> 命令;另一种方式是使用 git stash pop <shash@{index}> 命令,该条命令会在恢复之后同时删除 stash 区域的内容查看远程仓库的信息使用 git remote -v本地分支与远程分支进行关联使用 git branch -u <branch_name> origin/<branch_name>创建标签使用 git tag -a <tag_name> -m <tag_description> <commit_hash>,查看一个标签的内容可以使用 git show <tag_name>推送标签可以使用 git push origin <tag_name>,一次性推送可以使用 git push origun --tags 命令,删除本地标签可以使用 git tag -d <tag_name>,删除远程标签使用 git push origin :refs/tags/<tag_name> ...

July 4, 2019 · 1 min · jiezi

git关联本地文件和远程仓库

平时自己有一些本地的项目想把它们放到github上去,就需要关联一下。 步骤一:在本地想放到github上的项目的根文件夹执行git init。 步骤二:在github上新建一个仓库Repository,得到仓库地址。比如https://github.com/MR-yuhuash... 步骤三:本地项目根文件夹执行: git remote add origin https://github.com/MR-yuhuashi/jest-nuts.git步骤四:关联之后,就可以进行拉取远程代码和提交本地代码到远程等等操作啦比如 git pull origin mastergit add .git commit -m 'first commit'git push

July 3, 2019 · 1 min · jiezi

Windows环境-Git提交代码到Github附python-读写Excel文件Demo

目录Git提交代码常用命令python 读写Excel文件Demo一、Git常用命令 git clone #从远程仓库克隆整个项目代码 git status #列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交的文件git add . #提交全部未跟踪和修改文件,但是不处理删除文件 git commit -m "message" #将暂存区里的改动给提交到本地的版本库 -m 参数表示可以直接输入后面的"message",如果不加 -m参数,那么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个message git push #将本地分支上传到远程分支 注:此时已经把我们的代码已经提交到远程仓库,后续还会提到企业办公中git常用命令的使用。 2.python 读写Excel文件Demo Pandas处理Excel数据 1.pandas依赖处理Excel的xlrd模块,安装命令是:pip install xlrd 2.安装pandas,安装命令是:pip install pandas Xlsxwriter模块的使用 1.Xlsxwriter模块主要用来生成Excel表格,插入数据、插入图标等表格操作 2.安装Xlsxwriter,安装命令是:pip install xlsxwriter requests调用有道翻译接口 1.requests 是一个功能强大、简单易用的 HTTP 请求库,可以使用 pip install requests 命令进行安装 2.lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高,可以使用pip install lxml命令进行安装 Github源码地址: ExcelHandle

July 3, 2019 · 1 min · jiezi

git的工作上使用

以下只是个人在工作上对git的使用记录克隆项目 git clone查看分支查看本地分支:git branch查看远程分支:git branch -r查看所有分支:git branch -a切换远程分支git checkout -b myRelease origin/Release**作用是checkout远程的Release分支,在本地起名为myRelease分支,并切换到本地的myRelase分支**上传代码步骤 1. 查看当前修改内容:git status 2. 添加到缓存区:git add . 3. 添加到仓库:git commit -m "注释" 4. 拉去最新代码(有冲突需要解决冲突):git pull 5. 上传到远程仓库:git push解决冲突如果希望服务器上版本完全覆盖本地修改,使用如下命令回退并更新: git reset --hard git pull在idea上使用git插件合并yours的代码都是有用的信息思路: git pull 出现冲突后可以暂存本地修改git stash ,然后git pull 更新代码,git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,然后可以提交git add . 加入索引库,然后本地提交git commit -m '注释' 最后git push到远程 1. git stash 暂存本地代码 2. git stash list 查看当前git栈的信息 3. git pull 拉取代码 4. git stash pop stash@{0} 还原暂存代码 5. 打开冲突文件![111][1] Updated upstream 和=====之间的内容就是pull下来的内容 ====和stashed changes之间的内容就是本地修改的内容![图片描述][2]

July 2, 2019 · 1 min · jiezi

git笔记git常用速查表

2019/06借助这个平台记录一下心得、整理一些常用知识,如有错误,不吝赐教 1. git init 初始化一个新的目标仓库,它的目录下将会生成一个.git隐藏文件夹 2. git status (loading.....)

July 2, 2019 · 1 min · jiezi

Windows10下配置SSH连接Github配置SSH-Key

工具/原料 GithubGit Windows版本配置SSH通道访问Github 检测本机本地机是否含有ssh设置 注:因为我的机器已经存在ssh key设置,所以删除id_rsa、id_rsa.pub、known_hosts 这三个文件 使用git base生成心的ssh key git base命令工具是Windows版的git提供的,Windows环境很好使用的命令行工具 cd study/ssh(自己创建的路径) $ ssh-keygen -t rsa -C "xxxxxxx@163.com"(填写自己有效的邮箱) 按照提示填写自己相关信息 *本机已完成ssh key设置,其存放路径为:C:/Users/xxxx_000/.ssh下 注:可生成ssh key已经生成的密钥,默认id_rsa 添加ssh key到GitHub 1.登录GitHub系统;点击右上角账号头像的“▼”→Settings→SSH kyes→Add SSH key 2.复制id_rsa.pub的公钥内容 a.进入c:/Users/xxxx_000/.ssh/目录下,打开id_rsa.pub文件,全选复制公钥内容 b.Title自定义,将公钥粘贴到GitHub中Add an SSH key的key输入框,最后“Add Key” 参考:window下配置SSH连接GitHub、GitHub配置ssh key

July 2, 2019 · 1 min · jiezi

git-获取最后一次-commit-id

获取完整的 commit id获取完整的 commit 编号信息,如 1dc9c1607bff0dbfadc9db822dab4a5b6da4b017 git rev-parse HEAD获取短 commit id获取较短的 commit 编号,如 1dc9c160 git rev-parse --short HEAD引用git-rev-parse

July 2, 2019 · 1 min · jiezi

gitgit-tag相关命令和实践记录

欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言由于项目迭代开发比较快,所以就需要在每个迭代版本上打tag的需求,博主之前的策略为,创建一些名字为tag-xx的分支来充当tag的角色,但是这样显然是不可取的,所以就实践了一下tag的功能并记录下来; 正文假如我们的项目到某个阶段的版本封板了,要上线,在这时,通常是要打tag留个标记的; 这时我们就利用git的tag命令进行一系列操作,具体如下: 我们需要在发版的master分支打tag,先添加一个taggit tag -a 0.1 -m "version 0.1″// git tag 是命令// -a 0.1是增加 名为0.1的标签// -m 后面是标签的注释然后推送tag到远程git push origin --tags// --tags参数表示提交所有tag至服务器端// 注意:普通的git push origin master操作不会推送标签到服务器端查看已有tag列表git tag --list// 后面的--list可以省略假如我们要切换到某个taggit checkout [tagName/branchName] // 这里与切换分支的道理一样,也可以将tag和分支理解为一个东西,这个会好理解一点删除本地taggit tag -d <tagName>// 与删除分支的命令相似// 我们切换到这个tag之后如果需要修改东西,// 就使用新建并且换分支的命令,切出新的分支修改代码删除远端服务器的taggit push origin :refs/tags/0.1// 后面跟tag的名字,例如0.1我的github资源地址:git--git tag相关命令和实践记录 我的CSDN博客地址:https://blog.csdn.net/wxl1555 如果您对我的博客内容有疑惑或质疑的地方,请在下方评论区留言,或邮件给我,共同学习进步。 邮箱:wuxiaolong802@163.com

July 1, 2019 · 1 min · jiezi

git的撤销操作归纳

.4 Git 基础 - 撤消操作撤消操作任何时候,你都有可能需要撤消刚才所做的某些操作。接下来,我们会介绍一些基本的撤消操作相关的命令。请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果。 修改最后一次提交有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交: $ git commit --amend此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。 启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。 如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend 提交: $ git commit -m 'initial commit'$ git add forgotten_file$ git commit --amend上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。 取消已经暂存的文件接下来的两个小节将演示如何取消暂存区域中的文件,以及如何取消工作目录中已修改的文件。不用担心,查看文件状态的时候就提示了该如何撤消,所以不需要死记硬背。来看下面的例子,有两个修改过的文件,我们想要分开提交,但不小心用 git add . 全加到了暂存区域。该如何撤消暂存其中的一个文件呢?其实,git status 的命令输出已经告诉了我们该怎么做: $ git add .$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.txt modified: benchmarks.rb就在 “Changes to be committed” 下面,括号中有提示,可以使用 git reset HEAD <file>... 的方式取消暂存。好吧,我们来试试取消暂存 benchmarks.rb 文件: ...

July 1, 2019 · 1 min · jiezi

Git常用命令整理

获取仓库代码 git fetch 拉回操作 git pull ==git fetch + git merge 提交所有修改过的文件到暂存区,不包括新的文件 git add -u 提交所有修改过的文件到暂存区,包括新创建的文件 git add -A 移除github远程仓库 git remote rm origin 添加github远程仓库 git remote add origin <链接> 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> git merge --no-ff -m "description" <branch name> 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。 看到分支合并图git log --graph 删除分支:git branch -d <name> 保存工作现场 git stash 查看stash记录 git stash list ...

July 1, 2019 · 1 min · jiezi

使用jeecgboot心得

使用jeecg-boot心得: Jeect-boot,采用主流最新的开发技术,是个强大的快速开发平台。 刚开始发现jeecg-boot时便对其精致美观的页面深深的迷住了。下载项目运行发现其中也有想要的按钮权限功能,同时jeecg-boot秉承了以前的一贯作风有强大的代码生成器,可谓是广大码农的福音。功能强大,用起来也是极其简单,同时有配套的技术文档和视频,从环境搭建到部署应有尽有,还有QQ技术群、案例,总而言之项目熟悉起来特别的方便。有什么问题也可以快速找到解决的方法。 值得一提的是jeecg-boot非常适合做后台管理系统,后台管理系统的一些用户、角色、菜单、站内信等基础模块都有。对于广大程序员来说除了代码生成器,jeecg-boot项目有大量的封装,比如说查询过滤器极大的便利程序开发,节省了不少时间与精力。jeecg-boot是前后端分离开发同时也提供在线文档的功能,减少了开发沟通的时间。对于公司来说,如果要赶进度,前端跟不上可以招前端人员,后端进度跟不上前端,可以找后端开发人员。 下面说一下,在使用该项目过程中遇到的一些问题和建议以及心得:1、 表格中数据过多,当数据竖列超过十五列,横向超过二十条时,点击表格前面的多选框进行单选和全选时出现卡顿。2、 在使用表格时用scopedslots属性时使用日期组件进行双向绑定时,无法切换年月,只能手输,在此基础上再进行设置默认值,得到的数据会错一天。一般使用和在表单里使用没有发现问题。希望这一点能够给出一个解决方案(备注:我在实际开发过程中只能进行双向绑定,不能依靠事件去获取值)。3、 建议jeecg-boot团队,能够封装一些代码实现单元格合并。就是竖列数据相同能够自动合并。有一些统计数据,合并单元格看起来比较好看一些。4、 我使用的过程中,需要单独做手机版页面,于是去技术交流群问有没有这方面的支持,答案是支持,不过要在页面进行加判断。可以设想一下,这样写的话每个页面都要加判断就很繁琐,而且页面也不好单独来拉出了。于是乎,就舍弃这样的操作。就改成在加载菜单时进行判断当前的设备类型,如果是手机就去后台请求手机版的菜单,如果是PC端就去请求PC版的菜单。首先是在菜单表增加标识,该菜单是属于哪种,当添加菜单时就按需选择。其他照旧,当用手机访问系统登录进去后就会只加载手机菜单,PC端访问系统就只加载PC端菜单了。5、 建议给出一些手机版页面的案例(就像vant中的业务组建),因为有的公司需要开发手机版方便客户使用。6、 建议代码生成器能够生成手机版样式的页面。7、 建议网址栏最好只显示域名,不显示其他地址

June 30, 2019 · 1 min · jiezi

全国站与子站的开发

关于如何合理的进行子站的开发参考 1,vuepress --- 主题定制 2,ant design landing 3,DataV 数据可视化 4,ElementUI 作为依赖 5,jd.com 京东设计思路(模块化) read.jd.com www.jd.com mall.jd.com product.jd.com sales.jd.com 同一套用户体系 6,模块化开发 7,可插拔 8,环境变量 9,分支 git 版本 10,组件化 11, ant design

June 29, 2019 · 1 min · jiezi

三道-google-风格-git-面试题及其解答

第一题: 把配置文件推送到了远程仓库,怎样删除远程仓库的该配置文件,本地还要用到这个文件。这种操作失误,比较常见。一般这样解决: git rm --cached filenameecho filename >> .gitignore先解释第二步,本地需要,远程仓库不需要,肯定是要把那个文件写入 .gitignore 文件里面。否则以后还要删除。 第一步则是把该文件从 git 的暂存区域中删除。暂存区域,就是 index 区域。 见一下亲人: git 三个区,git rm filename, 会把文件从工作区 Working Directory 和暂存区域 Staging Area 中删除。本地还要用,就不能这么搞。 git rm --cached filename, 则把文件从暂存区域 Staging Area 删除,保留工作区的,我们一般编辑见到的。 这种情况就是已经 commit 了,生成快照,文件进了版本库 Commit History,然后 push, 远程库与本地库同步一下。 这个时候,直接 push 到远程,无效。因为没有新的快照,也就是没有新的 commit id. 本地与远程的历史 log 是一致的。修改文件,add 再 commit, push 提交过去,就会生效。 第二题: git 如何解决代码冲突解决冲突三连git stash git pull git stash pop 操作就是把自己修改的代码隐藏,然后把远程仓库的代码拉下来,然后把自己隐藏的修改的代码释放出来,让 git 自动合并。接着找 <<<<<<<, 哪里冲突哪里改。 ...

June 28, 2019 · 2 min · jiezi

git命令行对比本地仓库跟远程仓库

通常团队合作一个项目,如果项目中有人push代码到远程仓库,我们用git的gui客户端会获取到远程仓库更新了什么,但是没有合并,也就是说没有merge。 但是用git的命令怎么实现呢? git fetch (从远程的origin仓库的master分支下载代码到本地的origin master。如果要指定仓库和分支:git fetch origin master)git log -p master.. origin/master(比较本地的仓库和远程仓库的区别,—name-only:不显示文件详细更改信息)

June 28, 2019 · 1 min · jiezi

Git添加beyond-compare4作为比较工具

使用 git diff 或者是 git difftool 命令去比较文件都是在git小黑窗口去打开,比较起来很不友好。所以我们通过配置文件把比较功能强大的“beyond compare4”作为Git的比较工具,这样我们就可以通过命令行调用强大的“beyond compare4”。通过“beyond compare4”工具更加轻松的去比较本地和远程文件的差异性1.配置“.gitconfig”文件首先我们找到Git的配置文件“.gitconfig”,在 C:\Users\Administrator\.gitconfig 文件中配置,具体配置如下: [gui] encoding = utf-8[diff] tool = bc4[difftool] prompt = false[difftool "bc4"] cmd = "\"C:/Program Files/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"" [merge] tool = bc[mergetool] prompt = false keepBackup = false[mergetool "bc"] cmd = "\"C:/Program Files/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""mergetool是merge解决冲突时会弹出对应的运行软件, keepBackup=false可以防止合并后生产后缀为.orig的备份文件 说明:cmd = "\"C:/Program Files/BeyondCompare/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"" 表示输入命令 git difftool后去找对应的运行文件并传(大字符串里面用空格分开)递参数处理。用空格分开(相当于参数),\"表示单个输入的参数必须为字符串(个人理解)。 第一个表示调用可执行文件的路径第二个$LOCAL表示远程文件临时存储在本地的C:\Users\Administrator\AppData\Local\Temp\wj9D8b_.eslintrc中去第三个$REMOTE表示去拿当前需要比较的文件注意:建议只比较一个文件,否则git会递归对比每一个文件。 配置完成后可以使用git difftool <文件>,默认就会打开“Beyond Compare 4”工具 ...

June 28, 2019 · 1 min · jiezi

git的一些撤销操作

前言在用开发项目的时候,经常会写着写着会发现写错的时候,人生没有后悔药,但是git有啊,大不了从头再来嘛。 git的一些撤销操作代码还没有存到暂存区当我们修改了一个文件,还没有执行git add操作的时候,发现写错的时候. ➜ xiaoyan_es_static git:(master) ✗ cat README.mdes日志统计查询我写错了,不想要这行了我们可以使用如下命令,回到最后一次提交的版本 git checkout -- <file>...执行完git checkout -- README.md 命令后 ➜ xiaoyan_es_static git:(master) ✗ cat README.mdes日志统计查询代码存储到了暂存区当我们一不小心将代码存入了暂存区 ➜ xiaoyan_es_static git:(master) ✗ git add .➜ xiaoyan_es_static git:(master) ✗ git statusOn branch masterYour branch is up-to-date with 'origin/master'.Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.md我们可以使用如下命令,回到最后一次提交的版本 git reset HEAD <file>...执行完命令后如下所示 ➜ xiaoyan_es_static git:(master) ✗ cat README.md es日志统计查询这行写错了,但是已经存到暂存区了% ➜ xiaoyan_es_static git:(master) ✗ git status On branch masterYour branch is up-to-date with 'origin/master'.Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.mdno changes added to commit (use "git add" and/or "git commit -a")代码已经commit了当我们修改的代码已经commit了,我们只需要执行 ...

June 27, 2019 · 1 min · jiezi

Learning-Git-Branching-最好用的-Git-在线学习工具

你如果对 Git 感兴趣吗?那么 “Learning Git Branching” 可以说是目前为止最好的教程了,在沙盒里你能执行相应的命令,还能看到每个命令的执行情况; 通过一系列刺激的关卡挑战,逐步深入的学习 Git 的强大功能,在这个过程中你可能还会发现一些有意思的事情。 你会看到“Learning Git Branching” 提供的许多关卡。如果你是初学者,从第一关开始逐个向后挑战就是了。 而如果你已经入门了,可以略过前面,直接挑战后面更有难度的关卡。以下是一些截图:

June 26, 2019 · 1 min · jiezi

Git多人协作

Git多人协作github进行多人协作,需要协作人员拥有自己的github账户,在需要多人的github库中添加协作者即可。 1.添加协作者添加协作者:在github库中的设置选项中有添加协作者选项。 添加协作者有两种方式,一使用协作者的邮箱、二使用用户名来搜索。如果用邮箱地址没有搜索到他,是他的github账户将邮箱设置成私人,可以使用账户名进行搜索。协作者需要修改邮箱设置,使能够用邮箱搜索他。 修改邮箱设置: 点击后下拉,可以看到keep my email address private按钮以选中,这就是设置为我的邮箱为私人,我们现在需要我的邮箱设置为开发,点击keep my email address private前的按钮,变成未勾选。 之后在配置个人信息选择邮箱,如图所示:选中自己要开放的邮箱 成功添加协作者 点击后就可以使用邮箱搜索了,之后添加协作者,协作者会收到一封邮件,需要协作者同意成为这个github库的协作者。添加协作者完成后,协作者就可以将修改推送到这个github库了。 2. 检验协作者的协作权限接下来就是协作者的操作,检验一下协作者是否能够推送到这个github库。在桌面右键打开Git Bash Here命令工具 协作者首先需要克隆这个github库: Git clone git@github.com:自己的用户名/github库名.git我们查看一下分支 Git branch 运行命令,显示只有一个分支,github库克隆到本地只有一个master主分支,需要我们在本地新建分支与github远程分支连接。前面两章我们已经将本地dev分支推送到远端,远端是有两个分支的。如果对这里有疑问可以查看前两章内容。 新建一个dev分支:git checkout -b dev 接下来就是连接github上的dev分支: git branch --set-upstream-to origin/<branch-name>现在修改ss.html文件,如在文件中加几个div标签。 提交修改:Git add ss.htmlGit commit -m””在dev分支下进行推送: git push origin dev 推送成功了,也就是说,我们之前进行的分支连接是成功的,并且我们现在也已经将协作者的修改提交到了github远端库中。 3.验证协作者推送的修改现在,我们用github库拥有者或其他协作者来进行验证推送的结果。 刚才的协作者已经把dev分支推送到了github上,我们进行拉取,查看是否成功将修改推送到github。 拉取:git pull这个账户还没有进行本地dev分支与远端dev分支连接,连接的命令上面我们已经实现了,可以自己进行连接,在命令工具中输入:git branch --set-upstream-to origin/<branch-name> 连接之后我们才能拉取dev分支的修改。连接之后,在执行git pull命令: 现在打开ss.html文件查看是否发生了更改,发现确实发生了更改。协作者进行的修改确实是推送到了github库里,我们成功实现了git的多人协作。 ...

June 26, 2019 · 1 min · jiezi

git仓库的建立

git仓库建立文件夹: cffycls/cluster进入后可以看到远程添加文件的实例,如下: #echo "# cluster" >> README.mdecho -e "# cluster\n"+$(date +"%Y-%m-%d %T") >> README.mdgit initgit add README.mdgit add php/auto.sh php/Dockerfile php/ext.sh git commit -m "first commit"git remote add origin https://github.com/cffycls/cluster.gitgit push -u origin master删除 ./git 文件可以重新初始化操作

June 26, 2019 · 1 min · jiezi

git-rebase使用020

git rebase 使用rebase:顾名思义 ==变基== 假设现在从master 分支上,切出一个本地开发分支mydev git checkout -b mydev这时候master上的git记录是这样子的 A-->B-->C-->D这个时候另外一个开发人员把ta的dev分支合并到master分支了tadev A-->B-->C-->D |-->E-->F-->G查看git记录git lg or git log实际上现在master上的分支的git 提交记录已经是这样子的了: A-->B-->C-->D-->E-->F-->G但是你本地上的分支还是这样的,你分别了提交了 3个 commit记录。 |—->M-->N-->OA-->B-->C-->D这时,你的代码开发完成了,需要合并代码。这时候有两种选择: 直接 git merge 或者 经过 git rebase 再提交 git merge git merge如果直接git merge,假设你提交commit的时间和刚才合并进去的其他人的dev分支是有重合的: A-->B-->C-->D |-->E |-->F-->G |-->M-->N |-->O这样的提交的记录就比较乱,假设现在需要回退代码什么的,就有点小麻烦了,就需要一个文件去回退。对于多人协作的话 就比较需要git rebase git rebase先对mydev分支进行 git rebase 操作 这时候分支的提交记录就会变为如下所示: A-->B-->C-->D-->E-->F-->G |-->M-->N-->O会把mydev分支新增的commit记录新增在master分支最新的后面,这个时候push分支,就需要强制更新你的分支。再提交merge。 git push -f 变基的作用就是修整历史,将分支历史并入主线。 git rebase 注意事项确保没有其它分支同时更改同一个文件git rebase前需要确保master分支为最新。变基会修整历史,然后将分支历史并入主线,可以理解成美化过的历史,而合并则可以不修改历史,让分支历史依然独立存在,可以看作原始的历史。永远不要对已经推到主干分支服务器或者团队其他成员的提交进行变基,我们选择变基还是合并的范围应该在自己当前工作范围内。如果git rebase之后提示冲突的话,需要解决冲突: 解决冲突后 add 更改的文件git add 无需 commit, 继续 rebasegit rebase --continuegit rebase还有一些其他的操作, ...

June 25, 2019 · 1 min · jiezi

git-分支操作

Git分支操作推荐在完成“git从零到推送到远端”之后再进行分支的学习现在我们进行分支操作,多人协作会有很多次的重复提交,所以要进行分支管理,一般master分支是主分支,一般不会在此分支进行开发,我所知道项目分支有主分支(master)、开发分支(dev),功能分支(Feature),我们现在创建一个新分支,如果以后要用其他分支,可以继续创建创建+切换分支: git checkout -b <name> 查看分支: git branch 现在我们做一些修改:将ss.txt改为ss.html并添加html代码。查看修改: Git add . 提交所有更改Git commit -m “说明” 提交暂存库到本地Git push -u origin dev 提交到远端 远端已经有了两个分支 master dev 现在我们把本地的分支切换到master,如果你打开以前创建的git本地仓库目录(文件夹),会发现ss.html文件变成了ss.txt,将在dev中的修改添加到master,需要进行分支合并。 合并分支: git merge <name> 我们查看现在的分支:git branch 现在dev分支已经用不到了,我们删除dev分支。删除分支: git branch -d <name>将合并后的master分支提交到github Git push -u origin master 如有疑问可在留言区,留言,若有错误,也敬请指正。谢谢!

June 24, 2019 · 1 min · jiezi

Npm-Git

Gitgit addgit commitgit pushgit pullgit diff // 查看本地文件修改记录git revertgit reset Npmnpm installnpm run

June 24, 2019 · 1 min · jiezi

记录下git1的使用

记录下多人协作中常用的git命令Q: fatal: refusing to merge unrelated histories// (拒绝合并不相关的分支)// 解决办法: git pull origin master --allow-unrelated-histories命令集合 // 查看本地是否有关联的远程分支 git remote -v // 如果本地没有关联任何远程分支 git remote add origin xxxxx git push origin master 推送内容到远程master分支上 // 解除与远程关联的分支 git remote remove origin 通过git log查看版本演变git log --all -n2 --oneline --graphgit help ---web --log // 网页打开查看log相关用户说明gitk打开图形化git界面删除分支 git branch -al // 查看所有分支 git push origin --delete charpeter6 // 远程删除charpeter6分支 git branch -d charpeter1 // 删除本地 tree,blob,commit三者之间的关系find .git/objects -type f 查看.git/objects文件夹下是否还有其他文件git stash储藏修改 git stash // 储藏本次修改 git stash pop 弹出最近一次的储藏修改, 并且删除stash储藏区的记录, git stash apply 弹出最近一次修改,但不会删除stash储藏区的记录 git stash list 查看储藏区的记录 git stash clear 清楚所有储存 git stash drop stash@{0} 移除制定储存 git stash show stash@{0} 查看某次储藏的区别 git stash branch testchanges 如果你想用更方便的方法来重新检验你储藏的变更,你可以运行 git stash branch,这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。

June 23, 2019 · 1 min · jiezi

用工具思路来规范化-git-commit-message

为什么要规范 Git Commit Message发生问题快速识别问题代码commit和代码建立联系,和相关prd、bug予以关联。如何写出规范化的 Git Commit Message选用当前业界内应用比较广泛的 Angular Git Commit Guidelines <type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>type:commit的类型:feat fix refactor docs style test chorescope:commit 影响的范围, 比如: route, component, utils, build...subject:commit 的概述 以动词开头,使用第一人称现在时,比如change,而不是changed或changes第一个字母小写(可以使用中文)结尾没有符号body:commit 具体修改内容, 可以分为多行footer:一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接项目使用参考步骤1.Commitizen: 替代你的 git commitcommitizen/cz-cli, 我们需要借助它提供的 git cz 命令替代我们的 git commit 命令, 帮助我们生成符合规范的 commit message. 除此之外, 我们还需要为 commitizen 指定一个 Adapter 比如: cz-conventional-changelog (一个符合 Angular团队规范的 preset). 使得 commitizen 按照我们指定的规范帮助我们生成 commit message. yarn add --dev commitizen cz-conventional-changelogpackage.json中配置: ...

June 21, 2019 · 1 min · jiezi

持续集成之gitlabciyml篇

在介绍.gitlab-ci.yml之前,我们先看几个概念: GitLab Runner一般来说,构建任务都会占用很多的系统资源 (譬如编译代码),而 GitLab CI 又是 GitLab 的一部分,如果由 GitLab CI 来运行构建任务的话,在执行构建任务的时候,GitLab 的性能会大幅下降。 GitLab CI 最大的作用是管理各个项目的构建状态,因此,运行构建任务这种浪费资源的事情就交给 GitLab Runner 来做啦。因为 GitLab Runner 可以安装到不同的机器上,所以在构建任务运行期间并不会影响到 GitLab 的性能。 GitLab Runner的安装特别简单,官网有各平台的安装方法或安装包,此处不再赘述。 注册打开GitLab 中的项目页面,在项目设置中找到 runners在runner运行的机器上,用命令行注册,比如:gitlab-runner register --name="XX" --url="https://git.xx.com/" --token="XXX" --executor="shell" 按照提示一步一步安装就可以了。其中,executor可以是多种类型,简单的话可以选shell。有熟悉docker的可以使用docker。 配置文件在/etc/gitlab-runner/config.toml 配置项类似下面,可能需要手动添加builds_dir和cache_dir这两个变量,再重启服务 [[runners]] name = "216XX" url = "https://git.XX.com/" token = "XX" executor = "shell" builds_dir = "/home/gitlab-runner/builds" cache_dir = "/home/gitlab-runner/cache" [runners.cache]常见命令 sudo gitlab-runner list 查看各个 Runner 的状态 sudo gitlab-runner stop 停止服务 sudo gitlab-runner start 启动服务 sudo gitlab-runner restart 重启服务StagesStages 表示构建阶段,说白了就是上面提到的流程。默认有3个stages:build, test, deploy。我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点: ...

June 20, 2019 · 3 min · jiezi

git-重命名远程分支名

开发的时候手一抖,把新建的分支名字单词给写错了并且已推送到了远程,有洁癖的我绝对不能忍,那就赶紧改掉吧。照着网上的教程操作了一遍,果然没错,现总结给大家。比如,把远程的test-branch改成new-test-branch。 总结了一下,可分为三步骤:删除远程分支git push --delete origin test-branch修改本地分支名git branch -m test-branch new-test-branch推送本地分支git push origin new-test-branch具体操作图如下:1、git branch -r 先查看远程分支,看到远程确实存在test-branch分支 2、删除远程分支 git branch -r 看到远程已没有test-branch分支 但是本地的分支还没有删除,所以git branch -a 看到本地还有test-branch分支: 3、修改本地分支名字 git branch -a 可以看到本地的分支名字已经改了 git branch -r 查看远程还没有改过名字的分支 4、推送改过名字的本地分支: git branch -r查看远程已经是改过名字的分支啦

June 20, 2019 · 1 min · jiezi

小团队适用的gitworkflow

主流程 涉及分支master分支:主干分支,用于发布到生成环境,master分支上的commit源自于release分支和hotfix分支的合并,每个commit都应该有相应的tag。develop分支:主开发分支,feature分支和release分支都是基于该分支进行,所有开发经过code review后都会应用到该分支。feature分支:开发新功能使用的分支,它从develop分支切出,并最终将会合并到develop分支。feature分支的命名规范为:feature-YYYYMMDD-特性(以下划线分割),例:feature-20180701-xxxrelease分支:发布分支,当完成某个里程碑的开发时,需要发布版本。这是从develop分支切出release分支,进行发布。针对发布后接收到的反馈,在该release分支进行bugfix,当该分支稳定时,分别合并到master和develop分支,之后删除该release分支。release分支的命名规范为:release-版本号,例:release-1.0.0hotfix分支:针对线上版本进行bugfix,然后分别合并到master和develop分支,hotfix分支的命名规范为:hotfix-bug, 例:hotfix-table_height_fixGit flow流程开发新分支建立新分支 - feature分支 git checkout develop // 切换到develop分支 git pull // 与远程分支同步develop git checkout -b feature-20180701-xxx// 建立新分支,进行开发 将新分支推到远程 git checkout develop // 切换到develop分支 git pull // 与远程分支同步develop git checkout feature-20180701-xxxx // 切换到你的开发分支 git rebase develop // 基于最新的develop分支进行代码合并,解决冲突 git push origin feature-20180701-xxx // 将你的分支推向远程 pull request 去gitlab发起一个针对develop分支的pull request 需了解: git rebase vs git merge ?代码冲突如何解决 ?如何发起一个pull request?发布建立release分支 git checkout develop // 切换到develop分支 git pull // 与远程分支同步develop ...

June 20, 2019 · 1 min · jiezi

flutter的入门实践到可开发

flutter的入门记录前言:flutter 的入门demo 已经写好一个星期了,只不过一直都没有整理出博客来。收拾好心情,来整理一下。继上一篇关于react-native-wx的介绍,是仿照微信界面ui,因为作为前端开发,有一定的js 基础,所有写起RN来,也不是很吃力。但是这个flutter 用的是一个新的语言 dart作为开发语言,没有学习这个语言,但是不要怕,有开发文档,一切都没有那么难。这个flutter demo,虽然已经写了一个初步的demo,但是你要是问我,这个dart里面的具体的东西,我直言说,‘不会’(因为没有具体去学习这个语言,回过头来说,若深入flutter,必学dart),我一路就是对着开发文档和其他参考资料一路"CV"过来。不禁想起了这个图片~ 话不多说,也将继续参考微信界面ui开发,项目名称为 flutter-wx,为了不增加这个入门体验demo的复杂度,只做了几个基本功能页面。项目地址: flutter-wx,欢迎查看!下面截图如下:文章内,图片很多,占据了一定的篇幅。班门弄斧之作,若有大神见到,敬请指教,有不对不合理之处,敬请指出!我是迩伶贰! 1. 环境准备以ios 系统为例。安装xcode,这里主要使用的是xcode里面的ios模拟器,笔者不太喜欢用xcode,如何安装,这里不做赘述;使用flutter镜像编辑 .bash_profile, 往后追加以下,export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn获取Flutter SDKhttps://flutter.dev/docs/deve...解压SDK 压缩包,将路径写入 .bash_profilesource ~/.bash_profile检查 flutter 环境flutter doctor上图看出,flutter 需要的环境有的具有,有的不具有,不同的操作系统需要配备不同的软件环境,我们这里是mac,用的是Xcode,因此,我们不需要安装Android Studio,忽略第一条,按照第二条提示的安装环境; 2. 软件安装安装编辑器vscode,这里使用vscode,安装vscode 插件flutter3. 初始化项目打开vscode, command+shift+p; 初始化之后,如下 debugger 模式下,跑起来: 4. 修改项目 新建文件夹 page, utils, page 下新建多个文件,一个文件表示一个页面,utils 为工具函数, main.dart 为项目的主入口。 5. 添砖加瓦-- 组件封装网络请求封装: 在utils 文件夹新建文件 HttpRequest.dart, 代码写入:import 'package:dio/dio.dart';import 'dart:async';/* * 封装 restful 请求 * * GET、POST、DELETE、PATCH * 主要作用为统一处理相关事务: * - 统一处理请求前缀; * - 统一打印请求信息; * - 统一打印响应信息; * - 统一打印报错信息; */class HttpUtils { /// global dio object static Dio dio; /// default options static const String API_PREFIX = 'http://18.10.1.115:4000'; // static const String API_PREFIX = 'http://api.wtodd.wang:4000'; static const int CONNECT_TIMEOUT = 10000; static const int RECEIVE_TIMEOUT = 3000; /// http request methods static const String GET = 'get'; static const String POST = 'post'; static const String PUT = 'put'; static const String PATCH = 'patch'; static const String DELETE = 'delete'; /// request method static Future<Map> request ( String url, { data, method }) async { data = data ?? {}; method = method ?? 'GET'; /// restful 请求处理 data.forEach((key, value) { if (url.indexOf(key) != -1) { url = url.replaceAll(':$key', value.toString()); } }); /// 打印请求相关信息:请求地址、请求方式、请求参数 print('请求地址:【' + method + ' ' + url + '】'); print('请求参数:' + data.toString()); Dio dio = createInstance(); var result; try { Response response = await dio.request(url, data: data, options: new Options(method: method)); result = response.data; /// 打印响应相关信息 print('响应数据:' + response.toString()); } on DioError catch (e) { /// 打印请求失败相关信息 print('请求出错:' + e.toString()); } return result; } /// 创建 dio 实例对象 static Dio createInstance () { if (dio == null) { /// 全局属性:请求前缀、连接超时时间、响应超时时间 BaseOptions options = new BaseOptions( baseUrl: API_PREFIX, connectTimeout: CONNECT_TIMEOUT, receiveTimeout: RECEIVE_TIMEOUT, ); dio = new Dio(options); } return dio; } /// 清空 dio 对象 static clear () { dio = null; }}调用:请求类型封装 ...

June 20, 2019 · 2 min · jiezi

Git-仓库下如何通过-diff-功能进行差异比对

1. 背景Git 作为一种分布式版本管理工具,已经越来越普及了,绝大部分公司都使用 Git 进行代码的版本管理,甚至是文档的版本管理。包括一些 wiki 平台,底层也使用了 Git 进行版本管理,提供了查看文档修改记录、多版本比对、甚至版本回退等一系列功能。 在使用 Git 的日常中,有这么一种场景,相信很多开发者都遇到过,就是差异比对。如果是还未提交的代码与已提交代码的差异,那么在工作区或者暂存区我们就可以看到修改的内容。如果是比对两个分支、两个 tag、甚至两个不同的 commit 之间的代码差异呢,除了拷贝一份代码出来,使用比对工具进行比对之外,还有没有其他的办法呢,所幸 Git 已经为我们提供了这么一个差异比对功能:diff。 什么是 diff:diff 就是目标文本和源文本之间的区别,或者说是将目标文本变成源文本所需要的一系列操作。Git diff 使用的算法默认是 Myers,一个好的算法可以为我们产生最简短最直观的差异,对 Myers 算法感兴趣的同学可以通过这篇文章了解下:Git 是怎样生成 diff 的:Myers 算法,本文主要讲的是如何查看 diff。 2. 方案2.1 SourceTree 查看差异 SourceTree 作为业界有名的 Git 版本管理 GUI 工具,它不仅提供了版本管理功能,还为用户提供了非常友好的界面,使用 SourceTree 不仅可以查看代码提交的历史记录,分支路径,还可以直观快捷的查看两个不同版本之间的差异。 作为例子,首先在本地创建一个文件夹,在该文件夹路径下,创建一个 Git 仓库。操作如下: $ cd /{path}/DiffTest$ git init这样一来,文件夹 DiffTest 下的所有文件的增删改重命名等各种变更操作都会被纳入版本管理中。接下来我在路径下陆续新增文本文件 readme.md、main.c,二进制文件 heart.png、dove.png,并分多次提交。然后对该路径下的文件进行移动、删除、重命名、内容修改等操作,也分多次提交。提交记录如以下 SourceTree 截图所示: 每一行代表了一个提交记录,“描述”一栏是提交时写的 commit message,“提交”那一栏的十六进制数字代表了这个 commit 的 hash 值,你可以把它当成 commit 的 ID。 ...

June 19, 2019 · 3 min · jiezi

Git-flow

Git flow集中式工作流 功能分支工作流 Gitfow工作流 根据Vincent Driessen的文章描述,git flow 的工作流程图如下: git flow 的主要分支有两个,master和trunk。这两个分支是长期维护的,并且这两个分支的代码应该是同步的。另外使用其他的临时性分支来进行项目的开发维护。 我们自己的流程与上图提到的流程略有不同。以下是详细的描述: 1. master 主分支master分支具有所有的历史版本。主要用于版本的管理。每一次发版之后,都会基于此次发版在master上建立一个tag,用于版本的跟踪。master 上的代码永远是稳定的。不直接向master push 代码。2. trunk 功能集成分支trunk分支主要用于开发管理,作为功能的集成分支。当有新的功能需求时,从trunk 分支检出一个功能分支进行开发。 3. 临时性分支dev-release-hotfix-test-4. 测试(test)分支 & 功能开发(dev)分支在新建功能分支之前,需要先创建一个上游的test分支。基于trunk创建并检出一个新的分支,作为新功能开发的测试分支。同时再基于test分支创建一个功能开发分支。 测试分支从trunk分支检出基于test分支创建功能开发分支。不直接在test分支上做提交。test分支测试完毕之后上线,从test 合并回trunk分支。test分支为保护分支,从功能分支合并到test分支需要做code review。 推荐命名规范:test-[功能模块名称] # 如果以这种方式检出,需要提交到远程仓库,并在gitlab上设置为保护分支,# 建议直接从gitlab上创建并检出分支。$git checkout -b test-tradeEntry trunk在创建测试分支的时候,需要设置为保护分支,建议从gitlab直接创建,并设置为保护分支。然后再checkout 点击跳转分支管理页面 点击创建新分支 选择新建的分支 打开新分支的设置页面 设置分支为保护分支 与此同时,从测试分支检出功能开发分支(dev): 功能分支从 test 分支检出必须合并回test命名避免使用 master, trunk, release-, or hotfix- 。 推荐命名规范:dev-[功能模块名称] # 也可以像创建test分支一样在gitlab上创建功能分支。如果使用命令行的方式则进行如下的操作$ git checkout test-tradeEntry$ git checkout -b dev-tradeEntry test-tradeEntry# 同时把在本地创建的分支推送到远程仓库$ git push --set-upstream origin dev-tradeEntry此时开发的分支就建立好了。 我们在本地开始开发,如果是多人协同进行一个功能的开发的话,建议再基于dev-tradeEntry在本地检出自己开发的分支进行开发feature-tradeEntry-lsy,然后再合并到dev-tradeEntry分支上。 ...

June 17, 2019 · 2 min · jiezi

git使用总结

一、安装git 1.在官网下载安装包,直接安装,无需其他配置2.安装成功后,在开始菜单或者点击鼠标右键,找到git bash,打开会看到像命令行工具一样的界面3.执行以下命令,设置用户名和邮箱地址git config --global user.name "Your Name"git config --global user.email "email@example.com" 二、常用命令 1.在工作目录执行以下命令,创建git仓库git init 2.执行以下命令,将文件添加到git仓库(.表示所有文件,也可以单独添加某个文件)git add . or 文件目录 3.执行以下命令,将文件提交到git仓库(add可以执行多次添加,commit会统一提交)git commit -m '提交描述文字' 4.执行以下命令,查看仓库当前状态git status 5.执行以下命令,查看某一个具体修改了什么内容git diff <file> 6.执行以下命令,显示从最近到最远的提交日志git log 7.回滚版本(^:上一个版本,^^:上上一个版本,~10:之前第10个版本)git reset --hard HEAD^ 8.回滚之后恢复之前版本git reset --hard 之前版本的id 9.查看每一次操作记录git reflog 10.丢弃工作区的修改git checkout -- <file> 11.把暂存区的修改撤销掉(unstage),重新放回工作区git reset HEAD <file> 12.删除文件git rm <file> 13.用版本库中的文件替换工作区的文件,或者恢复误删文件git checkout -- <file> 14.将本地git仓库关联远程仓库git remote add origin https://github.com/jaxlix/ces... 15.将本地git仓库提交到远程仓库git push -u origin master ...

June 17, 2019 · 1 min · jiezi

DevOps-基于Walle的小型持续集成实战三Docker与Gitlab

还在按照mysql安装教程一步一步配置服务配置账户吗?还在为每开一个新环境重新配置这些服务感到苦恼吗?使用Docker,服务快速构建部署。解决你的研发时间,早点下班~现代技术,还不会docker你就落后了。Docker百度百科定义 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口比较全面的学习网站:https://www.runoob.com/docker... 以下资料来源于www.runoob.com,更多资料请直接访问该网站,侵删。Docker 教程 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。 谁适合阅读本教程?本教程适合运维工程师及后端开发人员,通过本教程你可以一步一步了解 Docker 的使用。 阅读本教程前,您需要了解的知识在阅读本教程前,你需要掌握 Linux 的常用命令。你可以通过本站的 Linux 教程 来学习相关命令。 Docker的应用场景Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。Docker 的优点1、简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。2、避免选择恐惧症:如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。3、节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。相关链接Docker 官网:http://www.docker.com Github Docker 源码:https://github.com/docker/docker ...

June 17, 2019 · 2 min · jiezi