Git rebase для ветки, созданной несколько дней назад - PullRequest
2 голосов
/ 12 июля 2011

Мне нужна помощь в понимании git rebase для этой ситуации.Я проверил ветку, созданную примерно 10 дней назад.Я проверил, используя

git checkout -b <some name> origin/branchname

(я просто использовал другое имя для его идентификации)

После проверки, если я сделаю ребаз, находясь в этой извлеченной ветке,

git rebase origin/master

Это показывает некоторые ошибки, такие как 1) Конечный пробел - я читал об этом, но даже после попытки найти эту команду, которую я нашел в Интернете, я все еще вижу предупреждения.

 git config core.whitespace nowarn

2) CONFLICT с автоматическим объединением (добавление / добавление): конфликт слияния в ... эти файлы находятся в основной ветви, но содержимое немного изменяется в ветви извлечения.Так как мне это исправить?У меня нет полномочий изменять что-либо непосредственно в master, если это способ исправить.Эти файлы должны иметь содержимое из этой ветки оформления заказа, чтобы тестирование работало нормально, поскольку это связано с этим .. пожалуйста, уточните мне ..

regards

Ответы [ 3 ]

2 голосов
/ 12 июля 2011

Ребята в значительной степени ответили на вопрос о пробелах, но не коснулись части вопроса о перебазировании. Вот что происходит, когда вы перебазируете:

Сначала вы отправляетесь в какую-то ветку, а затем говорите:

git rebase master

Это означает, что вы хотели бы переназначить текущую HEAD (ветку вашей темы) на master. Git возвращается в историю вашей тематической ветви и в историю основной ветви и находит коммит, который является первым общим предком для них обоих. Этот коммит будет старой базой для вашей ветки тем. Затем он берет все коммиты, которые произошли с тех пор в вашей ветке, и «повторно» применяет их в порядке появления поверх текущего мастера. Иногда может возникнуть конфликт, тогда процесс перебазирования останавливается и ждет вашего разрешения. Таким образом, вы должны вручную разрешить их, отредактировав файлы и пометив их как разрешенные git add conflicted_file. Когда это будет сделано, вы должны будете сказать git rebase --continue

Теперь вы НЕ изменяете файлы в основной ветке, делая это - изменения происходят в вашей ветке тем, а разрешение конфликтов записывается в вашей ветке тем.

надеюсь, что это поможет.

1 голос
/ 12 июля 2011

Если это что-то вроде вопроса " git svn windows linux проблемы с пробелами ", который вы упомянули, то команды будут:

git config core.whitespace nowarn
git config core.autocrlf true

(чтобы сохранить эти настройки в текущем репо).
Это заставит все файлы принять один стиль eol, не давая файлу на origin / master иметь одинаковые строки с другим eol, который перебирает ваша собственная копия (что объясняет сообщения об ошибках CONFLICTS (add/add)).

Но я по-прежнему сомневаюсь в autocrlf true и предпочитаю управление стилем eol через .gitattributes файлы .

0 голосов
/ 12 июля 2011

cd в папку .git в вашем репо.Эта папка может не отображаться, если вы используете проводник, который не отображает скрытые файлы или файлы с . или _ на передней панели.Внутри папки .git у вас будет файл с именем config.Откройте его в текстовом редакторе, и вы сможете увидеть часть с именем [core].Добавьте туда whitespace = nowarn.Другое место, где вы можете найти .gitconfig, находится в вашем каталоге home, если вы используете машину с Linux.Если это в Windows, это зависит от того, как вы установили git (через cygwin или msysgit).

Если msysgit, посмотрите этот вопрос ( Куда записывается git config --global? )для местоположения файла .gitconfig.Если это cygwin, то вы можете увидеть его содержимое по cat ~/.gitconfig.

...