写点什么

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

发布于: 2020 年 05 月 25 日

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``



cd:进入文件夹命令

mkdir:创建文件夹命令

git init:创建 git 仓库


创建 Hello.java 文件



touch:创建文件命令

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


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



验证 Hello.java 程序。



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



git add:将代码添加到暂存区

git commit:将代码添加到本地仓库


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



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


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



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


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



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


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


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



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


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


发布于: 2020 年 05 月 25 日阅读数: 57
用户头像

还未添加个人签名 2018.11.05 加入

还未添加个人简介

评论

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