相关疑难解决方法(0)

Git工作流程和rebase与合并问题

我和其他开发人员一起在一个项目上使用Git几个月了.我有几年的SVN经验,所以我想我给这段关系带来了很多包袱.

我听说Git非常适合分支和合并,到目前为止,我只是没有看到它.当然,分支很简单,但是当我尝试合并时,一切都变得很糟糕.现在,我已经习惯了SVN,但在我看来,我只是将一个低于标准的版本系统换成了另一个.

我的搭档告诉我,我的问题源于我不顾一切地合并,并且我应该在很多情况下使用rebase而不是合并.例如,这是他所规定的工作流程:

clone the remote repository
git checkout -b my_new_feature
..work and commit some stuff
git rebase master
..work and commit some stuff
git rebase master
..finish the feature
git checkout master
git merge my_new_feature
Run Code Online (Sandbox Code Playgroud)

基本上,创建一个功能分支,始终从主分支到分支,并从分支合并回主分支.需要注意的重要一点是,分支始终保持在本地.

这是我开始的工作流程

clone remote repository
create my_new_feature branch on remote repository
git checkout -b --track my_new_feature origin/my_new_feature
..work, commit, push to origin/my_new_feature
git merge master (to get some changes that my partner added)
..work, commit, push to origin/my_new_feature
git merge master
..finish …
Run Code Online (Sandbox Code Playgroud)

git version-control git-merge git-rebase

949
推荐指数
10
解决办法
20万
查看次数

Git分支模型适合您?

我们公司目前正在使用简单的主干/发布/修补程序分支模型,并希望了解哪些分支模型最适合您的公司或开发过程.

  1. 工作流程/分支模型

    以下是我所看到的三个主要描述,但它们彼此部分相互矛盾,或者不足以解决我们遇到的后续问题(如下所述).因此,我们的团队到目前为止默认不是那么好的解决方案.你做得更好吗?

  2. 合并与变基(纠结与连续历史)

    是应该pull --rebase还是等待合并回到主线直到你的任务完成?我个人倾向于合并,因为这保留了一个任务开始和完成的基础的视觉图示,我甚至更喜欢merge --no-ff这个目的.然而,它有其他缺点.还有许多人没有意识到合并的有用属性 - 它不是可交换的(将主题分支合并到master中并不意味着将master合并到主题分支中).

  3. 我正在寻找一个自然的工作流程

    有时会发生错误,因为我们的程序无法通过简单的规则捕获特定情况.例如,早期版本所需的修复当然应该足够下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?).然而,在开发人员意识到它应该被放置在更下游之前,并且如果已经推送(更糟糕的是,合并或基于它的某些东西)之后,修复使其成为主人,那么剩下的选项就是挑选,其相关的危险.您使用了哪些简单的规则?同样在这包括一个主题分支的尴尬必然排除其他主题分支(假设它们从共同基线分支).开发人员不希望完成一个功能来启动另一个功能,感觉就像他们刚写的代码不再存在

  4. 如何避免创建合并冲突(由于挑选)?

    创建合并冲突的可靠方法似乎是在分支机构之间进行挑选,它们永远不会再次合并?在任一分支中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流程的一个原因.

  5. 如何分解成外用分支?

    我们意识到从主题分支组装完成的集成是很棒的,但是我们的开发人员经常工作没有明确定义(有时像"戳"一样简单),如果某些代码已经进入"misc"主题,根据上面的问题,它不能再被带出去了吗?您如何使用定义/批准/毕业/发布您的主题分支?

  6. 代码审查和毕业等适当的程序当然是可爱的.

    但是我们根本无法保持足够的东西来管理这个 - 任何建议?整合分支,插图?

以下是相关问题列表:

还要看看Plastic SCM在任务驱动开发上写的内容,如果不是Plastic的选择,请研究nvie的分支模型及其支持脚本.

git merge workflow release cherry-pick

371
推荐指数
3
解决办法
6万
查看次数

小开发团队的Git分支策略

我们有一个网络应用程序,我们几乎每天更新和发布.我们使用git作为我们的VCS,我们当前的分支策略非常简单和破坏:我们有一个主分支,我们检查我们感觉良好的变化.这是有效的,但直到我们检查一个突破性的变化.

有没有人对小型团队有最喜欢的git分支策略,满足以下要求:

  1. 适用于2到3名开发人员的团队
  2. 轻量级,而不是太多的过程
  3. 允许开发人员轻松地隔离有关错误修复和更大功能的工作
  4. 允许我们保持稳定的分支(当我们必须让我们的生产服务器工作时,那些'哦'废话'的时刻)

理想情况下,我很乐意看到一个开发人员处理新bug的分步过程

git branch git-branch

183
推荐指数
4
解决办法
9万
查看次数

git提交频率

自从我从svn切换到git后,我每次重新编译时都开始做更多的提交,我的测试通过了我的工作.最后我最终按功能提交功能.

我还使用像emacs,wordpress等git跟踪一些其他项目.我看到他们不经常提交.所以我想知道你怎么承诺?

git version-control commit

52
推荐指数
5
解决办法
1万
查看次数

Git和Github的最佳工作流程

我正在寻找一些关于如何使用Git和GitHub为我的团队正确构建工作流程的建议.

我们是最近的svn转换器,我们应该如何最好地设置我们的日常工作流程.

这里有一点背景:我对命令行感到满意,我的团队很新,但可以使用命令.我们都在与3个环境(开发,分期和生产)合作开展同一个项目.我们是开发人员和设计人员的混合体,因此有些人使用git GUI和一些CLI.

我们在svn中的设置是这样的:

  • 我们有一个开发,分期和生产分支.
  • 当人们对代码有信心时,他们会提交然后将其合并到分段中.
  • 服务器会自行更新,在发布日(每周)我们会做差异并将更改推送到生产服务器.

现在我设置了这些分支,并在服务器运行的情况下完成了这个过程,但实际的工作流程让我感到困惑.

每当有人对文件进行更改时,他们就会创建一个新的分支,提交,合并和删除该分支,这似乎有些过分.根据我的阅读,他们可以在特定的提交(使用哈希)上做到这一点,我有这个权利吗?这是用Git解决问题的可接受方式吗?

任何建议将不胜感激.

svn git workflow command-line github

17
推荐指数
1
解决办法
2946
查看次数

内部开发的git使用的工作流程描述

我工作的公司想要每月发布,我试图说服他们切换到git.我相信处理这个问题的正确方法是为每个版本(即每月)建立一个集成分支,并在集成分支上设置功能分支以进行新的开发和更改.环境中存在相互依赖关系,有时由于其他外部系统所需功能的延迟,功能必须推迟到不同的月份.这些项目通常会同时对2-3个集成分支机构进行活动,并且该活动仅限于一组相互密切联系的人员.(这意味着我怀疑我们可以使用变基,只要我们在最后一个整合分支上 - 至少有一半人的半数时间都是如此)

有相当多的人参与其中,所以我真的需要一些关于如何做到这一点的直接指导,既有分支/合并结构的逻辑解释,也有实际的git命令.有谁知道这样的描述非常适合这样的工作流程?

git workflow

16
推荐指数
1
解决办法
6480
查看次数

无法理解Git分支,合并和rebase

我知道这个帖子说rebase是针对teamMates的小变化,而是针对大变化进行合并.

我在以下目录结构中保留了三个队友的三个Gits,我们都有相同的初始代码:

project 
      | - I
      | - myTeamMate1
      | - myTeamMate2
Run Code Online (Sandbox Code Playgroud)

分支机构不在同一个Git中.这意味着我不能使用rebase和merge.我使用vimdiff在teamMates之间同步更改.但是,这很费时间.

我没有成功尝试进行以下目录结构,其中所有分支都在一个Git下:

project
      | - I - myTeamMate1 - myTeamMate2
Run Code Online (Sandbox Code Playgroud)

但是,我为我和我的队友运行了clone命令:

git clone <url>
Run Code Online (Sandbox Code Playgroud)

我为队友运行第二个克隆后收到错误消息

fatal: destination path 'dotFiles' already exists and is not an empty directory.
Run Code Online (Sandbox Code Playgroud)

我应该与3人团队一起使用哪种目录结构,以便我可以使用rebasemerge命令?

git branch rebase

9
推荐指数
3
解决办法
9715
查看次数