注意,实际按键时只要同时按下 Alt 和 ←(或者 command 和 ←)两个键即可,不需要 + 键。是为了方便大家看到是需要按两个键才中间增加了 + 。...(2) 提交暂存、推送、拉取等功能 提交暂存、推送、拉取等功能 签出到主要是首次使用 git 命令 glone 仓库下,用 VSCode 打开后这里不会展示分支名,而是一个一个 commitid,所以要收到签出到对应的分支名...4.4.4 git 相关其他插件 GitLens 它会显示有 git 有关的所有代码提交信息,是在 sidebar 上的二叉树图标 GitLens Git Branch Warnings Git Branch..." ] branchwarnings.protectedBranches git graph 它会显示有 git 有关的所有代码提交信息,可以方便查看本地分支、远程分支、主干的 commit、push...clone 时可不需要--recursive 选项),通过 VSCode 打开后,Git (Submodule) Assistant 插件会自动识别并下载所有 submodule。
然后将选定的区块反向应用于工作树(并且如果指定了,则索引) --ignore-other-worktrees # git checkout当被通缉的裁判已经被另一个工作树签出时拒绝...--show-linear-break[=] # 当不使用--graph时,所有历史分支都会变平,这使得很难看到两个连续的提交不属于线性分支...-f, --force # 默认情况下,add拒绝创建一个新的工作树,当它 是一个分支名称并且已经被另一个工作树签出并remove拒绝删除不干净的工作树时...,从浅仓库中获取时, git fetch拒绝需要更新.git/shallow的引用 -f, --force # 当git fetch...# 按遥控器的定义,获取存储库中一组指定遥控器的更新 【submodule】 语法: git submodule [--quiet] add [<options
2.2 获取 submodule 使用 git submodule add 命令会自动拉取子工程项目代码到指定目录,但其他开发者获取主项目代码时,使用 git clone 命令是不会拉取到子项目的代码的...值得注意的是,此时主项目修改的是其依赖的子项目的版本,而非完整变更代码,即引用的子项目的 commit id。...$ git submodule update 2.3.4 子项目远程更新,主项目未更新 commit id 在多人协作开发时,主项目与子项目的开发往往是异步进行的,子项目升级后子项目远程仓库更新并告知主项目可以更新对子项目的版本依赖...由于当前主项目记录的子项目版本还未变化,因此主项目执行 git submodule update 也不会更新,此时需要从主项目主动进入子项目执行 git pull 主动拉取新版代码,回到前面的 2.3.2...submodule 的项目时,主项目获取到的是 submodule 的 commit id,然后当执行 git submodule update 时是根据这个 commit id 来拉取代码的,所以
使用git status可以看到多了两个需要提交的文件,其中.gitmodules指定submodule的主要信息,包括子模块的路径和地址信息,moduleA指定了子模块的commit id,使用git...这里需要指出父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header,所以.gitmodules和moduleA这两项是需要提交到父项目的远程仓库的...git clone project.git project3 --recursive 2.3修改子模块 修改子模块之后只对子模块的版本库产生影响,对父项目的版本库不会产生任何影响,如果父项目需要用到最新的子模块代码...,再用git status查看状态就会发现.gitmodules和moduleA这两项都已经改变了,至于.git/config,仍会记录submodule信息,但是本地使用也没发现有什么影响,如果重新从服务器克隆则...git submodule update出现此问题,是因为终端用的不是windows自带的cmd,用自带的cmd打开执行此命令即可
我使用的方案中,Git Submodules 承担着非常重要的角色。今天先给大家介绍下 Git Submodules,以后我会给大家更详细的介绍如何管理不同项目的公共依赖。为什么你值得读这篇文章?...(意思是,当你打开某个被当作 submodule 的 Git 仓库首页时,或者拉下这个仓库时,没有任何痕迹表明它是个submodule。因为父子信息不存在这里,只存在爸爸那里。)...submodule 的父子关系信息怎么存.gitmodules 文件父子关系的信息保存在主项目的 .gitmodules 文件,如果不是新加 submodule,这个文件通常不必改变了,因为信息比较固定...方法二,主项目执行git submodule update --remote [submodule文件夹相对路径]这个方法会自动拉取submodule的主分支(通常叫master或main)的最新版本。...执行git submodule update。只要不写submodule,那么就一次性检查该主项目的所有submodule,都拉下来。
的submodule npm package npm package的优势在于成熟的管理依赖机制,规范且易用,缺点是主项目只能通过package版本号获取独立模块的更新,在主项目需要与子模块联调的场景就会非常麻烦...hash相当于npm package的dependencies版本号 控制依赖项版本 想要更新主repo所依赖的子模块版本的话,提交这个commit hash变更: $ git add src/packages....关于submodules的更多用法,见7.11 Git Tools – Submodules 四.常见问题 子模块分支处于detached状态 每次执行git submodule update --remote...origin master 本地子模块缓存 当子模块repo发生迁移时,进行git submodule add可能会遇到本地缓存的问题: $ git submodule add ssh://XXX.XXX.XXX.XXX...需要先删掉原配置(第2第3步),再本地缓存的子模块信息(第1第4步): # 1.删掉git缓存及物理文件 $ git rm --cached path_to_submodule $ rm -rf path_to_submodule
使用命令git status可以看到多了两个需要提交的文件,其中.gitmodules指定submodule的主要信息,包括子模块的路径和地址信息,moduleA指定了子模块的commit id,使用git...diff可以看到这两项的内容。...需要注意的是,父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header,所以.gitmodules和moduleA这两项是需要提交到父项目的远程仓库的...例如: git clone project.git project3 --recursive 修改子模块 修改子模块之后只对子模块的版本库产生影响,对父项目的版本库不会产生任何影响,如果父项目需要用到最新的子模块代码...更新子模块 更新子模块的时候要注意子模块的分支默认是不是master分支。 方法一 先pull父项目,然后执行git submodule update,注意moduleA的分支始终不是master。
老高最近的项目用到了git的submodule,期间遇到了很多坑,比如: 如何更新submodule 如何修改并提交submodule 如何将submodule的变更在父项目中提交 在弄明白这些问题之前...我们在子模块如何改动父项目是不需要关心的,只需要把改动的版本号告诉给父项目就行。.../phpgao/CdnHelper usr/plugins/CdnHelper 这个时候如果你留意一下.gitmodules和.git/config这两个文件,应该会发现相关信息已被记录下来!...如何更新submodule 当clone项目时有子模块存在时,第一次是不会顺便clone出子模块的,需要执行一些命令: git clone xxx.git # 初始化子模块 git submodule...大家第一时间一定想到的是remove,但是git貌似没有提供类似 git submodule remove 那么easy的方法,所以我们要借助deinit。
调用方如何获取生成的接口客户端代码? 如何解决 常见的几种解决方案,煎鱼大佬已经描述得很详细了(真是头疼,Proto 代码到底放哪里?),这里不再赘述。...经过查阅资料,总结出适用于我们项目的几种方案。 方案一:api大仓+git submodule(b站) Proto文件只有一份,没有拷贝。...个人项目、单一项目可采用这种方案,企业级的就得写复杂脚本了。 方案二:api大仓+git submodule + 每个项目生成代码专有仓库 生成代码交给ci。...其他项目如何通过git submodule的方式引入 API 大仓?...API大仓体积很小的,一个项目的接口定义就几个文本文件。 2. 如何下载git submodule的代码? 3. 如何更新、提交git submodule的代码?
假如当前存在两个项目:git-main-project(主项目)、git-submodule-project(子模块)。...添加子模块 在主项目的根目录执行: git submodule add {http/ssh} 之后会在主项目的根目录生成 .gitmodules 文件,用于记录子模块在信息和子模块同名的文件夹,用于存放子模块...例如,在 git-main-project 根目录下执行: git submodule add git@github.com:ZhangDaZongWei/git-submodule-project.git...更新主项目 当更新主项目时,也要兼顾到子模块的更新: # 更新主项目,例如 git pull 但是这样只会拉取到子模块 commit 变更记录,并不会主动更新子模块,还需要执行: # 参数 --init...确保 push 子模块 有时当更改完子模块后,忘记了 push,但是在主项目更改后却 push 了,所以远程仓库的子模块未更新,导致其他人不会获取子模块的更新,可以使用以下命令防止这种情况: # 在主模块
直接添加子模块 #切换到本地项目里想添加submodule的目录下, 执行 git submodule add 命令执行完成,会在当前工程根路径下生成一个名为".gitmodules..."的文件,其中记录了子模块的信息。...克隆一个包含子模块的项目: #直接clone一个包含有submodule的项目 #递归的方式克隆整个项目 git clone --recursive 当clone项目时有子模块存在时...,第一次是不会顺便clone出子模块的,需要执行如下命令才能发现子模块被checkout出来了: #初始化本地配置文件: git submodule init #checkout出子模块的文件 git....git文件中子模块相关条目,需要手工删除 cd .git vim config (删除submodule信息) cd modules rm -rf * (要看清楚,只删除跟submodule有关的)
个人推荐选用Git子模块的方式进行开发,父级仓库依赖两个公共的子模块,子模块本身和父级仓库一同进行开发,可避免了版本问题和重复开发的问题。...而父项目以Submodule的形式包含子项目,父项目可以指定子项目header,父项目中会的提交信息包含Submodule的信息,再clone父项目的时候可以把Submodule初始化。...git submodule常用命令 查看子模块:git submodule 更新子模块: 更新项目内子模块到最新版本:git submodule update 更新子模块为远程项目的最新版本:git submodule...,Git获取到子模块的commit值发生变化,从而记录了这个Git指针的变化。...git submodule注意点 虽然使用git submodule为我们的开发带来了很多便利,但是随之而来也会导致一些比较容易犯的错误,整理出来,防止大家采坑: 当子模块有提交的时候,没有push到远程仓库
前言 Visual Studio 2022 17.1 版本已正式发布,该版本包含大量增强生产力的更新项,摘取一些较为重要的更新项介绍一下。...然后,索引器将遍历文件并构建一个索引,当您执行查找操作时,该索引又用于加速搜索结果。...增强 Git 相关功能 分支比较功能,可以将当前分支与存储库中的其他分支进行比较,更轻松地处理拉取请求(PR)或删除分支。...因此,如果要保留你签出提交后的更改,请在退出分离的 HEAD 状态之前,创建一个新的分支来保存你更改的内容。 有关“签出提交”功能和更多 Git 增强功能,可在 Taysser 的博客中细阅。...问题是添加新项目或依赖项发生变化时,依赖关系图和方案过滤器就会过时,因此 Visual Studio 2022 17.1 引进了 “更新项目依赖项” 功能,该功能可以随时检查新的依赖项,把项目的依赖关系更新到最新状态
例如提交给版本控制系统时被触发,通过类似Cron的机制调度,在其他的构建已经完成时,还可以通过一个特定的URL进行请求; Jenkins强大的插件式,使得Jenkins可以集成很多软件,可能帮助我们持续集成我们的工程项目...Jenkins 首先通过 git 工具获取远程仓库中的代码,然后执行用户指定的编译指令。...(5) Source Code Management 源码管理 Jenkins 在构建(编译)的过程中,需要获取到源代码,因此需要配置 git 仓库的地址和账号信息(用户名和密码)。...父项目和子项目的提交是分开的,也就是说父项目提交的信息只包含子项目的信息,而不会包含子项目的代码;子项目有自己独立的 commit,push,pull操作。...需要手动获取所有的子模块,执行指令: git submodule update --init --recursive 此时,再使用 tree 命令看一下文件变化,可以看到 test1 和 test2
执行成功后,git status 会看到项目中修改了.gitmodules,并增加了一个新文件夹(为刚刚添加的路径) 使用命令 git status 可以看到多了两个需要提交的文件,其中 .gitmodules...指定submodule 的主要信息,包括子模块的路径和地址信息,moduleA 指定了子模块的commit id,使用 git diff 可以看到这两项的内容。...需要注意的是,父项目的 git 并不会记录 submodule 的文件变动,它是按照 commit id 指定 submodule 的 git header,所以 .gitmodules 和 moduleA...这两项是需要提交到父项目的远程仓库的。...克隆带子模块的版本库 方法一:先 clone 父项目,再初始化 submodule,最后更新 submodule,初始化只需要做一次,之后每次只需要直接 update 就可以了,需要注意 submodule
在软件开发过程中,通常我们会遇到有一些通用的部分希望抽取出来做成一个公共库的情况,比如安卓和IOS都通用的H5页面。而公共代码库的版本管理是个麻烦的事情。...注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone) 命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。...下载的工程带有submodule 当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令: git submodule...init git submodule update 或者是执行以下命令(该命令效果等同于上面两个命令): git submodule update --init --recursive 即可将子模块内容下载下来后工程才不会缺少相应的文件...更新submodule的URL 1.更新.gitsubmodule中对应submodule的条目URL 2.更新 .git/config 中对应submodule的条目的URL 3.执行 git submodule
这个模式是默认模式,即当不显示告知git reset模式时,会使用mixed模式。...(4)快速合并 默认情况下,当 Git 看到两个分支合并中的冲突时,它会将合并冲突标记添加到你的代码中并标记文件为冲突状态来让你解决。...# 移除目录 $ git clean -fdx 当再次切回到有子模块的分支,需要重新初始化子模块 $ git checkout add-crypto $ git submodule update --init...我们可以将新历史推送到新项目中,当其他人克隆这个仓库时,他们仅能看到最近两次提交以及一个包含上述说明的基础提交。 如果,想获取整个项目的历史该如何做???...在克隆这个截断后的仓库后为了得到历史数据,需要添加第二个远程的历史版本库并对其做获取操作: # 获取最新提交 $ git clone https://github.com/schacon/project
其实在蒋鑫的《Git权威指南》当中,有比较详细的介绍:项目的版本库在某些情况虾需要引用其他版本库中的文件,例如公司积累了一套常用的函数库,被多个项目调用,显然这个函数库的代码不能直接放到某个项目的代码中...Git submodule用例 首先我们需要两个版本库 [1240] 从名称,我们就做了区分,一个是公共的版本库 https://github.com/yang0range/SubModuleDemoLib.git...另一个是引用公共版本库的主版本库 https://github.com/yang0range/SubModuleDemoMain.git 有了这两个版本库,我们就该介绍如何把两个版本库关联起来了 Git...] 同时我们可以看到目录下多了一个.gitmodules的文件 [1240] 5.提交仓库 执行git cmmit命令 添加成功之后,再执行 git push指令 关于这两个我们最常用的指令,就不多介绍了...提交、更新过程 之前我也说过,对于主模块和子模块来说,两个是相对独立了,所以在执行命令的时候,单独对主模块,和子模块分别操作就可以了。
git submodule update 更新子模块为远程项目的最新版本 git submodule update --remote 克隆包含子模块的项目 克隆包含子模块的项目有二种方法:一种是先克隆父项目...一个简单的解决办法是把你的hook存在项目的实际目录中(在 .git 外)。这样你就可以像其他文件一样进行版本控制。...不过,它们确实可以让开发者更易于接受这些规范 常见的 6 个最有用的本地hook: pre-commit pre-commit 脚本在每次你运行 git commit 命令时,Git 向你询问提交信息或者生产提交对象时被执行...,后两个允许你执行一些额外的操作,分别为 git checkout 和 git rebase 的安全检查。...当和官方仓库连接时,其中一些可以用来拒绝一些不符合规范的提交。
其实在蒋鑫的《Git权威指南》当中,有比较详细的介绍:项目的版本库在某些情况虾需要引用其他版本库中的文件,例如公司积累了一套常用的函数库,被多个项目调用,显然这个函数库的代码不能直接放到某个项目的代码中...其实Git早就帮我们解决了这一个问题,就是通过git submodule来解决! Git submodule用例 首先我们需要两个版本库 ?.../yang0range/SubModuleDemoMain.git 有了这两个版本库,我们就该介绍如何把两个版本库关联起来了 Git submodule的操作了 这里我们先介绍Git命令的使用,接下来,...5.提交仓库 执行git cmmit命令 添加成功之后,再执行 git push指令 关于这两个我们最常用的指令,就不多介绍了。 之后我们查看git log就可以看到我们的提交记录了 ?...提交、更新过程 之前我也说过,对于主模块和子模块来说,两个是相对独立了,所以在执行命令的时候,单独对主模块,和子模块分别操作就可以了。
领取专属 10元无门槛券
手把手带您无忧上云