Techyou labs
文章RSS
评论RSS
登录
真正的爱应该超越生命的长度、心灵的宽度、 灵魂的深度
搜索
关于作者
文章分类
Default
Linux/Unix
Database
Cloud
Networking
Security
Programming
最新文章
Pulumi 新一代基础设施管理工具
装机神器-u盘启动手术刀Ventoy
使用 mergefs 创建虚拟挂载点
使用minio存储docker容器数据
Linux Mint 19/Ubuntu18 多点触摸和手势
Mint 19.2升级后若干问题
poetry, python依赖管理新军刀
docker 中运行 openwrt
Inxi:一把获取 Linux 系统信息的军刀
用hugo来写多语言文档
最新评论
renothing: 二次反向代理跟你应用程序得处理时间有关系吧?尤其是...
二次反向代理性能很差,怎么优化的?: 我也用nginx 做了个二次反向代理,但是并发连3...
hostyep: 交换链接么?目前每天保持30个左右对口IP,每月都...
yzhkpli: error while loading share...
美肤宝: 感谢分享。。。
lq: 嗯 喜欢弄得点单点
按月归档
September 2020
May 2020
September 2019
August 2019
July 2019
June 2019
May 2019
January 2019
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
April 2018
March 2018
December 2017
October 2017
September 2017
August 2017
April 2017
March 2017
February 2017
August 2016
July 2015
November 2014
September 2014
August 2014
July 2014
June 2014
July 2013
April 2013
September 2012
July 2012
May 2012
April 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
December 2009
November 2009
October 2009
September 2009
June 2009
May 2009
April 2009
March 2009
February 2009
December 2008
November 2008
September 2008
August 2008
July 2008
June 2008
常用标签
Mysql
nginx
mysql优化
linux
apache
Powered by
Typecho)))
Optimized by
EAimTY
您正在查看:标签 git 下的文章
Git worktree: 多工作目录
October 13, 2018
日常开发时经常会遇到在稳定分支发hotfix的情况,通常的解决办法是git stash暂存当前工作区内容,再checkout到需要发补丁的分支下工作,完了再切回来。大多数时候这么干没啥问题。不过如果类似node js项目或者其他有大量外部库依赖项目时就麻烦了。比如php或者golang,通常vendor目录都会git ignore。如果刚好工作分支升级了vendor下的依赖库,与即将发补丁的分支依赖库冲突,那就麻烦了,只能clone到别的目录下来做。好在git 2.5已经把这个需求内置实现。这就要介绍今天的主角:git worktree 命令: ``` git worktree add [-f] [--detach] [--checkout] [--lock] [-b
]
[
] git worktree list [--porcelain] git worktree lock [--reason
]
git worktree move
git worktree prune [-n] [-v] [--expire
] git worktree remove [-f]
git worktree unlock
```
继续阅读
git合作开发时gopath的问题
September 9, 2018
项目开发的一般流程是先fork项目,然后基于自己fork的项目开发,最后通过提交PR将自己的代码merge到上游。 这里会涉及到两个:上游仓库和自己fork的仓库,它们之间最终通过PR关联起来。 但是,由于Golang特定的GOPATH依赖,导致这种方式针对于Golang项目会有些问题。 # 常见开发流程: 1. 将项目fork自己的账户下; 2. Clone自己fork的项目到本地,并进行开发; 3. 将修改的代码push到自己fork的项目中; 4. 从fork的项目中为自己的代码创建PR; 5. 等这个PR被merge后,自己的代码才能进入上游项目。 举个例子,来演示整个过程。为描述清晰、方便,有如下约定: 上游项目为org/repo fork项目为user/repo 按照常规的Git开发流程,在本地clone的fork项目中直接go build,会存在依赖问题: Fork出来的项目在GOPATH中的路径发生了改变,但是代码中import的路径没有改变,所以没有使用fork项目中的package。 即使构建成功,但是真正使用也不是fork项目中修改的代码 有可能GOPATH中已经存在org/repo,所以按照上面的方式构建,不会提示错误。但是如果在user/repo中修改的代码,是无法生效的。 因为代码中引用的是org/repo的package,不是user/repo中修改过的package。
继续阅读
Git subtree 要不要使用 –squash 参数
October 8, 2017
#问题的产生 subtree 处理多层包含是没有问题的,因为包含进项目之后, 别人根本看不出这是一个 subtree, 所以它本质上还只是管理本地 repo 的一种方法。 使用 Git subtree 新建或更新子项目的时候,可以选用 --squash 参数, 它的作用就是把 subtree 子项目的更新记录进行合并,再合并到主项目中。 所以,在使用 --squash 参数的情况下, subtree add 或者 pull 操作的结果对应两个 commit, 一个是 Squash 了子项目的历史记录, 一个是 Merge 到主项目中。 这种做法下,主项目的历史记录看起来还是比较整齐的。 但在子项目有更新,需要 subtree pull 的时候,却经常需要处理冲突。 严重的,在每次 subtree pull 的时候都需要重复处理同样的冲突,非常烦人。 如果不使用 --squash 参数,子项目更新的时候,subtree pull 很顺利, 能够自动处理已解决过的冲突,缺点就是子项目的更新记录“污染”了主项目的。
继续阅读
git subtree使用场景
September 21, 2017
假设你有一个在线商城项目 Shop,这个项目下有个订单模块 order,这个 order 模块很通用,你在下一个团购系统 Groupon,也要用到这个 order 模块,最简单的方式就是把整个 order 模块 copy 过来。 然而,这种 copy 方式,会很难维护:order 模块修改了一个Bug,然后又要复制更新到所有用了 order 模块的项目里。 这时就需要 git subtree 来管理这个 order 模块了:把 order 模块单独作为一个 git 仓库,在需要用到 order 模块的项目,通过使用 git subtree 把 order 模块当作一个 git 项目来引入,这就解决了 order 模块的共享和维护问题。 git subtree --help 可以查看 git subtree 命令的帮助文档。 git subtree 命令中,都会用到一个参数 --prefix=
,可以简写成 -P
,本文的命令都是这样使用的。 ##git subtree add 添加项目作为子树 ``` git subtree add -P <子树名> <子仓库地址> <分支> ``` 执行以上命令后,项目下就会新创建一个名为 <子树名> 的目录。 如果提前使用 git remote add <子仓库名> <子仓库地址> 添加了子项目的远程仓库地址(建议按此方式,下文都基于此),那么也可以这样: ``` git subtree add -P <子树名> <子仓库名> <分支> ``` 以上命令可以多加一个 --squash 参数: ``` git subtree add -P <子树名> <子仓库名> <分支> --squash ``` --squash 参数含义是:把 subtree 的改动合并成一次commit,这样就不用写入子项目完整的历史记录。 ##git subtree pull 从子仓库拉取子树更新 先 fetch: ``` git fetch <子仓库名> <分支> ``` 后 pull: ``` git subtree pull -P <子树名> <子仓库名> <分支> ``` 以上命令也可以多加一个 --squash 参数: ``` git subtree pull -P <子树名> <子仓库名> <分支> --squash ``` ##git subtree push 推送子树更新到子仓库 ``` git subtree push -P <子树名> <子仓库名> <分支> ```
继续阅读
git 合并部分commit到特定分支
August 20, 2016
有时候我们希望只合并某个分支上的某次修改commit到指定的分支上,而不是全部。那么就可以使用cherry-pick命令来操作了. # 合并某个分支上的单个commit 使用git log 查看提交的信息,记住commit id. git checkout 要合并的目标分支 git cherry-pick 某个commit id // 把某个commit id的提交合并到当前分支. 例如develop分支上得某个fix修改36d7da2,要合并到release分支 ``` git checkout release git cherry-pick 36d7da2 ``` 36d7da2 就被合并到release分支,并在release中添加了新的commit(作为一个新的commit)。cherry-pick 和merge比较类似,如果git不能合并代码改动(比如遇到合并冲突),git需要你自己来解决冲突并手动添加commit。 # 合并某个分支上的一系列commits 在一些特性情况下,合并单个commit并不够,你需要合并一系列相连的commits。这种情况下就不要选择cherry-pick了,rebase 更适合。还以上例为例,假设你需要合并feature分支的commit 76cada ~62ecb3 到master分支。 首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit: ``` git checkout -b newbranch 62ecb3 ``` 然后,rebase这个新分支的commit到master(--onto master)。76cada^ 指明你想从哪个特定的commit开始。 ``` git rebase --onto master 76cada^ ``` 转自:https://blog.csdn.net/anhenzhufeng/article/details/77962943
继续阅读