一、问题场景

我司使用 GitLab 进行代码管理,当我对系统进行 SpringBoot 2.0 的版本升级,分支已经 Merge 到 Master 分支。实际部署中发现依赖的某个二方包的子依赖未做升级,导致某个服务无法掉通。由于二方包的修复需要时间,为了不影响后续其他功能的发布,因此决定对 Master 分支进行 Revert。

等到第二天,当修复了那个二方包问题后,重新提了 Merge 申请,却发现提交变动只有对二方包的变动,其他的代码变动都没有了。

一、引言

一般来说,安装好 git 后,我们都会配置一个全局的 config 信息,就像这样:

git config --global user.name "jitwxs" // 配置全局用户名,如 Github 上注册的用户名
git config --global user.email "jitwxs@foxmail.com" // 配置全局邮箱,如 Github 上配置的邮箱

但是你可能会碰到需要在一台电脑上配置多个用户信息的需求。此时就不能够用一个全局配置搞定一切了。

如果你不想看详细的描述,直接看步骤即可:

1.git rebase -i HEAD~n,将要修改的提交状态改为 edit
2.修改文件
3.git add
4.git commit --amend
5.git rebase --continue

假设我们目录下有三个文件,分别是 digit.datletter.datsymbol.datdigit.dat 中存放着数字,letter.dat 中存放着字母,symbol.dat 中存放着符号。

在很多情况,我们由于疏忽会将一些敏感信息误传到 Git 仓库上面去。 尽管我们可以使用 git rm 将包含敏感信息文件删除掉,然后重新提交上传,文件就不会在仓库文件列表显示。 但是这并不能完全将敏感信息文件从仓库中完全删除, commit history 仍然会有敏感信息的文件的残留,我们仍然可以从仓库中的 commit history 中访问到文件。

如果想要将敏感信息文件完全删除。不仅需要将文件从 github 中的文件列表中删除,同时还需要将文件从 github 的 commit history 中的 文件相关信息删除。删除 commit history 文件相关信息,主要有两种方法:

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。本文为廖雪峰的Git教程的个人笔记,欢迎指正。

一、Git 基础

1.1 版本控制系统

版本控制系统系统分为集中式分布式两种。

集中式是集中存放在中央服务器中,工作的时候,先用自己的电脑从中央服务器取得最新的版本,完工后,再把自己的工作推送到中央服务器。集中式版本控制工具有:CVS、SVN 等。

集中式的特点是需要联网才能工作,对网速的要求较高。如果中央服务器发生了宕机,所有人都没法工作。