использование git с удаленным репозиторием 'origin' - PullRequest
4 голосов
/ 21 января 2011

Я просто набираю git, после многих лет svn и cvs.Большинство из них мне знакомы, но я не чувствую, что моя обычная последовательность использования оптимальна.

Моя настройка : я занимаюсь разработкой на своей рабочей станции с локальной системой,клонированный репозиторий с сервера origin, который в моем проекте рассматривается как "главный" репозиторий.Я регулярно делаю git fetch, проверяю новые обновления, затем git merge, чтобы объединить их, если они актуальны.

Однако, когда я работаю и проверяю ветку кода, мои сомненияложь.

Обычная последовательность, которую я использую:

git branch somenewbranch
git checkout somenewbranch
... work work work ...
git add [changed files]
git commit
git checkout master
git merge somenewbranch
git branch -d somenewbranch

Вот то, что я думаю, можно оптимизировать:

git push origin master:blahblah         # This won't let me push to master branch
ssh origin
cd repodir
git merge blahblah
git branch -d blahblah
logout
git status                              # this shows me I'm still ahead
git pull origin                         # to bring them back in sync
git remote show origin                  # shows I have a stale blahblah branch
git remote prune origin                 # cleans that up

И теперь я синхронизировал их.Это похоже на множество дополнительных шагов для синхронизации моего локального и «основного» хранилища.

Может ли кто-нибудь помочь мне оптимизировать мое использование?

Спасибо.

РЕДАКТИРОВАТЬ : Если я не делаю отдельную ветку, я получаю сообщение об ошибке:

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.

Ответы [ 2 ]

3 голосов
/ 21 января 2011

Если вы просто используете git push после внесения изменений и опережаете origin/master, то все должно идти хорошо.Почему вы явно указываете другую удаленную ветку, в которую вы хотите отправить свою локальную основную ветку?

У вас проблемы с отправкой в ​​исходный репозиторий, поскольку он жалуется на извлеченную ветку?Если это так, вы делаете общую ошибку.Вам нужно использовать чистое репо в качестве источника, чтобы Git мог принимать изменения, не вызывая проблем с рабочей копией на сервере.

Настройка частного (чистого) репо

Как преобразовать обычный Git-репозиторий в пустой?

1 голос
/ 21 января 2011

Я бы посоветовал получить и объединить ПРЕЖДЕ ЧЕМ вы нажмете на ORIGIN.Если вы сделаете это, вы сможете перейти непосредственно к вашей основной ветке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...