Различия:
(B) git rebase master
*---*---* [master]
\
*---*---*---* [A]
\
*---*---* [B](HEAD)
Ничего не произошло. В ветке master
нет новых коммитов с момента создания ветки B
.
(B) git checkout master
*---*---* [master](HEAD)
\
*---*---*---* [A]
\
*---*---* [B]
(мастер) git merge B
*---*---*-----------------------* [Master](HEAD)
\ /
*---*---*---* [A] /
\ /
*---*---* [B]
(B) git rebase --onto master A B
*---*---*-- [master]
|\
| *---*---*---* [A]
|
*---*---* [B](HEAD)
(B) git checkout master
*---*---*-- [master](HEAD)
|\
| *---*---*---* [A]
|
*---*---* [B]
(мастер) git merge B
*---*---*----------------------* [master](HEAD)
|\ /
| *---*---*---* [A] /
| /
*---*--------------* [B]
Я хочу объединить мои изменения B (и только мои изменения B, никаких изменений A) в master
Будьте осторожны с тем, что вы понимаете под «только мои изменения B».
В первом наборе ветвь B
(перед последним слиянием):
*---*---*
\
*---*---*
\
*---*---* [B]
И во втором наборе ваша ветвь B:
*---*---*
|
|
|
*---*---* [B]
Если Я правильно понимаю, что вы хотите только коммитов B, которые не находятся в ветке A . Итак, второй набор - это правильный выбор для вас до слияния.
но что это означает с точки зрения компьютерного жаргона?
По сути, то же самое. Пример:
x = 5;
Выше приведен синтаксис (представление). значение (то есть семантика) этого термина состоит в том, чтобы присвоить значение 5 символу (переменной или любому другому) с именем x
. Разные языки предлагают разные синтаксисы для обеспечения одинаковой семантики. Например, указанное выше присвоение будет записано как
x := 5;
на Паскале и как
x <- 5
на нескольких других языках. Во всех случаях значение по существу одинаково. Но иногда один и тот же синтаксис может иметь разные значения в зависимости от языка и / или контекста. VB, например, переопределяет оператор равенства, чтобы обозначать две разные вещи. Во-первых, задание, как указано выше.
Во-вторых, в следующем фрагменте кода вместо назначения он принимает значение сравнения двух значений:
If x = 5 Then Console.WriteLine("x is 5")
Применяется словарное определение
Семантика - это (являются ли?) Все о значении слов.
Например, если вы используете .NET-тип KeyValuePair для представления чего-то ДРУГОГО, кроме ключа и значения, у вас возникнет семантическая проблема. Это может сработать ... это может быть лучшее решение, но оно не является семантически точным.
Это именно то, о чем он говорит в том сообщении в блоге. В языках типа C мы перечисляем возвращаемые типы первыми, но на самом деле возвращаемые значения идут последними. Это семантически неточно.
Семантика - это то, ЧТО мы подразумеваем, что программа должна делать. Sytax - это языковое ограничение на то, как мы выражаем семантику.
Теоретически, пока семантика программы верна, не имеет значения, на каком языке она была написана.
Насколько я понимаю, семантика - это «то, что все это значит для человека». Это то, что он разделяет, а не то, как он это делает.
Еще немного контекста из блога:
Поэтому в C вы помещаете хранилище сначала метаданные (статический int customerCount;), а не семантика в первую очередь (это могло быть var customerCount: static int;).
Он говорит, что "static int" стоит перед "customerCount". Вызов «static int» метаданных хранилища и семантики «customerCount» . Метаданные хранилища - это информация о том, что хранится в переменной - в нем неявно указано, сколько битов она занимает, какие значения она может содержать, разделяется ли она между экземплярами и ее непостоянство.
семантика , имя переменной, - это информация для читателей кода о том, что должно храниться в переменной. Что означает переменная . Вы можете назвать это «x», и программа будет работать так же хорошо, но программисту будет сложно это понять. Назвав это "customerCount", переменная получит значение,
Другими словами, учитывая контекст статьи, он говорит, что разработчикам C #
было бы лучше сосредоточиться на том, как они будут хранить данные внутренне, когда была объявлена переменная, и не особо заботился об указании точного метода объявления переменной.
Другими словами, делая это в C #
static int customerCount
, вы говорите компилятору подготовить хранилище для статически доступного целого числа, а затем указываете ему пометить это хранилище как customerCount
, тогда как в VB вы использовал бы эту строку
dim shared customerCount as Integer
, сообщая компилятору, теоретически, что у вас есть переменная с именем customerCount
, которую он должен хранить и делать статически доступной, и, кстати, это целое число.
Все это действительно тонкое различие, вроде как.
В терминах жаргона языков программирования существует несколько понятий семантики:
Статическая семантика сообщает вам, какие грамматические программы также хорошо сформированы. Многие языки либо не имеют статической семантики (Scheme, Ruby, Python, Icon, Lua, Perl), либо имеют статическую семантику, которая в первую очередь связана с реализацией системы типов (Java, C, C #, Haskell). «Объявление требуется перед использованием» - еще одна возможная статическая семантика. Статическая семантика отвечает на вопрос « имеет ли смысл эта программа? » и делает это во время компиляции.
Динамическая семантика сообщает вам одно из двух:
Если вы читаете слово «семантика» в руководстве или статье, и контекст неформальный На английском языке, а не точное математическое описание, автор, вероятно, имеет в виду динамическое рабочее поведение - если хотите, неформально описанную операционную семантику.