Мне часто нужно разрабатывать вещи на дороге, без подключения к Интернету/сети. Я всего лишь один разработчик, поэтому до сих пор у меня просто был SVN-репозиторий на моей машине и делал чек на моем ноутбуке, когда я уходил. Проблема: это не дает мне никакого контроля над версиями на дороге.
Итак, я попытался перейти на git, который, кажется, делает то, что я хочу, но я не уверен, что правильно понимаю, как он должен использоваться в моей настройке.
По существу:
- Создал репозиторий на \myserver\share\project, используя
git init
- Клонировал этот репозиторий для машины 1 с помощью
git clone
- Клонировал этот репозиторий для машины 2 с помощью
git clone
- Работает на машине 2, используя
git commit
для фиксации любых изменений в моем локальном репозитории - Наконец, использовалось
git push
для возврата всех изменений в \myserver\share\prohect - Используется
git pull
на машине 1 для получения новых изменений из \myserver\share\project
Это работает, но команда git push
дает мне предупреждение о том, что нажатие выпадающей ветки не поддерживается, так как это может смутить индекс. Теперь я смущен, потому что сообщение также было написано серьезным тоном, а это значит, что я должен его почитать (и, действительно, gitk показывает, что у меня теперь есть две ветки: master и remotes/origin/master), но я пока не полностью поняли терминологию.
Каковы были бы правильные шаги в моей ситуации?
- Я буду работать только на машине 1 ИЛИ машине 2, никогда не на
- Я намерен использовать ветвление как способ иметь отдельную ветку для исправлений/тестов (как и обычно), но не как способ иметь несколько разработчиков
- Я действительно хочу использовать его в качестве альтернативы rsync моему SVN.
Изменить: Есть две странности. Первый - если я просто меняю файл, он говорит "Изменено, но не обновлено". что странно:
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myproject/Readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
Второе сообщение - это тот, который я считаю виновником, вывод git push:
warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated. This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: avoid seeing this message again, by configuring 'push.default' to:
warning: 'nothing' : Do not push anything
warning: 'matching' : Push all matching branches (default)
warning: 'tracking' : Push the current branch to whatever it is tracking
warning: 'current' : Push the current branch
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 333 bytes, done.
Total 4 (delta 3), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
warning: updating the current branch
warning: Updating the currently checked out branch may cause confusion,
warning: as the index and work tree do not reflect changes that are in HEAD.
warning: As a result, you may see the changes you just pushed into it
warning: reverted when you run 'git diff' over there, and you may want
warning: to run 'git reset --hard' before starting to work to recover.
warning:
warning: You can set 'receive.denyCurrentBranch' configuration variable to
warning: 'refuse' in the remote repository to forbid pushing into its
warning: current branch.
warning: To allow pushing into the current branch, you can set it to 'ignore';
warning: but this is not recommended unless you arranged to update its work
warning: tree to match what you pushed in some other way.
warning:
warning: To squelch this message, you can set it to 'warn'.
warning:
warning: Note that the default will change in a future version of git
warning: to refuse updating the current branch unless you have the
warning: configuration variable set to either 'ignore' or 'warn'.
To file:///\\myserver\share\project
129649b..1f4b957 master -> master
Итак, он говорит мне, что "вдавливание в текущую ветку" не рекомендуется, но я действительно не понимаю, как правильно это сделать.