GIT 如何在不提交Commit的情况下切换分支

最近遇到一个问题,事情是这样子的,刚刚接到客户说他的项目有问题,于是就打开本地的源码查看经过排查确定了问题,于是就开始进行修正工作

将问题修复好准备提交到git的时候发现当前的分支是不对的,但问题是我已经在当前分支了作了大量修改,如果要切换分支则必须先要将修改过的文件先提交

那么现在问题来了:如何在不提交commit的情况下来切换分支呢?

最后通过查看Pro Git文档了解到Git中有一个stash功能可以实现

6.3 储藏(Stashing)

来源: <http://git.oschina.net/progit/6-Git-%E5%B7%A5%E5%85%B7.html#6.3-%E5%82%A8%E8%97%8F%EF%BC%88Stashing%EF%BC%89>

经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。

“‘储藏”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

因为之前没有使用过此功能,特意做了个测试

首先 先在test分支修改了test2.txt文件

修改完成后发现该修改不应该在test分支了于是将所有的更改先储藏(stash)起来

然后切换到相应的分支(新建了test2分支)并从stash中取出之前的修改

然后再test2分支中commit所有的修改

因为储藏会产生两个分支记录,所以提交历史看起来乱七八糟的,所以将之前的储藏分支删除(删除后干净多好)

完成,合并分支等操作

使用了stash的分支图

删除stash后的提交历史

参考:

GIT 储藏(Stashing)

git 切换分支的时候 是否需要提交当前已经修改的

来自为知笔记(Wiz)

时间: 2024-10-02 23:09:51

GIT 如何在不提交Commit的情况下切换分支的相关文章

【转】Git如何在不提交当前分支的情况下切换到其它分支进行操作——git stash

假如现在的Bug你还没有解决,而上边又给你派了一个新的Bug,而这个Bug相比较现在正在苦思冥想的Bug比较容易解决. 你想先解决新的Bug,可是之前的Bug还没有解决完而不能提交.怎么办? 解决方法:在其他分支上另开炉灶解决. 首先你需要将此刻正在解决Bug的当前分支“储藏”起来.例假如此时正在你在当前分支dev上已进行了Bug修改但还未提交. 此时你想去解决刚派下来的另一个Bug.而你需要在master分支上去修复这个Bug,第一步就需要先切换到master 分支.当你执行 $ git ch

Git撤回已经推送(push)至远程仓库提交(commit)的版本

背景 所以,经常会遇到已经提交远程仓库,但是又不是我想要的版本,要撤下来. 回退版本一般使用git reset,又分为: # 不删除工作空间改动代码,撤销commit,不撤销git add . git reset --soft xxx---版本号---xxxx # 删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就恢复到了上一次的commit状态.git reset --hard xxx---版本号---xxxx 两种. 可以用git reset --soft

使用git提交代码--在不切换分支的情况下向不同的分支提交代码

我们都会提交代码,尤其是当项目的分支比较多的时候,我们就会向不同的分支提交代码,这时候,如果来来回回切换分支修改了之后在提交,那么会很费时间的,一天也改不了几个bug. 在一个分支上修改了代码,先向一个分支进行提交  比如;本地B-1分支,提交合并到B分支上面去 然后关键一步:选择Cherry-pick  意思是  炼选 最后,将自己本次修改的代码选择另外一个目标分支进行提交 依次类推,这样就比较方便了 原文地址:https://www.cnblogs.com/dongyaotou/p/1212

[转] git merge 将多个commit合并为一条之--squash 选项

[FROM] https://blog.csdn.net/themagickeyjianan/article/details/80333645 1.一般的做法(直接git merge) Git相对于CVS和SVN的一大好处就是merge非常方便,只要指出branch的名字就好了,如: $ git merge another $ git checkout another # modify, commit, modify, commit ... $ git checkout master $ git

Git 新建文件并提交

1.创建一个readme.txt. cd /home/cyp/learngit touch readme.txt vim readme.txt 编写内容, wq 保存推出 2.提交步骤 2.1  git add readme.txt   提交到暂存 2.2 git commit -m "写上你做的改动"  提交到仓库. 3.git status 查看状态 4. git diff 查看改动情况 原文地址:https://www.cnblogs.com/youpeng/p/10015423

【Git】Git如何合并某一次commit的内容到指定分支

一.我是在什么场景下会用到该Git操作 当某同事,将开发分支dev2合并到开发分支dev1时(两个不同的功能,不能合并),其他同事不知情的情况下,继续在dev1上开发并提交了代码. 后面发现了该合并,需要回退到合并前的状态,同时,合并后的提交也需要保留.那么就需要合并后面commit的内容到dev1分支 二.如何进行Git操作 使用如下命令就可以了 git cherry-pick commit_id *通过 git reflog可以查看历史提交的commit_id 比如:dev1&dev2是合并

git gui 还原部分提交文件

有时候用git提交文件的时候会一起提交了多个文件,但是突然后悔了,想把其中一个文件撤销提交,其他文件不做修改.这个时候该怎么办呢? 我觉得有很多办法,比如可以先checkout到上次的提交,然后复制要撤销修改的文件,然后再checkout到最新的版本,再手动复制粘贴..这样相当于手动去旧版本copy了一个文件覆盖新版本.这样做其实也不难,但是比较烦...目录多的时候找文件比较麻烦,另外要撤销的文件多的时候也比较坑爹...这个时候其实可以利用git自带的功能来完成任务的. Cherry -pick

git 撤回上一次commit中某一个不想添加的文件

1. 假设我们修改了文件a,同时修改了IDE的配置文件b 2.此时我们只想添加文件a到commit中,却不小心将b也添加进去了 3.那么怎么撤回呢? 4.第一种方法: 4.1  git reset --soft HEAD~1  //将commit重置到第二个commit上 4.2  git status //查看文件状态 changes to be committed: (use "git reset HEAD <file>..." to unstage) modified

随心所欲生成git仓库随意一段commit的专用patch应用小实践

 随心所欲生成git仓库随意一段commit的专用patch应用小实践 我们在开发中.时不时的可能要去做一个patch给你的下线,或者你的合作者.在git管理中,我们知道有git format-patch命令,那怎么使用呢? 笔者以下就以实际样例来记录一下这个过程: /*****************************************************************************************************/声明:本博内容均由http