Я немного 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
Следует отметить, что та же проблема возникает в реверсах - после нажатия на мастер, я не могу нажать на песочницу, не проверив мастер, не выполнив извлечение и не переключившись обратно в песочницу.
Должен быть более простой способ - любая помощь будет признательна.