Category - Git

2023-02-15 09:27:48    15    0    0

git submodule
子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

比如我们想抽象出一个组件库供多个项目使用

git submodule add <子模块git地址> <存放的文件名>

会生成: .gitmodules 和 子模块文件夹

.gitmodules 文件保存了项目 URL 与已经拉取的本地目录之间的映射,这样就能知道子模块在哪获取。如果有多个子模块,该文件中就会有多条记录。

子模块文件夹只存子项目的commit id,就能指定到对于的git header上, 父项目的git并不会记录Submodule的文件变动,它是按照commitid指定Submodule的git header

当你不在那个目录中时,Git 并不会跟踪它的内容, 而是将它看作子模块仓库中的某个具体的提交。

注意的是,这两个文件也像 .gitignore 文件一样受到(通过)版本控制。 它会和该项目的其他部分一同被拉取推送。

克隆含有子模块的项目
克隆一个含有子模块的项目时,默认会包含该子模块目录,但其中还没有任何文件,是空目录。 必须运行:

git submodule init 用来初始化本地配置文件

git submodule update 则从该项目中抓取所有数据并检出父项目中列出的合适的提交。

合成一步就是: git submodule update --init

如果还要初始化、抓取并检出任何嵌套的子模块:git submodule update --init --recursive

或者在克隆的时候加上参数: git clone --recurse-submodules

它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。

修改submodule
进入submodule目录里修改后add 、commit 、push到远程服务器,然后要回到父目录,提交submodule在父项目中的改动(submodule commit id 会更新),再push

坑:子模块的分支默认不是master,也不会切到任何branch

2022-12-14 12:37:38    3    0    0
  • 只需进入项目文件夹下的 .git文件中,显示隐藏文件夹删除index.lock文件即可。
2022-06-08 02:16:12    4    0    0
  1. git clone --bare # 旧仓库地址
  2. git push --mirror # 新仓库地址
2021-09-02 09:13:21    21    0    0

忽略commit message, 后面加上--no-edit

git pull --no-edit
git merge dev --no-edit

2019-11-15 11:00:45    68    0    0
### git仓库: git@服务器地址:路径/xxxx.git **** ## **克隆分支代码** > 选择 `克隆` -> 勾选`分支` -> 填写`分支`名称 ## **合并代码** > 1. **直接合并(merge)**, 注意: `一般是分支和分支间的合并, 如果只想合并一个分支某一个commit的话, 默认会把合并的commit下面所有的commit都合并了`. 2. *
2019-11-15 11:00:44    8    0    0

常用命令图示


拉取指定分支的代码

  1. git clone -b 分支 仓库地址