Git

分类下相关文章

快速将两个代码文件目录合并

背景 我这里的项目代码有 Git 版本控制,但是客户那里没有。所以经常会有这种临时需求,客户会把代码打包发我,我这里进行修改,再打包发回去。 所以,我需要将客户给我的代码包,同我本地的代码进行合并。但是这个过程总不能手动一个个文件进行对比吧。 快速合并 linux 下执行 rsync -avh --progress my_code/src/ client_code/src/ 参数说明: -a archive 模式,将第一个目录内所有的内容都复制到第二个目录 -v verbose 输出 -h human readable --progress 显示进度 之前一直以为 rsync 只能做远程 ...

阅读全文...

Git 对比两个版本间某一个文件的变化

先列出两个版本间发生更改的文件列表 git diff commit1 commit2 --stat --name-only 查看指定文件在两个版本间发生的变更 git diff commit1 commit2 -- somefile.js 如果感觉这种显示不够直观,可以使用 vimdiff 查看 git difftool commit1 commit2 -- somefile.js ...

阅读全文...

语义化版本号 SemVer

今天在看 golang 文档时看到这样一句话 The go.mod file was updated to include explicit versions for your dependencies, where v1.5.2 here is a semver tag What's semver tag ? semver 是 Semantic Versioning 的缩写,即语义化版本号。像 v1.5.2 就是语义化版本号标签。 语义化版本号的版本格式 以 v1.5.2 为例,1.5.2 按照英文句号分割为三部分: 主版本号.次版本号.修订号 主版本号:是你对项目做了不兼容的 API ...

阅读全文...

微软给力!Github 支持无限量免费私有仓库了

Github 官方博客声明 https://blog.github.com/2019-01-07-new-year-new-github/ 之前只有付费用户才能创建私有仓库,现在可以免费无限量创建私有仓库了。 但是,有一个限制,免费版私有仓库只支持三名协作者;要加更多协作者需要付费。 对于个人开发者来说,这已经足够了。 看来微软真是不差钱。希望能把 Visual Studio 的默认 Git 仓库切换为 Github 的。 ...

阅读全文...

Git 统计历史提交的 Commit 总数

命令如下: > git rev-list --all --count 282 可以看到,当前项目的历史提交总数为 282 次。包含了所有分支中的提交。 alias 这个命令太复杂了,很难记住。可以定义一个 alias: 打开 ~/.gitconfig 在 alias 部分增加一行配置 [alias] count = rev-list --all --count 保存。然后就可以使用简写命令了。 > git count 282 ...

阅读全文...

git push 基于 detached HEAD 上的修改

在服务器上调试代码时,做了一件非常愚蠢的事情。由于 revert 失误,产生了一个错误的 commit,为了不影响同事的接口调用,我 checkout 到了一个历史版本上。 然后,我开始不断 revert 有问题的 commit。终于,把代码恢复到了一个正常的状态。 但是,当我想 git push 这些 revert 改动时。 git push origin master 发现无论如何都提交不到 git 仓库,显示并没有 commit 需要提交到 remote。 git status HEAD detached from fa4065e git status 之后,我才意识到,我原来是在一 ...

阅读全文...

通过 git diff 生成 patch 补丁

基于同一套代码,做了两套系统,一套英文的,一套中文的。最近改了一个功能,在英文系统上改的,改动很大,涉及的文件众多。而这个功能验证通过之后,需要在中文系统上再实现一遍。非常痛苦。。。 于是想到是否可以通过 git diff 为英文系统的修改生成一个 patch 补丁,然后在中文系统上应用这个 patch。Google 了一下,还真是可以! Git 真是无比强大! Git 操作 以未提交的修改为例 git diff > feature_a.patch 但是,如果有新增的文件,并不在 git 管理之内 git diff --cached > feature_a.patch 如果还包 ...

阅读全文...

android 手机上阅读编写代码的最佳 app 组合 Pocket Git + QuickEdit

日常生活中有大量的零碎时间,非常适合阅读代码片段,或者修改小的 bug。但是这种零碎时间往往是电脑不在身边的时候,例如 中午出去觅食的等待上餐时间 陪孩子去医院体检的排队时间 晚上干完家务疲惫的躺着沙发上的时间 往往五分钟就能看完一段逻辑,或者解决一个 bug,这比翻看毫无价值的新闻要愉快得多。 所以今天下午趁孙心然午睡的间隙,在 google play 上找了两个 android 上管理编辑代码的 app。 android 上的 git 仓库管理 Pocket Git 用起来非常简单,看图标基本就能轻松上手。基本的 git 功能都有,commit push 毫无障碍。 android ...

阅读全文...

github 上同步 forked project

之前 fork 过一个 github 上的项目,现在又想给这个项目 pull request,发现 fork 的代码已经很旧了,需要同步一下源项目的代码。 具体操作如下 git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git git fetch upstream git merge upstream/master ...

阅读全文...

git 查看指定文件的修改历史记录

使用 git 经常遇到这样的使用场景 查看一个文件被哪些兄弟修改过 查看一个文件近期是否发生改动 查看一个文件的历史修改记录列表 git log <file_name> 会列出 commit 的概要列表 以 weex hacknews 为例 $ git log src/views/ArticleView.vue commit 57448f63785b3e4fe43f88b56969215c7b2325be Author: Hanks <zhanghan.me@gmail.com> Date: Sat Dec 31 03:15:53 2016 +0800 ...

阅读全文...

花式使用 proxy 访问 Github - Github No.1, Proxy No.2, XXX No.7

转投 Sage 开发 wordpress 模板,初始化 Sage 代码目录折腾了我半天时间。 遇到的第一个问题是, composer 无法拉取 dev-master 的代码 $ composer create-project roots/sage your-theme-name dev-master 由于我使用的是 composer 国内镜像,开始怀疑是国内镜像有问题,然后清空了 ~/.composer 切换为官方镜像,依然没有响应。 但是拉取 release 版本,却一切正常 $ composer create-project roots/sage your-theme-name 我猜测 ...

阅读全文...

使用 git-ftp 将 git 两次提交发生变化的文件上传到服务器

首先公网使用 FTP 部署程序是非常不科学的一种方式 FTP 这种协议本身不安全 服务器上的代码不方便回滚 只适合 PHP 这种不需要重启的服务 但是没有办法,客户只给开放了 FTP 权限。我实在懒得说服对方。 使用 FileZilla 手动一个一个上传代码文件是一件让人崩溃的事情 如果一次特性发布涉及的文件过多,超过10个。一是容易遗漏文件,二是文件分布于多个目录,点击查找目录异常耗时 多个文件存在依赖关系时,如果手慢,发布了其中一个文件,但是其他文件在10秒钟之后才上传,那么用户就遭殃了,只能在这10秒钟内笑看错误页面 所以,自动化部署是必然的选择。原本打算自己写一个 shell ...

阅读全文...

Git 清理远程废弃分支

我有清理本地分支的习惯,基本每个分支开发结束,代码合并入 master 之后,都会立即将本地分支清除。 git branch -d branch_name 但是经常忘了清除远端分支。。。使用 Git 如果不定期清理 remote 分支的话,就会变成一座屎山。其实不经常清理远端分支的重要原因是,我记不住对应的语法 ^_^ 查了一下,git 1.7.0 之后的语法相对好记一些 (目前版本是 2.9.3) git push origin --delete branch_name 之前版本的做法是 git push origin :branch_name error: dst refspec b ...

阅读全文...

使 git 不再跟踪某一个文件

例如,配置文件需要从 git 仓库中剔除,但是又需要本地保留。 危险的做法,强烈不推荐 (未成年人请在家长陪同下尝试) git rm --cached config.php 即  git rm --cached <file> 在一个分支下开发,这种做法是没有问题的。即,如果在 master 分支里,使用如上操作之后,config.php 就从 git 管理中剔除了,但是仍然存在于硬盘上。并不会影响到本地开发环境的正常调试。 但是,但是,但是。。。如果同时满足以下条件的情况下,你就准备哭吧 多分支同时存在 config.php 文件。例如,master 分支,dev 分支都有 ...

阅读全文...

使用 git 列出两次发布间发生变化的文件列表

客户的 ecshop 只给我们提供了 FTP 的账号,也就是说只能通过 FTP 来更新代码。所以,每次上传都得明确具体有哪些文件发生了更改,需要更新。 这有点像腾讯内部提测需要给测试同学提供文件更新列表一样。还好用 git 可以轻松搞定。 每次更新前打 tag 打 tag 的目的是标记最后一次通过 FTP 更新的 commit. 例如 git tag -a v1.0 git tag -a v2.0 tips: git push 默认不会将 tags 推送到远端服务器,需要主动推送。 git push origin --tags 此外,最好是使用版本号最为 tag, 这样方便知道 tag 的 ...

阅读全文...

近期节日

2019年05月20日 全国助残日
2019年05月21日 小满
2019年05月30日 五卅运动纪念
2019年05月31日 世界无烟日
2019年06月01日 六一儿童节
2019年06月05日 世界环境日
2019年06月06日 芒种
2019年06月06日 全国爱眼日
2019年06月07日 端午节
2019年06月11日 中国人口日
2019年06月16日 父亲节
2019年06月20日 世界难民日
查看更多节日