没关系,因为他明确设置了基本提交(develop
)。myfeature
命令运行后,无论之前签出什么,他都会在分支上。
develop
是可能跟踪origin/develop
您的远程跟踪分支的本地分支。
没有。git checkout -b myfeature
,没有明确的起点,将在您的HEAD
. 如果你在develop
分支的顶端,myfeature
将基于develop
.
不完全是。myfeature
引用与引用提示相同的提交develop
。没有什么是“复制”的。当您在myfeature
签出时提交更改时,myfeature
提示将更新为新的提交。develop
不会改变。
如果您想在远程位置查看更改,则需要推送到远程位置。只是合并到本地分支不会对远程端做任何事情。
如果你想“完成”你的功能,git-flow-style,我猜你想要在开发部分合并一个完成的功能:切换到develop
、合并myfeature
、删除myfeature
,然后将现在更新的内容推develop
送到origin
.
[e] 更多答案:
- 如果我从开发内部分支,那和做的一样;git checkout -b myfeature 在不开发时开发?
新分支从这develop
两种情况开始。(git branch
工作方式相同,但它不会像git checkout -b
那样将您切换到新分支。)
- 为了完成我的功能,我会检查开发 > git pull > git merge myfeature > git push origin (aka origin/develop)?
粗略地说,虽然git push origin
并不总是“又名起源/发展”。默认情况下git push origin
,将推送所有同名(或已设置为跟踪)分支的本地分支。(您可以使用配置设置更改默认值push.default
。)git push origin develop
只会将您的本地开发分支推送到源的开发分支,这就是您想要的。
- 如果我在合并之前不拉,我冒着覆盖其他人所做的新提交的风险,对吗?
仅当您强制推动时(说真的,不要那样做)。您可以在合并后进行拉动,但实际上您将合并两次。首先进行拉取效果更好,但如果不这样做,您不会有丢失数据的风险。
当然,如果其他人已将更新推送到origin/develop
并且您想要合并他们的更改。本质上,如果你想保持你的特性分支是最新的并且你还没有准备好合并develop
到.myfeature
develop
- myfeature 是否每个都合并到发布分支中,还是应该总是回到开发中?
在 git-flow 系统中,myfeature
应该总是回到develop
,而发布分支总是从develop
. develop
应该是为外部暴露做好准备的更改分支——用于集成测试、候选发布等——以及代表项目当前开发状态的分支。这是所有新事物的起点。你不想在myfeature
分支和一些随机发布分支中结束你的工作,但不是主线develop
。