Чи існує конфігураційний спосіб встановити це без необхідності вказувати, яка гілка?
Відповіді:
Git вже тягне лише поточну гілку. Якщо гілка налаштована як гілка відстеження, не потрібно вказувати віддалену гілку. git branch --set-upstream localbranch reponame/remotebranch
налаштує відносини відстеження. Потім ви видасте, git pull [--rebase]
і лише ця гілка буде оновлена.
Звичайно, всі гілки віддаленого відстеження та всі посилання на пульт будуть оновлені, але буде змінено лише вашу локальну гілку відстеження.
Корисний псевдонім Bash для скорочення набору цієї загальної операції:
# Add an alias to pulling latest git changes into your same branch
alias pullhead='git pull origin $(git rev-parse --abbrev-ref HEAD)'
Функція Powershell, яка робить те саме:
Function pullhead {
$cur_head="$(git rev-parse --abbrev-ref HEAD)"
& git pull origin ${cur_head}
}
Я просто зробив це так:
git pull origin "$(git branch | grep -E '^\* ' | sed 's/^\* //g')"
або
git pull origin $(git rev-parse --abbrev-ref HEAD)
Це витягує поточну git branch
гілку з віддаленого джерела та витягує цю гілку.
Зверніть увагу, що, як сказав Сет Робертсон, коли не наводяться аргументи, змінюється лише поточна гілка, але всі віддалені гілки отримуються. Я не хочу отримувати всі віддалені гілки, тому я зробив це таким чином.
git branch
насправді не слід аналізувати інформацію про філії. Ця інформація доступна після git rev-parse
введення команди:git pull origin $(git rev-parse --abbrev-ref HEAD)
git pull origin <current-branch>
який у будь-якому випадку є типовим, правда? Ви маєте на увазі, що інші віддалені гілки (наприклад, джерело / інша гілка тощо) не оновлюються, щоб зменшити трафік?
git pull
вас може з’явитися повідомлення типу There is no tracking information for the current branch. Please specify which branch you want to merge with.
. Тоді ви завжди закінчуєте друкувати git pull origin my-feature-branch
. Мені б дуже хотілося знати, як склалася така ситуація, коли немає інформації про відстеження.
ОНОВЛЕННЯ
Стара відповідь, яку я додав, більше не працює: /. Але після того, як я отримав кілька голосів щодо версії PUSH, яку я розмістив, для мене означає, що ця відповідь насправді допомагає комусь, що закінчення приходить сюди з пошукових систем, тому я збережу цю відповідь.
Спробуйте це для нової версії git:
$ git config --global push.default current
pull.default=current
. Я бачу, що мій git clone
за замовчуванням також додано, remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
але це досить стандартно.
pull.default
змінної конфігурації. Помістивши це у конфігурації git, ви нічого не зробите.
Так, існує конфігурація, яку можна змінити .gitconfig
, наприклад:
[push]
default = current
що підштовхне поточну гілку до оновлення гілки з тим самим іменем на приймальному кінці.
Перевірити:
git config --global --get push.default
Дивіться: git-config .
--set-upstream
Прапор є застарілим і буде видалений. Отже, використовуйте --track
або--set-upstream-to
Приклад: Якщо ви хочете встановити інформацію про відстеження для цієї гілки, ви можете зробити це за допомогою:
git branch --set-upstream-to=<remote>/<branch> develop
--set-upstream-to=
постійно згадується git, коли він не знає про вашу інформацію про відстеження. Без згадки про знецінення.
Ось псевдонім git, який не припускає, що пульт є, origin
і обробляє, якщо гілка не відстежує пульт.
pullh = "!f() { set -e; set -o pipefail; arr=($(git rev-parse --abbrev-ref @{u} | sed 's/\\//\\n/')); git pull ${arr[0]} ${arr[1]}; }; f"
(Застереження: я дуже новачок, і вищесказане, можливо, можна було б значно спростити.)