Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git删除分支和所有相应的更改_Git - Fatal编程技术网

Git删除分支和所有相应的更改

Git删除分支和所有相应的更改,git,Git,我是git的新手,在创建/删除分支方面有点超前,希望找出正确的过程。基本上,我从一个新分支(branch\u a)开始,然后做了一些更改。然后,我决定测试一个第三方软件包,因为我知道它可能无法像我所希望的那样工作。在这一点上,我在分支a中做了一些更改,但我没有准备或提交这些更改。我继续结帐一家新的分行(branch\u b)。我玩弄了这个“测试分支”,然后决定删除它。首先,我检查了原始分支机构: git checkout branch_a 然后,我删除了分支,认为我所做的所有更改也会被删除:

我是git的新手,在创建/删除分支方面有点超前,希望找出正确的过程。基本上,我从一个新分支(
branch\u a
)开始,然后做了一些更改。然后,我决定测试一个第三方软件包,因为我知道它可能无法像我所希望的那样工作。在这一点上,我在分支a中做了一些更改,但我没有准备或提交这些更改。我继续结帐一家新的分行(
branch\u b
)。我玩弄了这个“测试分支”,然后决定删除它。首先,我检查了原始分支机构:

git checkout branch_a
然后,我删除了分支,认为我所做的所有更改也会被删除:

git branch -d branch_b
因此分支被删除了,但当我回到
branch_a
继续从我离开的地方工作时,我看到我在
branch_b
中所做的更改仍然存在。因为我以前没有提交任何内容,所以我不知道如何将分支b之前和分支b之后的更改分开。这还可能吗

就“过程”而言,有没有更好的方法来创建和删除测试分支?例如,我是否应该使用
git reset--hard

使用
gitk--all
查看当前哪个分支指向哪个提交

如果您没有提交更改,git对您的更改一无所知

使用
git status
检查工作树中的文件是否与git已知的文件不同。它还将告诉您如何改变这一点

在更改分支之前,请确保提交更改(让当前分支知道您的更改)或放弃更改。永远不要用未提交的更改更改分支

它还将有助于为shell配置一个好的git提示符。对于bash,您可以使用以下内容:

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '
GIT_PS1_SHOWDIRTYSTATE=yes # show changed files as `*`
GIT_PS1_SHOWUNTRACKEDFILES=yes # show new files as `%`
GIT_PS1_SHOWSTASHSTATE=yes 
GIT_PS1_SHOWUPSTREAM=auto

如果将提示设置为这种方式,只需确保在更改分支之前,它不会显示
*
%
。如果它确实使用了git status来帮助做什么。

我将猜测发生了什么

您在
分支机构a
中进行了更改。你没有承诺。您签出了新分支
分支b
,做了一些事情,没有提交。现在您切换回
分支a
。git确实会让您携带一个脏的工作目录

清理它(假设我的猜测是正确的)

为了清理您的混乱,请执行一个
git status
。您需要
git为
branch\u a
添加您想要的所有项目。然后执行
git提交
,以在
分支中保存所需内容。请注意,它仅提交您添加到阶段的项目

现在,您可以自由地返回到
branch\u b
git在那里添加您想要的东西,并将其提交
git status
提供了很好的帮助文本,可以在整个过程中为您提供帮助

我推荐的工作流程:

您在分支机构a上工作。你有了一个尝试不同事物的想法。如果您认为您将在15分钟内返回分支a
,请执行
git stash save
。这将使
分支\u a
内容保持分离。如果你想活得更长,就去做吧。别担心,您可以稍后用一个交互式的rebase来清理它:
git-rebase-i
。隐藏是有点烦人,有闲逛,你可以不小心删除或弹出他们,当你不想

现在回到
master
,创建
branch\u b
。我最喜欢的方式是一体式命令
git checkout-b branch\u b
。现在你可以在那里工作了。一旦你完成实验,再次隐藏或提交。记住,只要你不推,你就可以随意地提交,然后用交互式重定基来清理它


检查分支机构a并继续在那里工作。如果你藏了什么东西,把它打开:
git stash pop
。否则,您已提交,并且它已经在那里等待着您。

您确定没有将更改隐藏或提交到
分支机构a
?通常,当您的工作目录不干净时,git不允许您签出分支。如果您真的没有隐藏或提交更改,那么您就倒霉了,必须手动恢复
分支\u b
更改,git无法知道您想要保留什么。不,没有隐藏或提交任何更改。新的签出工作正常,只是给了我这样一条消息:
mdb/schema.rb
M log/development.log
切换到一个新分支“branch_b”
看起来我应该使用git stash!是的,或者只是承诺。使用git/分布式版本控制,您通常希望经常提交。您可以随时挤压提交/分支,或者在使用@dtech git合并回master时将所有内容整齐地组织起来,这样即使使用脏工作树也可以更改分支,例如,如果新分支指向与旧分支相同的提交。@user2301903请将
git branch-vv
的输出添加到您的问题中。酷,gitk真的很有用+1获取git提示提示提示。有没有办法加快速度??当我修改bash提示符时,每次需要显示提示符时,它都会延迟一些时间。是的,这基本上就是我所做的,但我也删除了
branch\u b
,认为它会放弃在该分支中所做的更改。我用手把它修好了,因为它不太复杂。下次,我将使用
git stash
,并更频繁地提交(而不是在达到“里程碑”之后)