我是git的新手,来自clearcase,我不明白为什么会发生以下情况:
假设我创建了一个git private dev分支,并对其中的文件进行了一些更改。
现在,我需要做一些其他无关的工作并检查主分支。
Git会自动将我的更改从我的私人分支转移到我的本地主人。
我发现这非常直观。我有私人开发分支的原因是因为我不希望我的更改去其他地方,直到我准备好了。为什么git在没有我这么说的情况下移动它们。
是的,有git stash,但是一旦你有几个开发人员同时进行或者你需要经常切换,它就是一个可以跟踪stashes的苦差事。我宁愿这些更改不会在分支机构结账时使用。如果你忘记藏匿在疯狂的时刻,恐怖事件会与你成为朋友。
我错过了一些会避免这种情况的配置吗?
非常感谢!
答案 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 commit
和git checkout
。或者,您可以使用git stash
将更改存储为临时提交。当您使用结帐返回私有分支时,请运行git stash apply
以检索以前的更改,或运行git stash pop
以检索它们并将其从存储堆栈中删除。