如何干净地切换到一个分支(八)

一、如何保持一个干净的分支

当执行命令 git  checkout develop 切换到develop分支时,如果之前的分支对文件有修改,也会将修改的文件信息带到develop分支上来。怎么干净地切换到develop分支?

方案一:git reset HEAD -- hard

方案二:git stash

方案三:git commit

场景描述

当前分支:alanchen。

在alanchen分支上修改了几个文件,如,A、B、C。

切换到develop分支时,A、B、C这三个文件的修改也会带过来。用 git status 查看,可以看到A、B、C这三个文件有修改。

1. 方案一适用场景

想切换到develop分支时是干净的,如果这些修改不再需要,可以直接丢弃的话,采用这种方案。

//执行以下命令
git checkout develop

git reset HEAD --hard

//特别注意:alanchen分支上A、B、C的修改也没有了

2. 方案二适用场景

如果这些修改还需要,只是想临时切换到develop分支,那么采用第二种方案。

git stash

git checkout develop

3. 方案三适用场景

如果是同时开了两份分支在开发,在当前分支上的修改都需要保留,希望切换到另外一个分支去开发,那么采用第三种方案。

#添加到git版本库
git add .

#提交
git commit -m "message"

#切换分支
git checkout develop

二、git stash详解

当你在git分支中改代码时,接到任务需要修复一个bug,你需要在当前分支外新建一个分支来处理bug,当然不能把你刚才写的代码带到那个分支,因为你做的新功能还没测,更不能提交。所以你需要git stash命令暂存修改(git stash帮助开发人员暂时搁置当前已做的改动,倒退到改动前的状态):

#暂存
git stash save "备注"

#查看stash情况
git stash list

当你修完bug想要继续写你的新功能时,就需要git stash pop(前提是你的stash在栈顶,git stash会将你的修改压入一个栈中,你如果git stash暂存了很多次,你需要指定pop版本,可以使用git stash apply [email protected]{1})。其中[email protected]{1}是啥?你可通过git stash list查看到[email protected]{1}是你stash内容的版本。

注意:并不是每次git stash都要先git add .的。当你的修改的都是原有文件,那是不需要在git stash之前进行git add 操作的,但是如果你所作的修改涉及到了本次才新建的文件,那么此时git stash之前是要做git add .的。因为新建的文件还没有进入版本控制库,需要add操作才能将新建的文件添加进库。如果在你新建之后直接git stash,未作git add .操作。那么新建文件将仍然保留在工作区,进栈内容不包含新建的文件。

当需要拉取远端文件,但又不想提交正在修改的文件时,可以使用git stash 命令将当前的工作区保存(藏匿)起来,等pull 完后再还原。

#暂存修改工作区
git stash  

#拉取远端文件
git pull  

#将工作区还原
git stash pop [email protected]{0} 

如果还原工作区的文件与pull 下来的文件有冲突,要手动修改冲突

当然,我们可以删除git stash的内容:

#注意这是清空你所有的内容
git stash clear

#这是删除第一个队列
git stash drop [email protected]{0}  

原文地址:https://www.cnblogs.com/myitnews/p/11816177.html

时间: 2024-08-29 05:53:02

如何干净地切换到一个分支(八)的相关文章

git 从分支上创建一个分支

相关连接: 创建于合并分支:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000 git从已有分支拉新分支:https://www.cnblogs.com/lingear/p/6062093.html 来源:https://www.cnblogs.com/jiqing9006/p/8

Git的使用-一个分支完全替换另一个分支

之前公司git分支混乱,今天花时间整理了一下,在合并分支的时候遇到一个问题: 一个很久没有拉取远程代码的分支与master分支合并时,出现冲突之外,还会丢失文件,很头疼,然后找到了下面的方法,可以直接将一个分支替换另一个分支 git push origin develop:master -f 把本地的 develop 分支强制(-f)推送到远程 master 但是上面操作,本地的 master 分支还是旧的,通常来说应该在本地做好修改再去 push 到远端,所以我推荐如下操作 git check

git与eclipse集成之创建及切换个人本地分支

创建个人本地特性分支,并进行编码 弹出选择分支的窗口,选择要切换的个人特性分支(备注:根据远程个人特性分支创建本地个人特性分支) 点击OK,Branch name:分支名称与远程分支名称相同,不需要修改.默认勾选Checkout new branch,即创建完分支后,并切换到该分支. 点击finish,完成个人本地特性分支的创建. 从工程名可以看到已经切换到新创建的本地个人分支 从Branches/Local可以看到本地多了一个新分支,并且已经切换到该分支 从References可以看到HEAD

从远程拉一个分支将项目拉下来

步骤: 1.在远程建一个分支,点击下图(1)的New branch,在下图(2)输入自己分支的名字(jiangsu),然后点击create branch,就创建好了一个远程分支 2.在本地利用git命令,创建一个本地分支,和远程分支的名字一一对应   git checkout  -b jiangsu 注意:git checkout命令加上-b参数表示创建并切换 3.为了防止拉下来的项目不是最新的,可以用git pull origin jiangsu 4.在分支上做一些自己的任务,任务完成之后,可

git切换到别的分支,要暂时保存当前分支的修改(不想进行add 和commit)的方法 git stash

git 切换分支时会把未add或未commit的内容带过去, 这一点值得注意. 为什么呢? 因为未add的内容不属于任何一个分支, 未commit的内容也不属于任何一个分支. 也就是说,对于所有分支而言, 工作区和暂存区是公共的. 要想在分支间切换, 又不想又上述影响, 怎么办呢? git切换分支保存修改的代码的方法 最近在一个原有的项目上做一次非常大的改版,底层的数据库做了很大的变化,跟现在的版本无法兼容.现在的工作除了开发最新的版本之外还要对原来的版本做例行的维护,修修补补.于是有了在两个分

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

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

swift中 if let 与 guard let 对比,guard会降低一个分支

1 //用if let与guard let实现同一效果,会发现guard降低一个分支 2 //可以用if var guard var 表示定义的变量能修改值 3 func test(){ 4 let name:String? = "张三" 5 6 if let a = name { 7 print(a) 8 }else{ 9 print("李四") 10 } 11 12 guard let c = name else { 13 print("李四"

人工智能 (计算机科学的一个分支)

人工智能的定义可以分为两部分,即"人工"和"智能"."人工"比较好理解,争议性也不大.有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步,等等.但总的来说,"人工系统"就是通常意义下的人工系统. 关于什么是"智能",就问题多多了.这涉及到其它诸如意识(CONSCIOUSNESS).自我(SELF).思维(MIND)(包括无意识的思维(UNCONSCIOUS_MIND

Git合并特定commits 到另一个分支

https://ariejan.net/2010/06/10/cherry-picking-specific-commits-from-another-branch/ http://blog.csdn.net/ybdesire/article/details/42145597 经常被问到如何从一个分支合并特定的commits到另一个分支.有时候你需要这样做,只合并你需要的那些commits,不需要的commits就不合并进去了. 合并某个分支上的单个commit 首先,用git log或GitX