代码刚提交暂存区,组长突然要我把新增代码 Commit另一分支怎么办?

在这里插入图片描述

1. 背景

最近刚换公司,上家公司使用 svn 进行代码的版本控制,而现在公司使用的是git 。因为自己平常也有使用 git,所以基本使用操作还是没有问题的。

最近需要做的新功能需求讨论了一周,这期间我提前在 master 分支上编写大量基础代码。在正式开始开发时,领导跟我说你切换到xx分支上进行开发吧。咱们采用的是 Git Flow 的方式进行代码版本控制的,分支我已经建好了。 于是我就跟组长说:我已经编写了好多代码了在master分支上了。 组长说:那就把你新搞的代码拷贝到新的分支上吧。

Oh My God! 代码有好多,复制粘贴倒是可以,但是一是慢二来就是可能会覆盖别人的代码。于是查看 git 官方手册发现一个神奇的命令 git stash瞬间完美解决。

2.案例还原演示

这里我通过简单操坐来还原具体案例场景:在 stashOper 项目上已经有一个 Hello.java 文件提交,然后将在master 分支上将已经提交到暂存区的 ForOper.java 文件复制到 b1分支上。接下来开始案例场景还原。

首先创建包含已经 commit 的 Hello.java文件的 stashOper 项目。 具体操作如下:

创建空的 stashOper 目录并在改目录下执行 git init

image.png

cd:进入文件夹命令
mkdir:创建文件夹命令
git init:创建git仓库

创建Hello.java 文件

image.png

touch:创建文件命令
vim:编辑文件命令,这里具体使用不在进行阐述。

添加一个打印hello java 的简单程序,具体代码如下:

image.png

验证 Hello.java 程序。

image.png

将Hello.java 通过 git add添加到暂存区,然后在通过 git commit添加到本地仓库。

image.png

git add:将代码添加到暂存区
git commit:将代码添加到本地仓库

创建新的分支通过 git checkout -b 分支名称具体操作如下:

image.png

也可以通过 git branch 分支名称 来创建分支,这个命令不会切换的新建的分支上。

通过 git checkout master 切换到 master 分支,然后创建 ForOper.java文件并添加如下代码:

image.png

image.png
验证ForOper.java程序,然后通过 git add 将他们添加到暂存区中。这里操作就不在进行演示,可以参照添加Hello.java 到本地仓库的操作。

接下来要注意了,使用 git stash save 注释内容 将ForOper.java先保存起来。具体操作如下:

image.png

切换到 b1 分支,通过git checkout 命令。
image.png

通过 git status 查看目前b1分支状态,如下图所示b1分支暂存区和本地仓库没有任何文件。

image.png
通过 git stash list 查看在master上保存的文件内容。具体如下图:

image.png

最后通过 git stash apply 将master 分支上暂存区的内容拷贝到b1分支上。如下图所示在b1分支上暂存区已经有ForOper.java了,执行 git commit 就可以将其提交到 b1 分支上了。

image.png

git stash apply :使用存储,但不会把存储从存储中进行删除,直接执行git stash apply默认是用第一个,即stash@{0},如果要使用具体的存储,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

3.总结

最后介绍一下 git 存储 命令 git stash 经常使用操作如下:

  • git stash: 添加不带标签的存储,不建议使用不方便查找。
  • git stash save “标签内容”:添加带标签的存储。
  • git stash list:查看存储列表。
  • git stash apply:使用存储但是不会删除。例如:git stash pop apply@{0}
  • git stash drop :将存储从列表中删除。例如:git stash pop drop@{0}
  • git stash pop:使用存储,使用后会自动删除已经使用的存储。例如:git stash pop stash@{0}
  • git stash clear:删除所有的存储。

4.参考文献

  • https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%E4%B8%8E%E6%B8%85%E7%90%86
  • https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html
发布了138 篇原创文章 · 获赞 525 · 访问量 28万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章