¿Cómo configuro Git para extraer automáticamente de la twig actual cuando se utiliza "git pull"?

Con nuestra configuration actual siempre debe ingresar el nombre de la twig (es decir: git pull origin feature-branch "al hacer un pull. Ya he cometido el error de pasar de una twig a otra, fusionando accidentalmente dos twigs con dos muy diferentes Release. Me gustaría evitar esto configurando Git para que simplemente escribiendo git pull tire de la twig actual en la que se encuentre.

¿Cómo hago esto?

Puede crear una twig de seguimiento. Del libro de Git ( http://git-scm.com/book/en/Git-Branching-Remote-Branches ):

Cuando clonas un repository, generalmente crea automáticamente una twig master que rastrea el origin/master . Es por eso que git push y git pull trabajan de la caja sin más arguments. Sin embargo, puede configurar otras twigs de seguimiento si lo desea, las que no rastrean las twigs en el origin y no rastrean la twig master . El caso simple es el ejemplo que acabas de ver, ejecutando git checkout -b [branch] [remotename]/[branch] . Si tiene la versión 1.6.2 o posterior de Git, también puede usar la taquigrafía --track :

 $ git checkout --track origin/serverfix Branch serverfix set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "serverfix" 

Esto funcionó para mí:

 git branch --set-upstream-to=origin/branch_name branch_name 

Después de hacer esto, puedo usar la siguiente syntax:

 git checkout branch_name git pull --rebase git push 

Yo también soy fanático de escribir simplemente git pull y get toda la magia.

Tienes 2 opciones:

1) git config --global branch.autoSetupMerge always

Esto asegurará que ya sea que pague una sucursal remota o cree una nueva; la información de seguimiento será manejada automáticamente por git. Entonces podrás

 git clone <some_repo> git checkout -b <new_branch> git push git pull 

Tenga en count que para push sin más palabras key, también debe configurar la opción de inserción. Lo he configurado para hacer matching , pero todos tienen su preference sobre eso. ( git config --global push.default matching )

Más información: autosetupmerge defecto en true . Cuando se establece en verdadero, esto permite a git realizar el seguimiento cuando se registra una sucursal existente en el control remoto. Por ejemplo, si haces git checkout <branch> , git manejará la información de seguimiento para que puedas hacer git pull mientras estás en esa twig. Sin embargo , no realizará esto en las twigs que cree con la opción -b . Establecer autosetupmerge para always garantiza que git maneje la información de seguimiento todo el time.

2) Al verificar una nueva sucursal, debe configurar específicamente la sucursal para que se retire del origen (también conocido como seguimiento)

 git checkout -b <branch> --track <remote>/<branch> 

Encuentro esto less útil cuando las twigs son transitorias. Si rara vez creas una nueva sucursal, debes ir con esto. Sin embargo, si eres como yo, donde solo la twig principal es persistente y cada característica tiene su propia twig nueva, entonces la opción 1 me resulta más útil.

Tenga en count que no necesita hacer la configuration de git --global . Simplemente puede escribir --local allí, y tener esa configuration específica para ese repository solamente.

Si tiene git push configurado para calcular automáticamente el nombre de la sucursal remota, puede pasar -u y también establecerá automáticamente la sucursal de seguimiento.

Para configurar git push para usar una twig remota con el mismo nombre:

 git config --global push.default current` 

Explicación para la opción -u de la 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). 

Suponiendo que su twig actual es <branch_name> :

 $ git push -u Branch <branch_name> set up to track remote branch <branch_name> from origin. Everything up-to-date 

Además, si tuviera que entrar en su file .gitconfig y hacer un pequeño cambio, puede configurarlo para que suponga automáticamente que desea presionar / jalar desde la twig actual en cualquier proyecto. Así que abre .gitconfig en el editor que quieras. Y encuentre la opción [push], configúrela como default=simple , tal como se muestra a continuación.

 [push] default = simple [pull] default = simple 

como eso. Cambiar el tirón a simple también. Ambos probablemente estén configurados en este momento. Esencialmente es exactamente la misma opción que publiqué anteriormente:

 git config --global pull.default current 

pero he encontrado que es una mejor opción. Entonces podrías usar esta misma línea pero cambiar la current a simple .

Este command debe configurar git para tirar a la twig actual … cuando se ejecuta en terminal / iTerm.

 git config --global pull.default current 

Simplemente cambie "pull" por "push" para get el mismo efecto con "git push".