那些年git踩过的坑(一)

本文讲述了git中暂存区与工作区的交互风险,特别是gitreset与gitcheckout的组合可能导致未提交更改丢失。强调操作前理解命令含义和逻辑的重要性,以及操作前备份代码的必要性。

我们需要先熟悉工作区和暂存区,本地仓库和远端仓库,以及git的常见命令。

注意的是:

当执行 git reset 命令时,暂存区的目录树会被重写,但是工作区不受影响。

当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

注意,这两个操作分开使用是没任何问题的,但是,如果这两个操作一起使用的话,简直就是个大坑啊!!!你细品,再细品!先执行git reset 回退版本操作后,暂存区被重写了,然后这时如果你再git checkout分支,那么这时候会用暂存区的文件替换掉工作区的文件。这意味着,如果你版本回退前的有修改的工作区如果没有git stash暂存的话,你的工作区的内容直接就被暂存区的内容重写了呀!!!也就意味着这几天的工作量就付诸东流了呀,写的代码没了呀!所以,这两个操作如果一起使用的话,真的太危险了呀!会清除工作区中未添加到暂存区中的改动!而且由于没有暂存,也没有commit,根本就找不回来呀,555……

所以大家在操作git之前,一定要先理清操作逻辑,然后明白要操作的命令的含义,切记慎重操作。

当然大家还是要勇于尝试操作的嘛,但是在这之前,记得要备份代码后再试哟~~

git submodule 是 Git 中的个功能,可以将Git 仓库作为另个仓库的子目录。这样可以方便地在多个项目中共享代码。 使用 git submodule 的基本步骤如下: 1. 添加子模块:在父项目的根目录下执行命令 `git submodule add <子模块仓库地址> <子模块目录>`,将子模块添加到父项目中。 2. 初始化子模块:执行命令 `git submodule init`,初始化子模块。 3. 更新子模块:执行命令 `git submodule update`,更新子模块的内容。 注意事项和易: 1. 提交子模块变更:在父项目中修改了子模块的代码后,需要进入子模块目录,将子模块的变更提交到子模块的仓库中。然后再回到父项目,提交父项目的变更。 2. 克隆包含子模块的项目:如果克隆了包含子模块的项目,需要执行 `git submodule init` 和 `git submodule update` 来初始化和更新子模块。 3. 切换子模块分支:在父项目切换了分支后,需要执行 `git submodule update --remote` 来切换子模块到对应分支。 除了以上基本知识,还有些高级使用技巧和注意事项,比如: - 删除子模块:可以使用 `git submodule deinit` 和 `git rm` 命令来删除子模块。 - 更新子模块到最新版本:可以使用 `git submodule update --remote --merge` 命令来更新子模块到最新版本,并合并父项目的变更。 希望以上信息对你有所帮助!如果你有更多的问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值