Я новичок в Git. Недавно я переместил проект Rails из Subversion в Git. Я следовал этому руководству здесь: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/
Я также использую unfuddle.com для хранения своего кода. Я делаю изменения на своем ноутбуке Mac в поезде на работу и обратно, а затем подталкиваю их к развязке при наличии сетевого подключения с помощью следующей команды:
git push unfuddle master
Я использую Capistrano для развертываний и извлекаю код из репозитория unuddle, используя основную ветку.
В последнее время я заметил следующее сообщение при запуске «git status» на моем ноутбуке:
# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)
И я не понимаю, почему. Я думал, что мой ноутбук был источником ... но не знаю, является ли тот факт, что я первоначально вытащил из Subversion или подтолкнуть к Unuddle, является причиной того, что сообщение появляется. Как я могу:
- Узнайте, где Git считает «происхождение / мастер»?
- Если это где-то еще, как я могу превратить свой ноутбук в «origin / master»?
- Получите это сообщение, чтобы уйти. Это заставляет меня думать, что Git недоволен чем-то.
Мой Mac работает под управлением Git версии 1.6.0.1.
Когда я запускаю git remote show origin
как предложено dbr, я получаю следующее:
~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
Когда я бегу git remote -v
по совету Аристотеля Пагальциса, я получаю следующее:
~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin /Users/brian/Projects/GeekFor/gf/.git
unfuddle git@spilth.unfuddle.com:spilth/geekfor.git
Теперь, что интересно, я работаю над своим проектом в geekfor
каталоге, но он говорит, что мой источник - моя локальная машина в gf
каталоге. Я считаю, что это gf
был временный каталог, который я использовал при преобразовании своего проекта из Subversion в Git и, возможно, туда, откуда я столкнулся. Тогда я считаю, что я проверил свежую копию с сайта в geekfor
каталог.
Похоже, я должен последовать совету dbr и сделать:
git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git
источник
origin
хранилище (даже если он не знает, как это работает в терминах git) - удаление пульта вряд ли было бы полезно для него.Я пришел к этому вопросу в поисках объяснения того, что означает сообщение "ваша ветвь впереди ..." в общей схеме git. Здесь не было никакого ответа, но так как этот вопрос в настоящее время появляется в верхней части Google, когда вы ищете фразу «Ваша ветвь впереди« origin / master »», и с тех пор я выяснил, что на самом деле означает сообщение Я думал, что выложу информацию здесь.
Так что, будучи новичком, я могу видеть, что ответ, который мне нужен, был отчетливо ответом новичка. В частности, фраза «ваша ветвь впереди…» означает, что есть файлы, которые вы добавили и добавили в свой локальный репозиторий, но никогда не выдвигали к источнику. Намерение этого сообщения далее скрыто тем фактом, что «git diff», по крайней мере для меня, не показал никаких различий. Только когда я запустил «git diff origin / master», мне сказали, что существуют различия между моим локальным хранилищем и удаленным мастером.
Итак, чтобы быть ясным:
"ваша ветвь впереди ..." => Вам нужно нажать на удаленный мастер. Запустите «git diff origin / master», чтобы увидеть разницу между вашим локальным хранилищем и удаленным главным хранилищем.
Надеюсь, это поможет другим новичкам.
(Также я признаю, что есть тонкости конфигурации, которые могут частично лишить законной силы это решение, например, тот факт, что мастер не может быть «удаленным», а «происхождение» является реконфигурируемым именем, используемым соглашением, и т. Д. Но новички делают нас это не волнует. Нам нужны простые, простые ответы. Мы можем прочитать о тонкостях позже, когда решим насущную проблему.)
граф
источник
git diff --cached origin/master
ли лучше инструкция здесь, поскольку в ней говорится, что будет результатом следующего толчка? Выделенная команда, которую вы указали выше, также отображает незафиксированные и неустановленные файлы (я думаю, я тоже новичок в Git)git fetch
если вы получаете эту ошибку послеgit pull remote branch
. Ваши ссылки могут быть устаревшими.git fetch
исправляет это.origin/master
часть среднейmaster
ветви вorigin
репо?# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
но git diff origin / master ничего не показывает (и параметр --cached не меняет это). И, git fetch не меняет это, git pull не меняет это, git reset --hard не меняет это. Чтобы изменить это, мне нужно было: git reset --hard origin / master И я выбрал этот маршрут, потому что другие люди работают со мной в этом хранилище, и я не хотел аннулировать их тестирование, и потому что я не мог выяснить, что эти коммиты являются.git checkout master
получаю сообщение, что означает, что я долженgit pull origin master
перед работой. но я нахожу это очень запутанным, потому что формулировка сообщения предполагает обратноеУ меня была проблема, которая была похожа на эту, где мой рабочий каталог находился,
ahead of origin by X commits
но этоgit pull
приводило кEverything up-to-date
. Мне удалось это исправить, следуя этому совету . Я публикую это здесь на случай, если это поможет кому-то еще с подобной проблемой.Основное исправление заключается в следующем:
Где слова в скобках должны быть заменены на ваше удаленное имя, имя вашей локальной ветки и имя вашей удаленной ветки. например
источник
git diff
ничего не показывал, и после выполнения того, что вы описали, я больше не получаю это запутанное и раздражающее сообщение.иногда существует разница между локальной кэшированной версией мастера происхождения (origin / master) и истинного мастера происхождения.
Если вы запустите,
git remote update
это будет повторно синхронизировать мастер источника с источником / мастерувидеть принятый ответ на этот вопрос
Различия между git pull origin master и git pull origin / master
источник
Это бессмысленно:
origin
относится к удаленному репозиторию по умолчанию - тому, из которого вы обычно извлекаете / извлекаете изменения других людей.git remote -v
покажет вам, чтоorigin
есть;origin/master
это ваша «закладка» для последнего известного состоянияmaster
веткиorigin
репозитория, а ваша собственнаяmaster
- это ветка отслеживания дляorigin/master
. Это все как и должно быть .Вы не По крайней мере, не имеет смысла, чтобы хранилище было удаленным хранилищем по умолчанию для себя.
Это не так. Это просто говорит вам, что вы сделали столько-то коммитов локально, которых нет в удаленном хранилище (в соответствии с последним известным состоянием этого хранилища).
источник
origin
логично указывать на ноутбук локально, поскольку отключение или переключение сетей - очень распространенный случай для портативных устройств, таких как ноутбуки. Таким образом, вы можете использоватьgit push
и вgit pull
любое время, не нужно думать, если вы подключены к нужной сети в настоящее время. Эта локальнаяorigin
сеть может автоматически синхронизироваться с реальными пультами, когда доступно сетевое соединение, в зависимости от текущего состояния роуминга. Проблемная часть заключается в том, когда выполнять какую синхронизацию, по сравнению с этой частью GIT довольно легко.origin
на другое хранилище на вашем ноутбуке имеет смысл. Однако указаниеorigin
хранилища на себя не имеет значения: не имеет значения, запускаете ли выgit push
или нетgit pull
, поскольку хранилище всегда точно синхронизировано с самим собой. Это как-то тавтологично.[ Решение ]
^ это решило это для меня. Что он сделал, он синхронизировал мой мастер (на ноутбуке) с «источником», который находится на удаленном сервере.
источник
Я борюсь с этой проблемой, и ни один из предыдущих ответов не рассматривал вопрос так, как я его вижу. Я разобрал проблему до ее основ, чтобы посмотреть, смогу ли я прояснить проблему.
Я создаю новый репозиторий (rep1), помещаю в него один файл и фиксирую его.
Я создаю клон rep1 и называю его rep2. Я смотрю внутрь rep2 и вижу, что файл правильный.
В rep1 я делаю одно изменение в файле и фиксирую его. Затем в rep1 я создаю пульт, указывающий на rep2 и отправляю изменения.
Теперь, когда я захожу в rep2 и делаю «git status», мне говорят, что я опережаю происхождение.
README в rep2 такой же, как и до второго коммита. Единственные изменения, которые я сделал, - это rep1, и все, что я хотел сделать, это подтолкнуть их к rep2. Что это я не понимаю?
источник
Это ждет вас, чтобы «подтолкнуть». Пытаться:
$ git push
источник
У меня недавно была эта проблема, и я решил, что это потому, что я удалил некоторые файлы, которые мне больше не нужны. Проблема в том, что git не знает, что файлы были удалены, и видит, что он все еще есть на сервере. (сервер = источник)
Итак, я побежал
А затем запустил коммит и нажал.
Это решило проблему.
источник
Я тоже новичок У меня была такая же проблема с сообщениями "ваша ветвь опережает источник / мастер по N коммитам". Выполнение предложенного «git diff origin / master» действительно показывало некоторые различия, которые я не хотел хранить. Так ...
Так как мой git clone был для хостинга, и я хотел получить точную копию главного репо, и не хотел сохранять какие-либо локальные изменения, я решил сохранить весь репо и создать новый:
(на хостинге)
Для удобства я обычно вносил изменения в клон на моем хост-компьютере. Больше не надо. Я внесу эти изменения в мастер, сделаю git commit и сделаю git pull. Надеюсь, это должно синхронизировать мой git-клон на хост-машине.
/ Nara
источник
Мне было интересно то же самое в моем репо. В моем случае у меня был старый пульт, на который я больше не давал, поэтому мне нужно было его удалить.
Получить список пультов:
Удалить тот, который вам не нужен
источник
Можно выполнить сброс до определенного коммита до того, как произойдет ваш коммит.
Используйте,
git log
чтобы узнать, какой коммит вы имели до того, как произошли локальные изменения.Запишите локальные коммиты и сбросьте их до предыдущего коммита:
источник
У меня возникла проблема "Ваша ветвь опережает 'origin / master' от nn commits." когда я нажал на удаленный репозиторий с:
Когда я обнаружил, что мой удаленный адрес был в файле .git / FETCH_HEAD и использовал:
проблема исчезла.
источник