Git

分类下相关文章

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 的 ...

阅读全文...

从 Git 仓库中删除指定 commit

最近接了一个客户的项目,是用 ecshop 写的,长期没有人维护,现在想做改版。 ecshop 所用的版本是 2.7.3, 只支持 PHP 5.2 (ecshop 3.0 支持了 PHP 5.6)。在我的开发机 Ubuntu 16.04 上,使用 phpbrew 死活装不上 PHP 5.2;实际上可以,主要是时间紧,下午还要和客户见面,我实在不想花时间去打 patch。于是就在同事用 phpstudy 搭建的测试环境里直接调试、提交修改了。 问题出现了。在我开发机上,实际上有一点改动,但是与测试环境的代码 merge 之后,导致测试环境无法运行。明显是我开发机改错了东西。现在想把这次 merg ...

阅读全文...

coding.net 无法识别 pub key 的问题

我在几台服务器上都遇到了这个问题,不知道什么原因,coding.net 就是识别不了本机生成的 pub key. 但是同样的 key 在 bitbucket 和 github 上都没有问题。 一种简单粗暴的方式是 git config --global credential.helper store 但是这是一种非常不安全的方式,因为账号和密码会明文保存到用户根目录下的文件 ~/.git-credentials 中。 Using this helper will store your passwords unencrypted on disk, protected only by file ...

阅读全文...

HTTP 访问 git server 时的免密码操作方法

有时必须采用 http 协议操作,提交代码时异常痛苦。介绍下免密码操作的方法。 简易但不安全的方法 用户根目录下新建一个 .netrc 文件, 相关参数改成自己的即可。 machine git-server-ip-or-host login your-accout password your-password protocol http 控制权限,防止偷窥 chmod 0600 .netrc 更安全的方法 使用 gpg 对 .netrc 进行加密。 生产一个 gpg key gpg --gen-key 按照提示输入即可,最后一步可能耗时很长,静候几分钟即可。 进行加密 gpg -e ...

阅读全文...

拉取 Git 远端分支

例如,我要拉取远端其他小伙伴提交的新分支 test git fetch git checkout -b test origin/test 参考 Checkout remote Git branch ...

阅读全文...

通过代理访问 Git 仓库

背景 近期 BitBucket 被墙,无法推拉我的私有项目代码 解决方法 通过 GoAgent 代理访问 BitBucket Git 仓库. 假设 GoAgent 本地代理的端口号是 8087 (默认) 具体配置: 在 .git/conf 文件里添加 [http] proxy = http://127.0.0.1:8087 同时修改 [remote "origin"] url = ssh://git@bitbucket.org/<username>/<project>.git 为 [remote "origin"] ...

阅读全文...

近期节日

2018年11月17日 国际大学生节
2018年11月20日 国际儿童日
2018年11月21日 世界问候日
2018年11月22日 小雪
2018年11月22日 感恩节
2018年12月01日 世界艾滋病日
2018年12月03日 国际残疾人日
2018年12月07日 大雪
2018年12月09日 "一二九"运动纪念日
2018年12月09日 世界足球日
2018年12月10日 世界人权日
2018年12月12日 西安事变纪念日
查看更多节日