Подтвердить что ты не робот

Как настроить Git для автоматического вытягивания из текущей ветки при использовании "git pull"?

При нашей текущей настройке вы всегда должны вводить название ветки (т.е. git pull origin feature-branch "при выполнении тяги. Я уже совершил ошибку, вытаскивая из одной ветки в другую, случайно объединив две ветки с двумя очень разными Я хотел бы избежать этого, настроив Git, чтобы просто набрав git pull вытащить текущую ветку, в которой вы находитесь.

Как это сделать?

4b9b3361

Ответ 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".