2014-07-10 3 views
2

У меня есть один репозиторий на github.com, где я сделал определенные изменения в файле README.md с веб-сайта, мой локальный репозиторий (который находится на локальном хосте) уже создан и совершает к этому. Нужна ваша экспертная консультация о том, как я могу объединить изменения, которые я сделал с веб-сайта github, доступным в моем локальном репозитории.Как слить изменения в локальный репозиторий

Я не пробовал запрос на pull, так как он внесет изменения в мой существующий файл.

, пожалуйста, подскажите, пожалуйста.

+0

Синхронизация не объединяет файлы? –

+0

Я не пользуюсь никакими клиентами (клиентами github), я пытаюсь сделать это из Linux. – OmPS

ответ

-1

С помощью git Pull на самом деле является извлечениями и слиянием, поэтому, если вы совершили локальные изменения, они все равно будут находиться в вашем локальном репозитории, вы добавите еще одно добавление, которое является README.md издание. Вам не хватает большой точки VCS, которая является ветвлением, что было бы хорошей идеей для вашего локального репозитория.

+2

Я не думаю, что вручную внесение изменений, сделанных через веб-интерфейс, является хорошим советом. – danijar

+0

@ danijar Я согласен, однако в качестве последнего средства это вариант, он просто не использует VCS или git. – maliddle

+1

Учитывая сложившуюся ситуацию, я думаю, что сейчас самое лучшее время, когда начинающий поток узнает о конфликтах слияния. Так что хорошо, что вы удалили этот параграф. – danijar

1

У вас есть конфликт слияния, который происходит, когда две стороны изменяют один и тот же файл.

Во-первых, обязательно зафиксируйте локальные изменения. Затем git pull. Когда возникают конфликты слияния, которые не могут быть автоматически разрешены, вам нужно будет открыть соответствующие файлы в текстовом редакторе и вручную выбрать, какие строки вы хотите с какой стороны. Вот как это будет выглядеть.

<<<<<<< HEAD 
Text added locally 
======= 
Text added on the remote 
>>>>>>> master 

После того, как вы исправили линию и удалить разделители, добавленные мерзавца, git add файл и завершить слияние с git commit. Поскольку вы ранее делали локальные изменения, вы всегда можете откатить, если вы перепутали конфликтующие файлы.

Для получения дополнительной информации, я предлагаю прочитать руководство Github около resolving merge conflicts.

+0

Спасибо, но можно вытащить только один файл, я имею в виду только тот, в котором сделано изменение. – OmPS

+0

Вы можете вытащить коммиты, а не файлы. Git может объединять отдельные файлы, но вам не о чем беспокоиться, потому что веб-интерфейс создал фиксацию для ваших изменений. Более того, только изменения все равно потянутся. – danijar

0

Прежде чем сходить в локальный репозиторий, лучше всего перенести все ваши ожидающие изменения.

Самый простой способ объединить изменения есть с git merge:

git fetch origin 
git merge origin/master 

(Shortcut: git pull origin master)

Другой вариант заключается в перебазироваться на вершине изменения с git rebase:

git fetch origin 
git rebase origin/master 

(Ярлык: git pull --rebase origin master)

С обоими параметрами, если есть изменения, которые вы сделали с помощью веб-интерфейса GitHub, который конфликтует с изменениями, которые вы сделали локально, у вас будут конфликты, которые вы должны разрешить вручную.

Если все идет хорошо (без конфликтов), две операции (слияние или переадресация) приведут к одному и тому же контенту, но к другому порядку коммитов. При слиянии, если вы посмотрите на историю, используя gitk, вы увидите две ветви, которые слились в одну. С rebase вы увидите прямую линию с появлением изменений в веб-интерфейсе, а ваши локальные изменения появятся позже. Это также означает, что идентификаторы фиксации измененных версий будут переписаны. Некоторые люди считают, что прямая линия истории выглядит более организованной. Но в любом случае, как я сказал ранее, содержимое ваших файлов будет точно таким же.

Я знаю, что вы попросили слить изменения в один конкретный файл.Но две ветви Git (GitHub и ваши местные) расходились, и только операции слияния или перезагрузки могут вернуть их вместе. Существуют и другие, менее чистые способы получить то, что вы хотите, но лучше всего использовать один из этих рекомендуемых способов.

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