哪个更好地重新设置本地或远程以保持远程主服务器最新?

时间:2021-01-02 07:56:09

标签: git bitbucket

我们使用位桶作为版本控制工具。我在一个团队中工作,我想在项目中创建一个新功能。所以,我检查了我的新功能分支(名称:feature/add_product),它跟踪 origin/master。我已经完成了我的功能,所以我确实提交并将其推送到远程存储库中。我已经创建了一个拉取请求,现在它已被批准。

现在我在这里有一种情况,在我的 PR 批准之前,团队中的某个人已将 1 个提交合并到远程主分支。所以,我的远程功能分支在远程主分支之前 1 次提交和 1 次提交。

我的问题是以下两种情况哪一种更好,可以使我的功能分支在本地和远程保持最新?

  1. 回到本地仓库的特性分支做

    git fetch && git rebase origin/master
    

    然后

    git push origin feature/add_product -f
    

    这将保持

  2. 一旦你的远程主分支是最新的,就返回到本地功能分支并保持它是最新的。

    git fetch && git rebase origin/master
    

1 个答案:

答案 0 :(得分:2)

案例 1 正是我将我的功能分支重新设置为 master 时所做的。

案例 2 听起来像是您在 BitBucket 网站上执行变基,然后从命令行执行。这是有问题的,因为每个操作都会导致完全不同的提交。如果您向本地功能分支添加更多更改并尝试推送,则会出现错误。

发生这种情况是因为提交不仅是文本更改的内容,还包含元数据,例如作者姓名和电子邮件地址以及提交发生的时间。通过在 BitBucket 上 rebase,然后再在本地,您将有两个不同的历史记录,因为具有相应更改的提交的时间戳将不相同。

话虽如此,您必须确保本地存储库和 BitBucket 存储库中的历史记录相同。一种方法是使用选项 1。如果您使用 PR 上的 rebase 按钮​​,那么您可以使用 git fetch && git reset --hard origin/feature/add_product 将您的本地分支重置为远程跟踪分支。 请注意,git reset --hard 会丢弃所有尚未提交的本地更改。这无法单独使用 git 恢复。它还将您的当前分支移动到另一个提交,这有效地丢弃了当前分支的历史记录。这是可恢复的,但仍需谨慎使用。