Git клон, за которым следует статус, показывает невоспроизводимые файлы
К сожалению, я новичок git (хотя я очень хорошо знаком с более старыми системами управления версиями, такими как cvs и svn)...
Моя конечная цель - добавить файл в удаленный репозиторий (один не на моем компьютере), клонировав этот удаленный репозиторий локально, добавив файл в локальный репозиторий, выполнив мои изменения и затем вернув мой локальный репозиторий обратно пульт дистанционного управления.
Я пробовал это:
git clone ssh://[email protected]/Users/GitRepo/Project.git
<create file locally>
git add <localfile>
git commit -m "Narg"
git push
Но он просто говорит "Все в актуальном состоянии".
Итак, я попытался шаг за шагом и еще более запутался.
git clone ssh://[email protected]/Users/GitRepo/Project.git
git status
И это говорит мне
# Not currently on any branch
# Untracked files:
followed by a long list of Untracked files.
Что кажется действительно странным, почему файлы не будут отслеживаться, если я просто клонировал репозиторий?
Если это важно, удаленный репозиторий совершенно новый, созданный с помощью svn2git.
Если я набираю
git remote show origin
он говорит мне
* remote origin
Fetch URL: ssh://[email protected]/Users/GitRepo/Project.git
Push URL: ssh://[email protected]/Users/GitRepo/Project.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushed to master (up to date)
и если я напечатаю
git branch -a
он говорит мне
* (no branch)
master
remotes/GitRepo/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Так что я просто смущен, и все работает правильно? Или я неправильно выполняю команды git? Или я неправильно создал репозиторий, поэтому команды git никогда не будут работать правильно?
Спасибо,
Крис
Ответы
Ответ 1
git config -l
если текущий git репозиторий core.precomposeunicode=true
попробуйте это,
git config core.precomposeunicode false
и вот почему. отсюда
core.precomposeunicode Этот параметр используется только для реализации Mac OS Git. Когда core.precomposeunicode = true, git возвращает unicode-декомпозицию имен файлов, сделанных Mac OS. Это полезно при совместном использовании репозитория между Mac OS и Linux или Windows. (Git для Windows 1.7.10 или выше, или git под cygwin 1.7). Когда false, имена файлов обрабатываются полностью прозрачно с помощью Git, которая обратно совместима со старыми версиями Git.
Ответ 2
Git - замечательный инструмент, но легко потеряться без хорошей карты, где вы находитесь в форесте коммитов.
Вот как получить эту карту (я называю ее "gr" для "graph", но вы также можете назвать ее "map", если хотите):
git config --global alias.gr 'log --graph --full-history --all --color --decorate'
Это одноразовая настройка для git. Теперь, когда вы потерялись, просто взгляните на карту:
git gr
Ваше текущее местоположение обозначается словом "HEAD", а также имена всех ветвей.
Вы увидите, что в настоящее время вы не находитесь в какой-либо отрасли, что звучит намного хуже, чем есть на самом деле - на самом деле это не имеет большого значения, это просто означает, что ваши коммиты не войдут в мастер-ветку так, как вы хотите их.
Так что просто вернитесь на свою основную ветку и зафиксируйте там:
git checkout master
git add yourfile.txt
git commit -m'Narg'
git push
Также взгляните на git gr
сейчас, и вы увидите, что HEAD - это то же самое, что и master, а master - это то же самое, что и origin/master, что означает, что вы все настроены.