'источник получения по запросу мерзавца mybranch' оставляет локальный mybranch N фиксациями перед источником. Почему?

Ваши аргументы против динамических языков совершенно допустимы. Однако рассмотрите следующее:

  1. Динамические языки не должны быть скомпилированы : просто выполните их. Можно даже перезагрузить файлы во время выполнения, не перезапуская приложение в большинстве случаев.
  2. Динамические языки обычно - меньше подробное и больше читаемое : Вы когда-либо смотрели на данный алгоритм или программу, реализованную на статическом языке, затем сравнивали ее с Ruby или эквивалентным Python? В целом Вы смотрите на сокращение строк кода фактором 3. Много кода лесов является ненужным на динамических языках, и это означает, что конечный результат более читаем и более сфокусирован на фактической проблеме под рукой.
  3. не волнуются о вводе проблем : общий подход, когда программирование на динамических языках не должно волноваться о вводе: большую часть времени правильный вид аргумента будет передан Вашим методам. И время от времени, кто-то может использовать другой вид аргумента, который просто, оказывается, работает также. Когда вещи идут не так, как надо, Ваша программа может быть остановлена, но это редко происходит, если Вы сделали несколько тестов.

я также нашел его немного страшным для продвижения далеко от безопасного мира статического контроля типов сначала, но для меня преимущества безусловно перевешивают недостатки, и я никогда не оглядывался назад.

91
задан Matthias 16 November 2009 в 09:50
поделиться

3 ответа

Еще один подход - добавить столбец «photo_count» в таблицу пользователей, обновить его с помощью триггеров, чтобы он отражал реальность, и добавить проверку, чтобы обеспечить максимальное количество фотографий.

Дополнительным преимуществом этого является то, что в любой момент мы знаем (не считая), сколько фотографий у пользователя.

С другой стороны, подход, предложенный Квассной, также довольно крутой, поскольку он дает вам возможность переупорядочить фотографии в случае, если пользователь хотел бы этого.

Это изменение было сделано специально, чтобы избежать путаницы, вызванной предыдущим поведением.

Когда вы выполняете git pull , FETCH_HEAD обновляется, как указано выше, затем объединены с вашей извлеченной HEAD , но ни одна из стандартных ветвей отслеживания для удаленного репозитория не будет обновлена ​​(Git <1.8.4). Это означает, что локально он выглядит так, как будто вы опережаете удаленную ветку, тогда как на самом деле вы в курсе последних событий.

Лично я всегда делаю git fetch , за которым следует git merge / , потому что я вижу все предупреждения о принудительных обновлениях перед слиянием, и я могу предварительно просмотреть то, что я сливаю. Если бы я использовал git pull немного больше, чем я,

113
ответ дан 24 November 2019 в 06:51
поделиться

Что возвращает git remote -v show , когда дело доходит до источника?

Если источник указывает на github, статус должен быть актуальным, а не впереди любого удаленного репо. По крайней мере, с Git1.6.5, который я использую для быстрого теста.

В любом случае, чтобы избежать этого, явно определите удаленное репо главной ветки:

$ git config branch.master.remote yourGitHubRepo.git

затем git pull origin master , с последующим git status должен возвращать чистый статус (не впереди).
Почему? поскольку мастер источника получения выборки (включенный в мастер источника извлечения git) не просто обновлял FETCH_HEAD (как Чарльз Бейли объясняет в свой ответ ), но он также обновит "удаленную главную ветку" в вашем локальном репозитории Git.
В этом случае ваш локальный мастер больше не будет "опережать" удаленного мастера.


Я могу проверить это с помощью git1.6.5:

Сначала я создаю рабочий репозиторий:

PS D:\git\tests> cd pullahead
PS D:\git\tests\pullahead> git init workrepo
Initialized empty Git repository in D:/git/tests/pullahead/workrepo/.git/
PS D:\git\tests\pullahead> cd workrepo
PS D:\git\tests\pullahead\workrepo> echo firstContent > afile.txt
PS D:\git\tests\pullahead\workrepo> git add -A 
PS D:\git\tests\pullahead\workrepo> git commit -m "first commit"

Я моделирую Репозиторий GitHub путем создания чистого репо (которое может получать push из любого места)

PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone --bare workrepo github

Я добавляю модификатор в свое рабочее репо, которое я отправляю в репозиторий github (добавленный как удаленный)

PS D:\git\tests\pullahead> cd workrepo
PS D:\git\tests\pullahead\workrepo> echo aModif >> afile.txt
PS D:\git\tests\pullahead\workrepo> git ci -a -m "a modif to send to github"
PS D:\git\tests\pullahead\workrepo> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo> git push github

Я создаю домашнее репо, клонированное GitHub, в котором я делаю пару изменений, помещенных в GitHub:

PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone github homerepo
PS D:\git\tests\pullahead> cd homerepo
PS D:\git\tests\pullahead\homerepo> type afile.txt
firstContent
aModif

PS D:\git\tests\pullahead\homerepo> echo aHomeModif1  >> afile.txt
PS D:\git\tests\pullahead\homerepo> git ci -a -m "a first home modif"
PS D:\git\tests\pullahead\homerepo> echo aHomeModif2  >> afile.txt
PS D:\git\tests\pullahead\homerepo> git ci -a -m "a second home modif"
PS D:\git\tests\pullahead\homerepo> git push github

Затем я клонирую workrepo для первого эксперимента

PS D:\git\tests\pullahead\workrepo4> cd ..
PS D:\git\tests\pullahead> git clone workrepo workrepo2
Initialized empty Git repository in D:/git/tests/pullahead/workrepo2/.git/
PS D:\git\tests\pullahead> cd workrepo2
PS D:\git\tests\pullahead\workrepo2> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo2> git pull github master
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From d:/git/tests/pullahead/github
 * branch            master     -> FETCH_HEAD
Updating c2763f2..75ad279
Fast forward
 afile.txt |  Bin 46 -> 98 bytes
 1 files changed, 0 insertions(+), 0 deletions(-)

В этом репозитории git status упоминает master geing впереди ' origin ':

PS D:\git\tests\pullahead\workrepo5> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)

Но это только origin не github:

PS D:\git\tests\pullahead\workrepo2> git remote -v show
github  d:/git/tests/pullahead/github (fetch)
github  d:/git/tests/pullahead/github (push)
origin  D:/git/tests/pullahead/workrepo (fetch)
origin  D:/git/tests/pullahead/workrepo (push)

Но если я повторю последовательность в репо, который имеет начало в github (или вообще не имеет происхождения, просто удаленный' github 'определено), статус чистый:

PS D:\git\tests\pullahead\workrepo2> cd ..
PS D:\git\tests\pullahead> git clone workrepo workrepo4
PS D:\git\tests\pullahead> cd workrepo4
PS D:\git\tests\pullahead\workrepo4> git remote rm origin
PS D:\git\tests\pullahead\workrepo4> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo4> git pull github master
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From d:/git/tests/pullahead/github
 * branch            master     -> FETCH_HEAD
Updating c2763f2..75ad279
Fast forward
 afile.txt |  Bin 46 -> 98 bytes
 1 files changed, 0 insertions(+), 0 deletions(-)
PS D:\git\tests\pullahead\workrepo4> git status
# On branch master
nothing to commit (working directory clean)

Если бы у меня был только origin , указывающий на github , status был бы чистым для git1.6.5.
Это может быть с предупреждением «впереди» для более раннего git, но в любом случае явно определенная git config branch.master.remote yourGitHubRepo.git сможет позаботиться об этом, даже с ранними версиями Git .

3
ответ дан 24 November 2019 в 06:51
поделиться

Осторожно ли вы добавляете весь свой пульт (кроме origin , который поставляется с вашим исходным клоном), используя git remote add NAME URL ? Я видел эту ошибку, когда они только что добавлялись в конфигурацию git.

2
ответ дан 24 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: