我正在尝试使用Git分支来创建主人的功能,但我经常最终弄乱我的git存储库:/
我在Stack Overflow上搜索了我想要实现的目标,而且我经常可以找到如何合并/分支/恢复/等等但不是在我面临的工作流程中,对我来说,可能会发生什么经常。
以下是我作为工作流程所做的事情:
其中一些操作看起来很简单,但中间部分(切换回来,掌握,应用更改然后再去分支)对我来说似乎不可能:/
我在这里:
(假设项目已经在git上,并且有些工作已被推到掌握中)
git branch feature
git checkout feature
# do some add/edit, commit, push on that branch
# Now I need to fix a bug in master :
git checkout master
# how can I get my files in the master state ?
# My best guest so far :
git revert HEAD
# do some add/edit, commit, push on master
# Finished to fix the bug, going back to continue my feature :
git checkout feature
# Again, how can I get my files to match the current state of the branch feature ?
git revert HEAD # And git asks me about a revert ? what ? I'm lost :/
# getting the recent changes from master into feature, in order to avoid later conflicts
# This can also be made often if you work with others
git fetch origin
git rebase origin/feature
git rebase origin/master
# do some add/edit, commit, push on master
# And when you have finish, merge feature into master :
git checkout master
git pull origin master
git merge feature
git branch -d feature # if you want to remove it.
这是我目前假设的工作流程,但我不确定revert HEAD
是一个很好的解决方案,当我回去时,Git更加确认这是要求我恢复到之前的状态我必须推(?!)。
有人可以帮助我澄清我的情况和/或指导我做一个伟大的(但非常简单的)解释来做我正在尝试的事情吗?
非常感谢,我真的很感激!
答案 0 :(得分:1)
git checkout master
应该已经“让您的文件处于主状态”。失败的最常见情况是您有未提交的更改。但你可以用git stash
处理这个问题。或者只是通过提交到您的功能分支,您可以随后取消该功能分支。
git revert
旨在取消您无法消除的提交(例如,已发布的历史记录),并通过创建其他提交来撤消其效果。它与Subversion和/或Mercurial命名非常不同,而且更不常用。