2014-02-19 3 views
1

У меня есть ветвь, которая была совершена, нажата и объединена с мастером. Он не прошел QA. Нам нужно вытащить эту ветку из мастера для выпуска. Как вытащить эту ветку из мастера. Предположим, название ветвь «чтобы быть удалены»Git: Как удалить ветку, которая уже была зафиксирована, нажата и объединена с мастером?

ответ

0

По this post

Если, с другой стороны, вы хотите, чтобы действительно избавиться от всего, что вы сделали с тех пор, есть две возможности. Во-первых, если вы еще не опубликованы какие-либо из этих фиксаций, просто сброс:

# This will destroy any local modifications. 
# Don't do it if you have uncommitted work you want to keep. 
git reset --hard 0d1d7fc32 

# Alternatively, if there's work to keep: 
git stash 
git reset --hard 0d1d7fc32 
git stash pop 
# This saves the modifications, then reapplies that patch after resetting. 
# You could get merge conflicts, if you've modified things which were 
# changed since the commit you reset to 

С другой стороны, если Вы опубликовали работу, вы, вероятно, не хотите сбросить ветку, так как это эффективно переписывание истории. В этом случае вы действительно можете вернуть фиксации. С git revert имеет очень специфическое значение: создайте фиксацию с помощью обратного патча, чтобы отменить ее. Таким образом, вы не переписываете какую-либо историю.

# This will create three separate revert commits: 
git revert 0766c053 25eee4ca a867b4af 

# It also takes ranges. This will revert the last two commits: 
git revert HEAD~2..HEAD 

# To get just one, you could use `rebase -i` to squash them afterwards 
# Or, you could do it manually (be sure to do this at top level of the repo) 
# get your index and work tree into the desired state, without changing HEAD: 
git checkout 0d1d7fc32 . 
# and then commit 
git commit # be sure and write a good message describing what you just did 
2

Вы должны иметь историю так:

A--B--C---D--E  <-- Master 
\  /
    Z--Y--X   <-- Your feature 

И вы хотите, чтобы удалить совершить D из главной ветви. Вам нужно только вернуть эту фиксацию. Существует команда мерзавец так:

git revert -m 1 [sha_of_D] 

где -m означает родительский номер фиксации.

Он создаст новую фиксацию в главном, отменив изменения, внесенные вашей веткой признаков. Для получения дополнительной информации вы можете перейти на the main source.

Смежные вопросы