1.
Узнают, где Мерзавец думает, что 'источник/ведущее устройство' используетgit-remote
git remote show origin
.. который возвратит что-то как..
* remote origin
URL: me@remote.example.com:~/something.git
Remote branch merged with 'git pull' while on branch master
master
Tracked remote branch
master
удаленный А является в основном ссылкой на удаленный репозиторий. Когда Вы делаете..
git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle
.. мерзавец продвинет изменения в том адресе, который Вы добавили. Это похоже на закладку для удаленных репозиториев.
, Когда Вы работаете git status
, это проверяет, пропускает ли удаленное фиксации (по сравнению с Вашим локальным репозиторием), и если так, сколько фиксаций. Если Вы продвинете все свои изменения в "источнике", оба будут в синхронизации, таким образом, Вы привычка получите то сообщение.
2.
, Если это где-то в другом месте, как я превращаю свой ноутбук в 'источник/ведущее устройство'?
нет никакого смысла в выполнении этого. Скажите, что "источник" переименован к "ноутбуку" - Вы никогда не хотите сделать git push laptop
от Вашего ноутбука.
, Если Вы хотите удалить удаленный источник, Вы делаете..
git remote rm origin
Эта привычка удаляют что-либо (с точки зрения file-content/revisions-history). Это остановится, "Ваше ответвление вперед.." сообщение, поскольку это больше не будет сравнивать Ваш репозиторий с удаленным (потому что это пошло!)
Одна вещь помнить состоит в том, что нет ничего специального [приблизительно 1 111], это - просто мерзавец имени по умолчанию использование.
Мерзавец действительно использует origin
по умолчанию, когда Вы делаете вещи как [1 113] или git pull
. Так, если бы у Вас есть удаленное, Вы используете много (Неопьянение, в Вашем случае), я рекомендовал бы добавить неопьянение как "источник":
git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git
или делают вышеупомянутое в одной команде с помощью URL набора:
git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git
Тогда можно просто сделать git push
или git pull
для обновления, вместо [1 117]
я думал, что мой ноутбук был origin†¦
That’s довольно бессмысленный: origin
относится к удаленному репозиторию по умолчанию †“тот, от которого Вы обычно выбираете/вытягиваете другие изменения people’s.
, Как может я:
git remote -v
покажет Вам, что origin
; origin/master
Ваш “bookmark” для последнего известного состояния master
ответвление origin
репозиторий, и Ваше собственное master
ответвление отслеживания для origin/master
. Это - все, как это должно быть .
Вы don’t. По крайней мере, не имеет никакого смысла для репозитория быть удаленным репозиторием по умолчанию для себя.
Это isn’t. It’s, просто говоря Вам, что Вы сделали так-то и так-то много фиксаций локально который aren’t в удаленном репозитории (согласно последнему известному состоянию того репозитория).
Я пришел к этому вопросу в поисках объяснения того, что означает сообщение "ваша ветка впереди ..." в общей схеме git. Здесь не было ответа на этот вопрос, но поскольку этот вопрос в настоящее время появляется в верхней части Google, когда вы ищете фразу «Ваша ветка опережает 'origin / master'», и с тех пор я понял, что на самом деле означает сообщение , Я подумал, что выложу информацию здесь.
Итак, будучи новичком в git, я вижу, что ответ, который мне был нужен, был явно новичком. В частности, фраза «ваша ветка впереди ...» означает, что есть файлы, которые вы добавили и зафиксировали в своем локальном репозитории, но никогда не отправляли в источник. Цель этого сообщения еще больше запутывается тем фактом, что "git diff", по крайней мере, для меня, не показал никаких различий. Только когда я запустил "git diff origin / master", мне сказали, что есть различия между моим локальным репозиторием и удаленным мастером.
Итак, для ясности:
«ваша ветка впереди…» => Вам нужно отправить удаленному мастеру. Запустите «git diff origin / master» , чтобы увидеть, в чем разница между вашим локальным репозиторием и удаленным главным репозиторием.
Надеюсь, это поможет другим новичкам.
(Кроме того, я осознаю, что существуют тонкости конфигурации, которые могут частично сделать это решение недействительным, например, тот факт, что мастер на самом деле не может быть «удаленным», и что «origin» - это реконфигурируемое имя, используемое по соглашению, и т. Д. Но новичков такие вещи не интересуют. Нам нужны простые и понятные ответы. О тонкостях мы узнаем позже, когда решим насущную проблему.)
Эрл
Я бьюсь над этой проблемой, и ни один из предыдущих ответов не решает вопрос так, как я его вижу. Я свел проблему к ее основам, чтобы посмотреть, смогу ли я прояснить свою проблему.
Я создаю новый репозиторий (rep1), помещаю в него один файл и фиксирую его.
mkdir rep1
cd rep1
git init
echo "Line1" > README
git add README
git commit -m "Commit 1"
Я создаю клон rep1 и называю его rep2. Я смотрю внутрь rep2 и вижу, что файл правильный.
cd ~
git clone ~/rep1 rep2
cat ~/rep2/README
В rep1 я вношу одно изменение в файл и фиксирую его. Затем в rep1 я создаю remote, указывающий на rep2, и переношу изменения.
cd ~/rep1
<change file and commit>
git remote add rep2 ~/rep2
git push rep2 master
Теперь, когда я захожу в rep2 и делаю 'git status', я получаю сообщение, что я опережаю origin.
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: README
#
README в rep2 такой, каким он был изначально, до второго коммита. Единственные изменения, которые я сделал, относятся к rep1, и всё, что я хотел сделать, это перенести их в rep2. Что я не понимаю?