Contents
Updated on 2021-08-14
1 Git设置代理
由于网络的原因, 有时无法直接提交本地代码到Github上, 这个时候需要设置代理
1.1 查看当前网络
|
|
1.2 设置代理
|
|
1.3 删除代理
如果不想使用代理则可以通过以下方式删除
|
|
2 同步两个远程仓库
我们经常会遇到这样的场景, fork一个开源项目, 然后自己维护。 但如何将开源项目的更新同步到自己的repo, 这里就涉及两个仓库的同步问题。
思路
- 为本地仓库添加两个远程仓库, 这样既可以从原仓库更新又便于push到新的仓中
- 从原仓库更新代码到本地
- 再把更新后的本地分支push到自己新的远程项目仓库
2.1 添加远程仓库
为了关联之前的repo, 我们需要将之前fork的repo信息添加到本地, 并指定原fork repo仓库的名字为: upstream
|
|
查看远程仓库信息
|
|
2.2 更新源
从原fork项目中更新代码
|
|
源仓库代码和本地代码可能有冲突, 请先修改后
commit
, 然后再进行push
到新的远程仓库2.2 推送到新的远程仓库
|
|
3 repo作为另一个repo的子模块
有时候我们的repo会依赖于另外一个repo, 这个时候需要通过submodule引入repo, 而非直接将另外一个repo代码直接copy过来。直接复制过来会存在以下问题:
- 增加代码量
- 依赖的repo更新比较麻烦
- 修改依赖repo的代码, 同步到原仓库比较麻烦
Git Submodule 允许一个git仓库, 作为另一个git仓库的子目录, 并且保持父项目和子项目相互独立。
3.1 添加 submodule 信息
示例, 在已有repo仓库中添加submodule uBlogger
到子目录themes/uBlogger
|
|
原repo下会增加.gitmodules文件, 示例如下:
|
|
- 远程仓库不会包含submodule代码, 仅仅包含.gitmodules相关信息
- 我们在clone远程仓库时, 需要clone父项目后, 初始化submodule
3.2 checkout
克隆一个包含子仓库的仓库目录, 并不会clone下子仓库的文件, 只是会克隆下.gitmodule描述文件。通过以下命令进行初始化, 并检出相关代码
|
|
3.3 设置日志
diff 功能默认并不会显示submodule下的信息, 需要额外设置
|
|
可以方便的显示子repo的日志信息, 不需要切换到子目录里进行查看
|
|
3.3 更新submodule
|
|
3.4 commit/push
父项目存储了它依赖的submodule项目的版本号信息而已, git submodule update并不会将submodule切到任何branch, 默认情况submodule的HEAD是处于游离
- 切换分支, 一定要将submodule切换到某个分支, 比如master
- 子项目, 提交修改, 并推送到远程仓库
- 父项目, 将子项目的版本号, 推送到远程仓库里
|
|
- check, 父项目push时检查子项目是否有未提交的内容
- on-demand, 尝试自动push改动的子模块
Комментарии