Нажатие на одну ветку мерзавца требует тяги на другую? - PullRequest
2 голосов
/ 19 сентября 2011

Я немного git n00b, и у меня возникли некоторые трудности с ветками. Я не думаю, что этот вопрос был задан, однако, возможно, я не ищу правильные ключевые слова.

Положение: У меня есть удаленный репозиторий git, и я проверил ветку master на машине 1. Я сделал то же самое на машине 2, за исключением того, что я создал новую ветвь (песочницу) и проверил это.

Я тяну, вносю изменения, фиксирую и нажимаю на компьютере 2 - без проблем.

Затем я делаю некоторые изменения на компьютере 1, фиксирую и пытаюсь нажать, за исключением того, что я получаю эту ошибку:

To xxx@xxx.xxx.com:/project.git
! [rejected]        sandbox -> sandbox (non-fast-forward)
error: failed to push some refs to 'xxx@xxx.xxx.com:/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.

Если я делаю git pull, я получаю:

Already up-to-date.

Так что на данный момент я должен

git checkout sandbox
git pull
git checkout master
git push

А потом все хорошо. Мне кажется, что, учитывая, что это разные ветви, мне не нужно было тянуть ветку песочницы, чтобы вносить изменения в мастер. Я мог бы понять это, если бы попытался объединить их, но этого, вероятно, никогда не произойдет.

Я подозреваю, что мой конфигурационный файл немного неправильный, так что вот оно:

(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 = xxx@xxx.xxx.com:/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

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

А

(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://xxx@xxx.xxx.com/project.git

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

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

Следует отметить, что та же проблема возникает в реверсах - после нажатия на мастер, я не могу нажать на песочницу, не проверив мастер, не выполнив извлечение и не переключившись обратно в песочницу.

Должен быть более простой способ - любая помощь будет признательна.

1 Ответ

1 голос
/ 19 сентября 2011

Нашел ответ:

git config --global push.default tracking

Это, похоже, решило проблему.

Признанный ответ любезно предоставлен Этот сайт

...