Обновления клонирования на Git и Github - PullRequest
0 голосов
/ 12 октября 2018

Я клонировал определенный репозиторий на Github на свой локальный компьютер.

Я создал новый репозиторий на своем собственном github, используя git clone <repo url>, а затем внес изменения в мое скопированное репо и загрузил его в мой новый репозиторий с помощью git push and commit.

Затем владелец репо добавил новые файлы.Если я клонирую этот конкретный репозиторий, он может перезаписать мою локальную копию?

Как я могу обновить свой локальный файл, не затрагивая внесенные мной изменения?Какие команды я могу использовать?

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

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

git remote add upstream <url-of-original-repo>

Это создаст новый пульт с именем upstream.Затем извлеките данные с нового пульта:

git fetch upstream

, который добавит новые ветви удаленного отслеживания с префиксом имени нового пульта (например, upstream/master).Включите изменения из исходного репозитория, объединив одну из новых веток удаленного отслеживания с вашей текущей веткой:

git merge upstream/master

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

Как только вы убедитесь, что извлекаете и объединяете альтернативную удаленную работу, вы можете объединить их в одну эквивалентную команду извлечения:

git pull upstream master
0 голосов
/ 12 октября 2018

Если вы клонировали проект, а URL не изменился, просто протестируйте

git remote show origin

и вы можете подключиться.Если origin неизвестно, вы должны git remote add origin;если происхождение изменилось, вы можете использовать git remote add origin_new.После этого вы просто продолжаете

git branch -av # list all existing branches
git fetch origin # update all refs
git checkout -b localbranch origin/remotebranch # create new branch (-b) and checkout.

Затем вы можете работать локально, используя слияние - как вы привыкли.

Если вы хотите проверить влияние изменений, взгляните на git merge --no-ff --no-commit

0 голосов
/ 12 октября 2018

Мой рабочий процесс git выглядит следующим образом: из основной ветки (в моем случае это обычно «разработка» или что-то в этом роде):

git branch -b 'NameOfFeatureImAdding

git checkout NameOfFeatureImAdding'

Это создает новую ветвь и переключается на нее, поэтому все ваши изменения записываются в эту ветку.

Когда в разработке находится новый код, который нужно развернуть, я переключаюсь на ветку, вытягиваю код,затем, если он маленький (как и должно быть), я объединяю его в свою ветвь функций.

git checkout development

git pull

git checkout NameOfFeatureImAdding

git merge development

Таким образом, моя ветвь функций идет в ногу с разработкой, упрощая будущее объединение.

GitHub имеет удобное руководство: https://guides.github.com/introduction/flow/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...