Как настроить 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".