Использование tar-архивов для работы с git на брандмауэре - PullRequest
0 голосов
/ 12 сентября 2011

Я, вероятно, делаю что-то не так.Сценарий: 3 компьютера: сервер, ноутбук и брандмауэр, нет подключения к Интернету.

На сервере есть git-репозиторий, на котором я хочу работать на брандмауэре, в конце концов изменения передаются тудасервер.

То, что я сейчас делаю, терпит неудачу, это происходит так: я использую ноутбук, tar и USB-накопитель в качестве агентов передачи, примерно так

laptop$ git clone http//server/.../project.git
laptop$ tar cvzf project.tar.gz project

затем перенесите смолу через USB на брандмауэр, где я делаю:

fwm$ tar xvzf project.tar.gz
fwm$ cd project
fwm$ git branch -a
* master
  remotes/origin/x1
  remotes/origin/x2

Пока все хорошо.Но если я теперь хочу проверить определенную ветку (скажем, «x1»), я получу следующее сообщение:

fwm$ git co x1
error: pathspec 'x1' did not match any file(s) known to git.

Я могу попытаться проложить свой путь по полному пути, но это кажется шатким,тоже:

fwm$ git co remotes/origin/x1
Note: moving to 'remotes/origin/x1' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>

Я говорю «шатко», потому что

fwm$ git status
# Not currently on any branch.
nothing to commit (working directory clean)

Что я делаю не так и что будет правильным в этом сценарии?

1 Ответ

2 голосов
/ 12 сентября 2011

Вы не делаете ничего плохого, просто еще не создали ни одной локальной ветки. Все ветви вида <remote-name>/<branch-name> являются удаленными ветвями и должны когда-либо отражать только текущее или предыдущее состояние этой ветви на этом удаленном устройстве, в вашем случае origin/x1. Из-за этого вы не можете делать коммиты с этими ветками (если бы вы это сделали, они больше не отражали бы состояние этой ветки на удаленном компьютере в какой-то момент в прошлом), так что git просто не позволяет вам фактически проверять эти ветки. Вместо этого вы переходите в состояние, известное как безголовая ветвь, которую вы можете принять, но если вы переключите ветки, ваши изменения будут потеряны, поскольку у вас нет имени ветки для ссылки (вы можете посмотреть эти коммит в reflog хотя).

Все, что вам действительно нужно сделать, - это создать локальную ветку для работы после распаковки git-репозитория, но это может быть хорошим вариантом использования для git bundle

...