Як «витягнути» з місцевої гілки в іншу?


231

Це звучить так просто, але я просто не можу це зрозуміти. Я давно робив експериментальну галузь, і тепер я хотів би застосувати всі зміни, що відбулися з майстром з моменту його створення. Це все місцеве. Я хочу перейти від місцевого майстра до місцевого my_branch, але я не можу цього зробити. Схоже, це не працює, кажучи мені, що майстер не є сховищем git:

git pull master

Відповіді:


339

ви повинні сказати git звідки вийти, у цьому випадку з поточного каталогу / сховища:

git pull . master

але працюючи локально, ви зазвичай просто викликаєте злиття (витягуйте внутрішньо виклики злиття):

git merge master

1
Мені це подобається, git pull . masterтому що я думаю, що він перевірить, чи є щось нове також від походження. Це правда?
Йосія Йодер

1
@JosiahYoder ні, pull .спеціально вказує Git вийти із сховища, розташованого в .(тобто поточного каталогу / сховища). originце просто скорочення для «незалежно від розташування сховища визначається в .git/configфайлі (зазвичай встановлюється автоматично при клонуванні сховища)
knittl

1
Ой! Так git pull . masterби витягнути з локального сховища замість походження? (Ні вибірку від походження!?) Чи є якесь - або перевага git pull . masterнад git merge masterтоді?
Йосія Йодер

2
@JosiahYoder так, він би "витягнути" з локального сховища замість початкового сховища. Вибір не робиться (адже все з локального сховища вже є!). Немає переваги - обидві команди роблять більш-менш те ж саме. Якщо ви робите швидку перемотку вперед, ви можете використовувати push . origin/branch:branch(не тягнути) для оновлення місцевих гілок, не перевіряючи їх спочатку.
вязання

Я славлю тебе. Силою Грейскулла!
R Клавен

45

Те, що ви шукаєте, - це злиття.

git merge master

Коли pullви отримуєте зміни з віддаленого сховища та об'єднуєте їх у поточну гілку.


38

Досить стара публікація, але це може допомогти комусь новому в git.

Я піду

git rebase master
  • набагато чистіша історія журналів і жодних об'єднань (якщо виконано правильно)
  • потрібно вирішувати конфлікти, але це не так складно.

1
безумовно, існує багато способів для команди розробників керувати своїми процесами розгалуження. Особисто я використовую git вже 8 років, і мені ніколи не доводилося проводити перезавантаження. Я завжди використовую злиття, і воно завжди відповідало моїм потребам. Безумовно, що з базою даних, як і злиття, можуть виникнути сценарії, коли git не може автоматично визначити правильний результат "злиття" двох наборів змін. Щодо пункту, який ви зробили з приводу "чистішої" історії вчинення. Особисто я вважаю за краще зберігати всю історію
фіксацій

-1

Якщо ви шукаєте нове тягнення з іншої галузі, наприклад, від місцевого до майстра, ви можете слідувати цьому.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.