GitHub как протестировать чужую ветку, не переопределяя вашу

#git #github

#git #github

Вопрос:

У меня просто возник вопрос, когда я использую GitHub.

Допустим, человек А, с которым я работаю, внес некоторые изменения в файл главной ветки File B и хочет, чтобы я протестировал его перед объединением. Проблема в том, что я также отредактировал некоторые файлы, и если я получу его код, он переопределит мой. Как мне следует подойти к этому, если я хочу протестировать его код, не переопределяя свой. Должен ли я просто загрузить файл ветки и запустить его или есть более быстрый способ без загрузки его кода?

Комментарии:

1. Просто для ясности, вы оба работаете над одной и той же веткой?

2. Да, мы оба работаем над ответвлением главной ветки, чтобы реализовать функцию для нашей программы.

3. вы знаете, для чего нужны ветки?

4. @Alexan будь милым. Лол. Да, вы хотите проверить ветку пользователя A. Если вы можете назвать их ветку как хотите. Чтобы создать стенд отслеживания git checkout -b branch_name_foo person_A_remote/branch_name

5. atlassian.com/git/tutorials/using-branches

Ответ №1:

Предположим, что ваш репозиторий находится под /path/to/foo .

 cd /path/to/foo
git fetch origin master
git worktree add /path/to/bar FETCH_HEAD
  

Последняя фиксация master из удаленного репозитория извлекается на /path/to/bar . Вы можете протестировать код в /path/to/bar . Код включает изменения A, без ваших. Позже вы можете просто удалить /path/to/bar и запустить git worktree prune в /path/to/foo .

Ответ №2:

Просто проверьте удаленную ветку (после выборки), это не коснется вашей ветки, не нужно делать ничего более необычного.

 git checkout some-repo/some-branch
  

Вы начнете работать над detached HEAD , это обычный бизнес. Вы можете вернуться в свою ветку

 git checkout my-branch
  

Ответ №3:

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

Смотрите git checkout [--detach] <commit> .

Подготовьтесь к работе поверх <commit> , отсоединив HEAD (см. раздел «ОТСОЕДИНЕННЫЙ HEAD») и обновив индекс и файлы в рабочем дереве. Локальные изменения файлов в рабочем дереве сохраняются, так что результирующее рабочее дерево будет состоянием, записанным в фиксации, плюс локальные изменения.

Например, если ваш коллега отправил коммит с хэшем 9536809 :

 git fetch             # to update your copy of remote repo
git checkout 9536809  # to get your co-worker's changes
  

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

 git checkout <local-branch-name>

# OR

git checkout -
  

Обратите внимание на ту часть из документов, что при выполнении этого также будут применены ваши локальные изменения. Поэтому, прежде чем проверять коммит вашего коллеги, сначала внесите commit свои изменения или stash их.


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