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

用户头像
zhuoqianmingyue
关注
发布于: 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 日 阅读数: 25
用户头像

zhuoqianmingyue

关注

还未添加个人签名 2018.11.05 加入

还未添加个人简介

评论

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