如何阻止git在分支之间移动我的更改?

时间:2013-06-27 20:12:43

标签: git git-branch

我是git的新手,来自clearcase,我不明白为什么会发生以下情况:

假设我创建了一个git private dev分支,并对其中的文件进行了一些更改。

现在,我需要做一些其他无关的工作并检查主分支。

Git会自动将我的更改从我的私人分支转移到我的本地主人。

我发现这非常直观。我有私人开发分支的原因是因为我不希望我的更改去其他地方,直到我准备好了。为什么git在没有我这么说的情况下移动它们。

是的,有git stash,但是一旦你有几个开发人员同时进行或者你需要经常切换,它就是一个可以跟踪stashes的苦差事。我宁愿这些更改不会在分支机构结账时使用。如果你忘记藏匿在疯狂的时刻,恐怖事件会与你成为朋友。

我错过了一些会避免这种情况的配置吗?

非常感谢!

3 个答案:

答案 0 :(得分:3)

最简单的方法是在检查master之前将更改提交到private_dev分支。

  

我希望更改不会与分支机构结帐一起使用。

甚至还有两个回购:

  • 您永远不会推送的(并且您可以在private_dev分支中提交)
  • 您只需要提取master分支(来自第一个本地私人仓库),然后推送到您想要的任何遥控器。

这样,你永远不会误推你的private_dev分支。

答案 1 :(得分:1)

这就是我喜欢做的事情:

git config --global alias.temp '!git add -A && git commit -m "Temp"'
git config --global alias.pop 'reset HEAD~'

现在,当您想将现有工作留在一个分支上并切换到另一个分支时:

git temp
git checkout other_branch

当你想转回时:

git checkout original_branch
git pop

答案 2 :(得分:1)

我的猜测是您没有将更改提交到您的私有分支,因此git将其视为对工作目录的未跟踪更改。当您签出另一个分支(例如master)并且未跟踪的更改不会导致任何冲突时,git不会做任何修改它们的操作。这是一件好事,因为否则你可能会覆盖你一直在做的工作。

为避免这种情况,请务必在执行git add更改分支之前运行git commitgit checkout。或者,您可以使用git stash将更改存储为临时提交。当您使用结帐返回​​私有分支时,请运行git stash apply以检索以前的更改,或运行git stash pop以检索它们并将其从存储堆栈中删除。