首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何高效撤销Git管理文件在各种状态更改

一、背景   企业中我们一般采用分布式版本管理工具git来进行版本管理,在团队协作过程中,我们难免会遇到误操作,需要撤销更改情况,那么我们怎么高效进行撤销修改呢?...对于还未提交到暂存区代码怎么高效撤销更改呢?对于已经提交到暂存区代码,怎么取消add操作?对于已经提交到本地仓库,还没有提交到远程仓库代码,怎么进行高效撤销更改呢?...还有对于已经提交到远程仓库代码,如何进行高效撤销更改呢?那我们本文就来一一解决这些棘手问题!...二、各种状态高效撤销方案 文件还未提交到暂存区,只是在工作目录中修改了,想要撤销 git checkout [--] file-name (撤销单个文件修改) git checkout [--]...三、总结   通过本文我们就知道如何对不同状态git管理文件进行撤销修改操作,这样即使我们不小心操作了什么东西,我们也能很快进行回滚,就是要做高效程序猿~

2K20

GIT版本控制】--子模

提交子模更改:在子模块仓库中进行更改后,需要提交这些更改并推送到远程子模块仓库。 TIP:父仓库中只保存了子模引用子模块本身内容存储在子模块仓库中。...备份和恢复子模状态: 定期备份父仓库中 .gitmodules 文件以及子模状态。这可以帮助你在不小心删除子模块或配置时恢复状态。...在 Pull Request 中包括子模更改: 如果你 Pull Request 包括对子模更改,请确保在描述中提供清晰说明,并确保评审者了解这些更改目的。...故障排除子模块问题: 如果遇到子模问题,了解如何进行故障排除和解决问题,包括如何重新初始化和更新子模块。...三、总结 创建和管理Git子模总结:Git子模块允许在一个仓库中引用另一个仓库,通过添加、初始化和更新子模块,你可以将外部代码集成到你项目中。

39230
您找到你想要的搜索结果了吗?
是的
没有找到

通过 GitExtensions 来使用 Git 子模块功能

(本段中下载地址请阅读原文) 二、Git 子模块 那么安装好了之后,如何添加 Git 子模块呢?...命令方式可以参考网上文章《git submodule 使用(.gitmodules 文件子模块加载)》,本文就不再赘述了。...: 可以看到还是有可提交标志,这里其实是提交对子模引用信息(引用哪个提交版本)更改: 提交界面如下(注意和之前进行对比),显示了新旧版本信息: 提交(未推送)之后再切到子模块,虚框分支标记就消失了...: 四、更新子模块 接下来演示一下更新子模操作,我们先复位一下父工程,在上个提交上右键 --> 复位当前分支到此处: 复位方式这里选择 混合模式: 回到了如下状态: 由于我们之前提交子模块时勾选了...“在父工程中载入” 选项,现在我们先在提交界面,右键 --> 更新子模块: 由于父工程对子模引用并未更改(提交),所以此处更新子模块后,将会将子模提交索引复位(重新指向上个版本): 这样父工程恢复如初

56910

git 子模块使用

Git 子模块是 Git 仓库中另一个 Git 仓库。它允许将一个 Git 仓库作为另一个 Git 仓库子目录。...在父仓库中查看子模状态git status这将显示子模状态,例如是否有未提交修改或者是否有新提交。5. 在子模块中进行更改进入子模块目录,像普通 Git 仓库一样进行更改,提交并推送。...移除子模块如果你想移除子模块,首先需要移除子模引用,然后删除子模相关文件。...执行以下步骤:# 移除子模引用git submodule deinit -f -- # 删除子模相关文件rm -rf .git/modules/<path-to-submodule...声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。

16600

Git Pro深入浅出(二)

方式一:修复引用 如果这个不想要合并提交只存在于你本地仓库中,最简单且最好解决方案是移动分支到你想要它指向地方。...Rerere rerere(“reuse recorded resolution”)它允许你让Git记住解决一个冲突方法,这样在下一次看到相同冲突时,Git可以为你自动地解决它。...(3)恢复文件到冲突状态 rerere可以帮我们按之前解决方案,解决历史出现冲突。如果,我们不想按历史方案解决,该如何处理呢?...在项目中使用子模最简模型,就是只使用子项目并不时地获取更新,而并不在你检出中进行任何更改。...上述,可以通过一种更简单方式Git将会进入子模块然后抓取并更新 $ git submodule update --remote t-module 注意:此命令默认会假定你想要更新并检出子模块仓库master

1.1K31

git 系列 — git submodule 命令及其用法

update --init --recursive 可以将上述多条命令替换成一条命令: # clone 时一同初始化并checkout子模块commit,且会拉取嵌套子模块(即子模块又包含它引用子模块...{submoduleName}.branch {branchName} 无论哪种方式更新,都会在主项目生成子模块更新 commit 信息,可见主项目只需要记录子模 commit 信息即可。...--recurse-submodules 更改子模更改子模块时,需要注意是一定要 checkout 到某一个具体分支,因为当在主项目中使用 git submodule update 命令更新子模块时...,会子模块处于 detached HEAD 状态,即没有本地分支跟踪变更,会导致在此状态子模 commit,在下一次 update 时丢失。...确保 push 子模块 有时当更改子模块后,忘记了 push,但是在主项目更改后却 push 了,所以远程仓库子模块未更新,导致其他人不会获取子模更新,可以使用以下命令防止这种情况: # 在主模块

2.4K20

Git 总结

回退 git reset # 回退到某commit, 仅回退commit信息,不会改变工作区任何文件(非常快,因为其实没有任何文件改变) # 如果你改动没有 push 到远程,可以通过此方式,将直接改变...add 子模块路径, git commit 子模块实际上就是记录一个 commit 引用, # 添加子模块远程仓库引用,此时还没有对应 commit # 注意: 经过测试, 此步就会生成 .gitmodules...时候,从 .gitmodules 读取子模块信息,然后生成配置文件到 .gitgit submodule init # 从远程检出子模块代码, 即下载 commit 引用 对应文件内容 git...cat .git/config 检出(checkout) 克隆一个包含子仓库仓库目录,并不会clone下子仓库文件,只是会克隆下.gitmodule描述文件,需要进一步克隆子仓库文件。...更改设置 git config core.ignorecase false git subtree 参考: git subtree 简单使用记录 | Verne in GitHub GitHub 国内镜像加速地址

1K40

Git 命令

user.name/email … 配置全局名称和邮箱 git config –list 参看配置 日志 git log [] [] [[–] …] git reflog 引用日志 命令 描述 git...命令 描述 git merge –abort 抛弃合并过程并且尝试重建合并前状态 git merge –continue 合并冲突解决 推送 git push [] [ […]] 重置 git reset...工作流程 Git 主要目的是通过操纵这三棵树来以更加连续状态记录项目的快照。 ?...它会在工作目录中先试着简单合并一下,这样所有还未修改过文件都会被更新。 而 reset –hard 则会不做检查就全面地替换所有东西。 第二个重要区别是如何更新 HEAD。...远程仓库记录管理工具 git archive 创建项目一个指定快照归档文件 git submodule 子模git show 显示一个标签或一个提交信息 git shortlog 归纳 git

83820

Git 中文参考(一)

如果值为 check,然后 Git 将验证在要推送修订版本中更改所有子模块提交在子模至少一个远程处可用。如果缺少任何提交,则推送将中止并以非零状态退出。...如果值为 on-demand,那么将推送在要推送修订中更改所有子模块。如果按需无法推送所有必要修订,它也将被中止并退出非零状态。如果值为 _ 否 _,则保留推送时忽略子模默认行为。....ignore=all子模块,将禁止所有子模摘要输出命令。该规则唯一例外是状态和提交将显示分阶段子模更改。...当设置为“all”时,它将永远不会被视为已修改(但它仍将显示在状态输出中并在提交时提交),“脏”将忽略对子模块工作树所有更改并仅采用差异在子模 HEAD 和超级项目中记录提交之间考虑。...submodule.alternateLocation 指定在克隆子模块时子模如何获取备用模块。可能值为no,superproject。默认情况下,假定no,不添加引用

900

Git 进阶使用1

Git rebase 我们要知道第一件事是,git rebase 和git merge 做事其实是一样;它们都被设计来将一个分支更改并入另一个分支,只不过方式有些不同 想象一下,你刚创建了一个专门分支开发新功能...如何处理冲突 代码合并不可避免就是会遇到代码冲突了,git merge会遇到冲突,同样git cherry-pick也会遇到代码冲突,那么遇到代码冲突时候,该如何处理呢?...--quit,此时不会回到操作前状态 stash 当我们在需要紧急处理一个bug时,工作区内容又没有完成,不适合提交,这时候就需要使用git stash暂存起来 git stash 命令获取我们未提交更改...我们会在「准备提交信息」一节中细看它是如何工作。现在我们已经可以定制 Git 内部功能,你只需要坐和放宽。...查看引用时候被调用。

70641

关于Git这一篇就够了

在日常工作中git少不了,所以编写本篇文章教大家如何使用git,便于日后工作与学习。...我们需要使用-m命令来简写描述我们信息,如果不使用-m,会调用终端注释编辑器让你输入描述信息,但是不建议使用,因为注释编辑器比较难用,不舒服。...HEAD^ ^代表上一个版本意思,HEAD代表当前仓库指向,当前HEAD指向master,就代表回滚到master上一次提交版本 当然我们也可以使用另外一种方式来回滚到当前仓库指定版本 git...注意stash是以栈方式保存,先进后出。 准确来说,这个命令作用就是为了解决git不提交代码不能切换分支问题。...这并不意味着您在提交之前必须先完成一个完整大型功能。 恰恰相反:将功能实现分成逻辑,并记住提早并经常提交。 但是,不要承诺在一天结束离开办公室之前在存储库中存放一些东西。

65710

Git常用命令参考手册

需要注意是提交时必须使用 git push -f 强制提交方式。...-n # 采用邮箱格式化方式进行查看贡献度 git shortlog -e git reflog 通常被引用为 安全网,当 git log 没有想要信息时可以尝试用 git reflog。...# 递归抓取子模所有更改,但不会更新子模块内容 git pull # 这个时候需要进入子模块目录进行更新, 这样就完成了一个子模块更新,但是如果有很多子模块就比较麻烦了 cd git-manual...,可以配置 git pull 默认行为, 如何配置请参考 配置 具体使用还可以看这里 git submodule子模块使用教程 git bisect git bisect 基于二分查找算法, 用于定位引入.../B.git 除了通过命令迁移之外,可以通过网页导入仓库方式也可以。

2.3K30

git 子模块在项目中使用

创建子模git submodule add git@gitee.com:hujingnb/submodule_son.git submodule_son 指定子项目地址, 后面的参数可以更改子模路径...由于git对于子模管理并不是基于分支, 而是基于commit id. 这对于引用第三方库是可以理解, 毕竟需要一个稳定版本嘛. 但是对于公司这种需要频繁更新项目, 就有些混乱了....这又该如何是好呢? 不同分支 对于这个问题, 我想了很久. 要想实现分支正常管理, 还是应该不同环境对应不同分支, 但是子模块只能指定commit id, 不能对应分支....如此一来, 那就只有一个办法, 不同分支指定不同commit id, 这也是我能想到最清楚,最符合流程方式了. 也就是说, 子模块也切为dev, master两个分支, 也正常进行合并....先说一下我是如何制造冲突: 父项目与子模块分别拉取分支: master_tmp 父项目与子模块切回master分支 子模块修改文件并提交, 父项目更新commit id 此时父子都回到master_tmp

1.1K30

Git常用命令参考手册

0} 文件状态 # 完整查看文件状态 git status # 以短格式给出输出 git status -s # 忽略子模git status --ignore-submodules # 显示已忽略文件...-n # 采用邮箱格式化方式进行查看贡献度 git shortlog -e git reflog 通常被引用为 安全网,当 git log 没有想要信息时可以尝试用 git reflog。...# 递归抓取子模所有更改,但不会更新子模块内容 git pull # 这个时候需要进入子模块目录进行更新, 这样就完成了一个子模块更新,但是如果有很多子模块就比较麻烦了 cd git-manual...,可以配置 git pull 默认行为, 如何配置请参考 配置 具体使用还可以看这里 git submodule子模块使用教程 子树 如果你知道 git submodule 那就大概知道 git subtree.../B.git 除了通过命令迁移之外,可以通过网页导入仓库方式也可以。

1.3K60

你可能不知道20个Git命令,但真的很实用

其他选项可以通过标志(如-p端口、-b浏览器打开等)或在[instaweb]git 配置中下配置。.../my-archive HEAD5、Git 子模块用于git submodule将任何其他存储库拉入您存储库在 git 中,子模块让您可以将一个存储库挂载到另一个存储库中,通常用于核心依赖项或将组件拆分到单独存储库中...赶紧跑git show branch:file15、Git 描述用于git describe查找可从提交中访问最新标记,并为其指定一个人类可读名称运行git describe,您将看到一个人类可读字符串...的确才开始学习Git不适合用这样复杂方法,可以通过先通过鼠标操作方式学习,很荣幸我们30天课程设计在教大家入门Git时候就是鼠标操作,如果需要相关教程,可以私聊我!...从学习一开始就进入工作状态,省得浪费时间。

82100

浅析 Git 子模

"nodemon": "^1.11.0", "postcss": "^6.0.5", "precommit-hook": "^3.0.0", "ws": "^5.1.1" } 这种方式简单方便...中查找 那么,基于以上几点,如果不得不将第三方源码手动拷贝到项目中,又会带来更多问题: 第三方库将难以和原库保持同步更新 如果对第三方库做出了较通用更改和补丁等,无法发布到原库中为其他人所用 对第三方库做出修改...比如一个通用组件作为子模块分别被公司中不同项目引用,则各个项目组做出改进,最后都可以汇总到主组件库中,为大家所共享。 II. 如何用起子模块?...git submodule update --remote --rebase 2.5 - 发布子模块变更 因为主项目并不会跟踪子模块中变更,也就是说子目录中更改具体业务文件不会在 push 时被自动发布...总结 子模块适用于需要修改第三方库,或只引用其一部分场景 子模块能让另一个仓库作为主项目的子目录,同时还保持提交独立 子模若干操作都比较繁琐 应该逐渐用 subtree 代替 submodule

1.3K10

7.11 Git 工具 - 子模

开始使用子模块 我们将要演示如何在一个被分成一个主项目与几个子项目的项目上开发。 我们首先将一个已存在 Git 仓库添加为正在工作仓库子模块。...不过还有更简单一点方式。 如果给 git clone 命令传递 --recursive 选项,它就会自动初始化并更新仓库中每一个子模块。...如果你不想在子目录中手动抓取与合并,那么还有种更容易方式。 运行 git submodule update --remote,Git 将会进入子模块然后抓取并更新。...会将子模块更新为服务器上状态。...如果你没有提交子模改动,那么运行一个子模块更新也不会出现问题,此时 Git 会只抓取更改而并不会覆盖子模块目录中未保存工作。

1.4K20

把你 VS Code 打造成 C++ 开发利器

支持多种编码方式。代码有 gbk 和 utf8 两种,希望 ide 能自动识别。 代码自动补全、函数列表、函数引用、函数定义、查到、函数跳转、函数跳回 都比较好用。...↓ 安装完成后,一般 VSCode 弹窗还会提示下载 C/C++其他依赖,内容如下: C/C++插件扩展依赖 一般都无法下载成功,状态栏栏里输出内容文本内容如下: 状态栏 输出内容 此时,就需要按照下面...(1)暂存更改 暂存更改 暂存更改可以指定某个文件按+暂存,可一个全选,按图中加号。...Git (Submodule) Assistant 上图中红框圈起来目录均为子模块,可以看到右侧还有个s(submodule)标志。...,比如下图中就for语句代码就有一条竖线,而内部if和else则分别还有一条竖线。

12.2K52

Terraform:多云、混合云环境下实现基础设施即代码

,使用create_before_destroy参数或通过两步手动过程实现 更改资源标识符时更新状态文件 更改资源标识符(如重命名)时,使用terraform state mv命令更新状态文件,而不是手动更改...在每个资源文档页面底部,通常都会描述如何导入它。 4个主要经验。 始终使用plan命令 运行plan命令可以捕获所有这些陷阱。...文件中,添加backend配置,但保持config为空(马上会看到如何使用Terragrunt填补这个空白)。...在remote_state代码中,使用与往常相同方式配置backend参数,但key值略有不同。key值中使用Terragrunt内置函数path_relative_to_include()。...这个函数返回此terragrunt.hcl根文件到包含这个文件任何子模块之间相对路径。

38910
领券