gpt4 book ai didi

git - 暂时从 Git 分支中删除功能

转载 作者:IT王子 更新时间:2023-10-29 00:47:45 26 4
gpt4 key购买 nike

我们使用 git 来管理我们应用程序的代码存储库,并且有一种情况我还没有遇到过,但我想很常见。

我们想暂时删除一个功能,然后在将来的某个时候重新添加。我试图想象支持这一点的分支结构,或者如果我们应该做一些简单的事情,例如从代码中删除该功能,并在准备好重新添加它时,从提交历史记录中重新创建它。

有人能指出我处理这种情况的正确方向吗?

最佳答案

您可以暂时删除早于 Git 存储库历史记录的功能的一种方法是进行删除该功能的提交。然后,当您想重新添加该功能时,只需将其删除的 revert the commit 即可。这将执行反向补丁,这意味着它将反向应用更改,这将有效地重新添加功能:

git revert <sha of commit that removed the feature>

如果你想确保以后可以轻松地重新添加功能,同时保持它与代码更改同步,你可以在删除它后立即创建一个单独的功能分支,然后只像对待任何其他功能分支一样对待该分支,并通过经常将其重新设置为 master (或 develop 分支,如果这是你想要的方式)来保持同步,边走边解决冲突。

所以基本上,您会想做这样的事情(如果您使用 GitHub FlowGit Flow 分支策略并不重要,两者都使用最终 merge 到主线中的功能分支的概念开发。为简单起见,我将在此示例中使用 GitHub Flow):

# On master branch
git commit -m "Remove feature X" # Creates commit 1234567...

# Now make feature branch
git checkout -b saved-feature

# Immediately put the feature back in the feature branch
git revert 1234567

# When you want to sync branch with master, just use rebase.
# Rebase allows you to sync frequently, since it doesn't
# leave behind a bunch of merge commits.
#
# From the feature branch:
git rebase master # Resolve any conflicts as needed.

# N commits later, you decide it's time to merge the feature
# back in. You can use fast-forward or non-fast-forward merge,
# it's up to you.
#
# Using fast-forward merge with master checked out (assuming
# feature branch was just rebased onto master):
git merge saved-feature

# Or forcing a merge commit, if that's what you want:
git merge --no-ff saved-feature

假设您已将 saved-featuremaster(或 develop,如果您使用的是它)经常保持同步,解决冲突随着您的进行,您应该可以毫无问题地将功能重新 merge 。

引用文档:

关于git - 暂时从 Git 分支中删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com