Чи існує конфігураційний спосіб встановити це без необхідності вказувати, яка гілка?
Відповіді:
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"
(Застереження: я дуже новачок, і вищесказане, можливо, можна було б значно спростити.)