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, что означает, что вы все настроены.