哪个更好地 rebase local 或 remote 以使 remote master 保持最新状态?
Which one is better rebase local or remote to keep remote master up-to-date?
我们使用 bit bucket 作为版本控制工具。我在一个团队中工作,我想在项目中创建一个新功能。因此,我检查了我的新功能分支(名称:feature/add_product),它正在跟踪 origin/master
。我已经完成了我的功能,所以我提交并将它推送到远程存储库中。我已经创建了一个拉取请求,现在它已被批准。
现在我有一种情况,在批准我的 PR 之前,团队中有人已将 1 个提交合并到远程 master 分支。因此,我的远程功能分支落后于远程主分支 1 次提交,提前 1 次提交。
我的问题是,在以下两种情况下,哪一种情况更好,可以使我的功能分支在本地和远程都保持最新状态?
回到本地仓库的feature分支做
git fetch && git rebase origin/master
然后
git push origin feature/add_product -f
这将保持
转到我提出拉取请求以将功能分支合并到远程主机的拉取请求页面,然后单击 git 变基按钮,然后在变基后单击 git合并按钮。
一旦您的远程 master 分支是最新的,然后回到本地功能分支并保持它是最新的。
git fetch && git rebase origin/master
案例 1 正是我将功能分支变基到 master 时所做的。
案例 2 听起来像是您在 BitBucket 网站上执行变基然后从命令行执行。这是有问题的,因为每个操作都会导致完全不同的提交。如果您向本地功能分支添加更多更改并尝试推送,则会出现错误。
发生这种情况是因为提交不仅是文本更改的内容,还包含元数据,例如作者姓名和电子邮件地址以及提交发生的时间.通过在 BitBucket 上重新定位然后在本地再次定位,您将拥有两个不同的历史记录,因为具有相应更改的提交时间戳将不相同。
话虽如此,您必须确保本地存储库和 BitBucket 存储库中的历史记录相同。一种方法是使用选项 1。如果您在 PR 上使用 rebase 按钮,则可以使用 git fetch && git reset --hard origin/feature/add_product
将本地分支重置为远程跟踪分支。 注意 git reset --hard
会丢弃所有尚未提交的本地更改。 仅使用 git 无法恢复。它还将您当前的分支移动到另一个提交,这有效地丢弃了当前分支的历史记录。这是可以恢复的,但仍需谨慎使用。
我们使用 bit bucket 作为版本控制工具。我在一个团队中工作,我想在项目中创建一个新功能。因此,我检查了我的新功能分支(名称:feature/add_product),它正在跟踪 origin/master
。我已经完成了我的功能,所以我提交并将它推送到远程存储库中。我已经创建了一个拉取请求,现在它已被批准。
现在我有一种情况,在批准我的 PR 之前,团队中有人已将 1 个提交合并到远程 master 分支。因此,我的远程功能分支落后于远程主分支 1 次提交,提前 1 次提交。
我的问题是,在以下两种情况下,哪一种情况更好,可以使我的功能分支在本地和远程都保持最新状态?
回到本地仓库的feature分支做
git fetch && git rebase origin/master
然后
git push origin feature/add_product -f
这将保持
转到我提出拉取请求以将功能分支合并到远程主机的拉取请求页面,然后单击 git 变基按钮,然后在变基后单击 git合并按钮。
一旦您的远程 master 分支是最新的,然后回到本地功能分支并保持它是最新的。
git fetch && git rebase origin/master
案例 1 正是我将功能分支变基到 master 时所做的。
案例 2 听起来像是您在 BitBucket 网站上执行变基然后从命令行执行。这是有问题的,因为每个操作都会导致完全不同的提交。如果您向本地功能分支添加更多更改并尝试推送,则会出现错误。
发生这种情况是因为提交不仅是文本更改的内容,还包含元数据,例如作者姓名和电子邮件地址以及提交发生的时间.通过在 BitBucket 上重新定位然后在本地再次定位,您将拥有两个不同的历史记录,因为具有相应更改的提交时间戳将不相同。
话虽如此,您必须确保本地存储库和 BitBucket 存储库中的历史记录相同。一种方法是使用选项 1。如果您在 PR 上使用 rebase 按钮,则可以使用 git fetch && git reset --hard origin/feature/add_product
将本地分支重置为远程跟踪分支。 注意 git reset --hard
会丢弃所有尚未提交的本地更改。 仅使用 git 无法恢复。它还将您当前的分支移动到另一个提交,这有效地丢弃了当前分支的历史记录。这是可以恢复的,但仍需谨慎使用。