Git-我的工作流的合并与重新基础
我一直在读一些关于git merge和git rebase操作是如何工作的,我认为我对这些差异有了非常基本的理解。我已经看到了图表:-)尽管如此,我仍然不清楚在我当前的工作流中使用这两个图中的哪一个是最好的 我的工作是使用performe作为SCM系统,但我在本地使用git来跟踪本地更改,进行重构,以及git可以带来的其他一些很酷的东西。我知道已经有一个工具可以帮助facility使用git和perforce(例如p4 git),但我不一定想要/需要这种开销,所以我尽量让事情尽可能简单。以下是我当前创建本地git分支机构并最终整合回主要Performce仓库的工作流程的简要说明:Git-我的工作流的合并与重新基础,git,perforce,git-rebase,git-merge,Git,Perforce,Git Rebase,Git Merge,我一直在读一些关于git merge和git rebase操作是如何工作的,我认为我对这些差异有了非常基本的理解。我已经看到了图表:-)尽管如此,我仍然不清楚在我当前的工作流中使用这两个图中的哪一个是最好的 我的工作是使用performe作为SCM系统,但我在本地使用git来跟踪本地更改,进行重构,以及git可以带来的其他一些很酷的东西。我知道已经有一个工具可以帮助facility使用git和perforce(例如p4 git),但我不一定想要/需要这种开销,所以我尽量让事情尽可能简单。以下是我
关于rebase,最棘手的事情是,当您重新设置(重新编写历史记录)您已经推送的提交时。这可能会在与其他人协作时引起很大的麻烦,但您正在使用Performance进行协作,因此不太可能遇到此问题 我的工作流程大致相同,更喜欢使用git rebase-I master。这将使所有perforce重新同步保持在更改列表的底部。因此,我似乎签出了最新版本,并做了大量更改。此外,在重新同步后,仅显示与分支相关的更改。看起来更直观,但听起来更像是风格而不是正确性~Ben正在改写你的历史。所以,这取决于你想如何保存你的历史。总的来说,Rebase使历史更加清晰 历史记录显示项目中发生的情况。但是,你不必揭露你所做的一切。想象你正在写一本书。您不必向用户显示您的写作历史记录,包括草稿版本
在我的情况下,在将主节点合并到分支时,我通常更喜欢重基而不是合并。非常有兴趣了解这个问题的进展情况-无法对您的实际问题发表评论,但是,在您尝试将分支合并到master之前立即与master进行p4同步难道不是明智之举吗?我想到的是juniochamano(git的维护者)。它是为纯git用户设计的,而不是像您这样的perforce git环境,但它仍然可以提供一些见解。MatrixFrog-非常有趣的文章,感谢链接!读完后,我想我大体上同意Junio的说法,我不应该用master的最新变化刷新我的分支。相反,当功能准备就绪时,我可以在提交之前将其合并回主功能。唯一的问题是,我的“数据”不在git控制之下(要跟踪的二进制数据超过20GB),偶尔数据会发生变化,这会破坏代码(我知道编码不好!),这迫使我从master.cristobalito刷新我的分支-你是对的。我离开了那一步,但是的,在引入分支之前,我总是在主机上进行p4同步。这让我想起了我首先需要将主机合并到分支中的另一个原因——当我在主机和分支之间进行“区分”时,我只想看到我更改的文件,而不是在我进行分支和主机中更新的内容之间更改的所有内容。在那之后,我可以使用“git diff branch master——name only | p4-x-open”这一技巧,让git吐出我更改过的任何文件名,然后用performance打开它们。在我的用例中,似乎没有必要也可能不希望使用rebase。能够回顾我的本地历史记录以跟踪我的更改/进度对我来说是件好事(这是我首先将git添加到工作流中的原因之一)。