2012-03-04 2 views
0

Я только начал использовать GIT вчера, и я пытался что-то сделать, но я думаю, что что-то пошло не так. Позвольте мне объяснить мою ситуацию:git merge confusion

Я начал с моего рабочего каталога (мастер филиала), глядя, как этот

 
folder1 
file1 
file2 
file3 

Я создал еще одну ветку с командой $ git checkout -b X

После этого я пошел вперед и удалил все файлы, которые были в папке rm -r *, а затем добавил несколько файлов, поэтому рабочий каталог стал таким (это я думаю, что я не должен был делать)

 
xFile1 
xFile2 

Затем после некоторых тестов и после того, как я пришел на то, что отрасль была стабильной .. я хотел выполнить слияние и поэтому я сделал

 
$ git checkout -b master 
$ git merge X 

Теперь, после слияния, мой каталог (Folder1) был удален , То, что я действительно хотел, - это принести xFile1 и xFile2 в главную ветку.

Я так смущен этим, пожалуйста, помогите!

+0

Действительно ли вы наложили что-либо на ветку X? – meagar

+0

да да .. xFile1 и xFile2 были привязаны к X – Shrayas

+0

Если вы не зафиксировали * удаление * этих файлов, тогда проблем не должно быть. Вы также должны были удалить эти файлы, чтобы создать симптомы, которые вы описываете. – meagar

ответ

1

Возможно, у вас должно быть rebased вместо слияния. Бабас - это больше того, что вы пытаетесь выразить - у вас есть хороший код base в X, и вы хотите добавить то, что находится в master, поверх того, что вы положили в X.

Если вы используете git rebase X из master ветви, он будет играть все коммиты в masterна вершинеX

+0

Ой, я понимаю :) Позвольте мне быстро попробовать это и вернуться к вам – Shrayas

+0

Эй, @kelloti, я сделал «rebase», и он отлично работал, за исключением случаев, когда он применял фиксацию из X, где я удалил 'folder1', поэтому я проиграю на этом. Что-нибудь я могу сделать по этому поводу? :( @meagar, пожалуйста, посмотрите на это .. – Shrayas

+0

@Shrayas Я думаю, что вы ищете опцию '-i' для' git rebase' (интерактивный) http://book.git-scm.com/4_interactive_rebasing ,html – kelloti

0

ли вы создать коммит на ветке X перед возвращением освоить? В противном случае он всегда может создавать неудачи в git.

+0

Да, я создал фиксацию .. – Shrayas

1

Часть вашего замешательства выглядит так, будто вы предположили, что слияние игнорирует вашу операцию удаления. Фактически, когда вы удалили файлы и совершили это изменение, он вспомнил об этом. Слияние с мастером повторило удаление.

+0

Да. Я просто понял, что теперь :(Итак, каков будет правильный рабочий процесс: не нужно ли удалять файлы? Но что, если моя функция действительно не зависит от этих файлов? – Shrayas

+0

@Shraya: Если вы хотите файлы, не удаляйте файлы Если вы случайно удалили их, используйте git reset или git checkout. –

+0

ну, файлы нужны для ветви 'master', но не для функции' X', правильно? а как тогда? Я думаю, что я должен " вы удалили их, выполнив «git rm»? – Shrayas