Как настроить Git для автоматического вытягивания из текущей ветки при использовании "git pull"?
При нашей текущей настройке вы всегда должны вводить название ветки (т.е. git pull origin feature-branch
"при выполнении тяги. Я уже совершил ошибку, вытаскивая из одной ветки в другую, случайно объединив две ветки с двумя очень разными Я хотел бы избежать этого, настроив Git, чтобы просто набрав git pull
вытащить текущую ветку, в которой вы находитесь.
Как это сделать?
Ответы
Ответ 1
Вы можете создать ветвь отслеживания. Из книги Git (http://git-scm.com/book/en/Git-Branching-Remote-Branches):
Когда вы клонируете репозиторий, он обычно автоматически создает master
, который отслеживает origin/master
. Вот почему git push
и git pull
работает из коробки без каких-либо других аргументов. Однако вы может настроить другие ветки отслеживания, если хотите - те, которые не отслеживают ветки на origin
и не отслеживать ветвь master
. Простой это пример, который вы только что видели, git checkout -b [branch] [remotename]/[branch]
. Если у вас есть Git версии 1.6.2 или более поздней, вы также можете использовать сокращение --track
:
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"
Ответ 2
Это сработало для меня:
git branch --set-upstream-to=origin/branch_name branch_name
После этого я могу использовать следующий синтаксис:
git checkout branch_name
git pull --rebase
git push
Ответ 3
Я тоже поклонник печатать только git pull
и получать всю магию.
У вас есть 2 варианта:
1) git config --global branch.autoSetupMerge always
Это гарантирует, что вы проверите удаленную ветку или создадите новую; информация о отслеживании будет обрабатываться автоматически с помощью git. Тогда вы сможете
git clone <some_repo>
git checkout -b <new_branch>
git push
git pull
Обратите внимание, что для push
без дополнительных ключевых слов вам нужно также установить опцию push. Я установил его в matching
, но каждый из них предпочитает это. (git config --global push.default matching
)
Дополнительная информация: autosetupmerge
по умолчанию - true
. Если установлено значение true, это позволяет git выполнять отслеживание при проверке уже существующей ветки на пульте дистанционного управления. Например, если вы выполняете git checkout <branch>
, git будет обрабатывать информацию отслеживания, чтобы вы могли сделать git pull
на этой ветке. Однако это не будет выполняться в ветвях, которые вы создаете с помощью опции -b
. Установка autosetupmerge
в always
гарантирует, что git обрабатывает информацию отслеживания все время.
2). При проверке новой ветки вам нужно специально настроить ветвь для извлечения из источника (ака трекинга)
git checkout -b <branch> --track <remote>/<branch>
Я считаю это менее полезным, когда ветки являются временными. Если вы редко создаете новую ветку, вы должны пойти с этим. Однако, если вы похожи на меня, где только ведущая ветка устойчива, и каждая функция имеет свою собственную новую ветвь, тогда я нахожу вариант 1 более полезным.
Обратите внимание, что вам не нужно настраивать git --global
. Вы можете просто написать --local
там и установить этот параметр только для этого репозитория.
Ответ 4
Если у вас есть git push
, который автоматически определяет имя удаленной ветки, вы можете передать -u
, а также автоматически установите ветвь отслеживания.
Для установки git нажмите для использования удаленной ветки с тем же именем:
git config --global push.default current`
Объяснение для параметра -u
из git help push
:
-u, --set-upstream
For every branch that is up to date or successfully pushed, add
upstream (tracking) reference, used by argument-less git-pull(1) and
other commands. For more information, see branch.<name>.merge in
git-config(1).
Предполагая, что ваша текущая ветка <branch_name>
:
$ git push -u
Branch <branch_name> set up to track remote branch <branch_name> from origin.
Everything up-to-date
Ответ 5
Кроме того, если вы вошли в ваш файл .gitconfig
и внесли одно небольшое изменение, вы можете установить его автоматически, предположив, что хотите нажать/вытащить из текущей ветки в любом проекте. Поэтому откройте .gitconfig
в любом редакторе, который вы хотите. И найдите опцию [push], установите ее на default=simple
, как показано ниже.
[push]
default = simple
[pull]
default = simple
вот так. Измените тягу и на простую. Оба, вероятно, установлены в текущий момент. По сути, это тот же самый вариант, что и ранее:
git config --global pull.default current
но я нашел, что это лучший вариант. Таким образом, вы можете использовать эту же строку, но измените current
на simple
.
Ответ 6
Эта команда должна настроить git на текущую ветку. При запуске в терминале /iTerm.
git config --global pull.default current
Просто измените "pull" на "push", чтобы получить тот же эффект с помощью "git push".