2011-09-19 3 views
2

Je suis un peu un git n00b, et j'ai de la difficulté avec les branches. Je ne pense pas que cette question a été posée, mais il se pourrait que je ne cherche pas les bons mots-clés.Pousser une branche git nécessite une traction sur une autre?

Situation: J'ai un dépôt git à distance et je l'ai vérifié la branche maître sur la machine 1. je l'ai fait la même chose sur la machine 2, sauf que j'ai créé une nouvelle branche (bac à sable) et vérifié sur .

Je tire, apporte des changements, commet et pousse des choses sur la machine 2 - pas de problèmes.

je puis faire quelques changements sur la machine un, COMMIT et essayer de pousser, sauf que je reçois cette erreur:

To [email protected]:/project.git 
! [rejected]  sandbox -> sandbox (non-fast-forward) 
error: failed to push some refs to '[email protected]:/project.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

Si je fais un git pull, je reçois:

Already up-to-date. 

Donc pour le moment je dois

git checkout sandbox 
git pull 
git checkout master 
git push 

Et puis tout va bien. Il me semble que, étant donné que ce sont des branches différentes, il ne devrait pas être nécessaire pour moi de tirer sur la branche sandbox pour pousser les changements sur le maître. Je pourrais le comprendre si j'essayais de les fusionner, mais cela n'arrivera probablement jamais.

Je soupçonne que mon fichier de configuration est un peu mal, alors la voici:

(Machine 1 - master) .git/config 

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
[gui] 
    wmstate = normal 
    geometry = 1920x970+0+0 368 203 

[remote "origin"] 
    url = [email protected]:/project.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 

[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

Et

(Machine 2 - paid) .git/config 

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = git+ssh://[email protected]/project.git 

[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

[branch "sandbox"] 
    remote = origin 
    merge = refs/heads/sandbox 

Il convient de noter, le même problème se produit dans Revers - après une poussée sur le maître, je ne peux pas pousser sur le bac à sable sans vérifier le maître, en tirant puis en revenant au bac à sable.

Il doit y avoir un moyen plus facile - toute aide serait appréciée.

Répondre

1

trouvé une réponse:

git config --global push.default tracking 

Cela semble avoir résolu par problème.

Cette réponse est une gracieuseté de This Site

Questions connexes