我已经使用git-flow
创建了一些新项目。基本上,我已经完成了一些编码,然后编写了确切的git
命令:
git flow init (and a bunch of enters)
git remote add origin <my_repo_address>
git flow feature start Argparsing
git add .
git commit -m "<message1>"
git rm tests/*
git commit -m "deleted unused stuff"
git flow feature publish
好吧,我想看看在我的feature/Argparsing
分支上有两次提交。我转到GitHub
上的远程存储库,看到以下内容:
因此,在第二条提交消息中,我添加了Initial commit
,以强调这是我进行的第一次提交。但是好吧,我猜我不必这样做,因为git-flow
首先为我添加了一个单独的Initial提交。
如您所见,提交为空:
所以我的问题是:我猜这是一种理想的行为,那么只有当我实际使用某功能启动回购或仅是这种情况时,它才会发生吗?顺便说一句:初始化git-flow
回购的正确方法是什么?我的意思是,在git flow init
之后,我应该将某些内容提交(并可能推入)到develop
或master
上,还是应该继续使用我的功能,然后合并到develop
,然后有一天去master
?
答案 0 :(得分:2)
它只会在我真正使用某功能启动回购时发生吗?还是总是这样?
初始空提交happens as part of git flow init
if there is no HEAD
。如果您要创建全新的存储库,那将是正常的。
一段时间后,在存储库wasn't well-supported中重新建立了第一次提交,因此许多开发人员习惯于通过git commit --allow-empty
创建一个初始的空提交。在Git版本1.7.12中添加的--root
的{{1}}参数使此过程的必要性降低,尽管从空提交开始可能很难改变。我今天仍然这样做。
由于most recent commit上的nvie/gitflow
是在2012年9月,大约在git rebase
中添加了--root
自变量,因此保留此工具也就不足为奇了旧的最佳做法。
初始化git-flow存储库的正确方法是什么?我的意思是,在git flow init之后,我应该将某些内容提交(或可能推入)到开发或掌握中,还是应该继续开发我的功能,然后合并以进行开发,然后有一天要掌握?
这确实取决于您的用例,但是我解释original model时说,应该在功能分支(git rebase
)中完成新工作,然后再完成(git flow feature start
)。
该模型实际上并没有说太多关于将更改推送到中心位置的事情,这也是有道理的,因为Git是一个分布式版本控制系统,旨在与任意遥控器(或没有遥控器)一起使用。如果您使用的是GitHub(您已经添加了该标签,所以我假设您已经使用了),则推送更改可能很有意义。