слияние мерзавца, рекурсивное их, как это работает?

У меня есть определенная проблема. У нас есть наш собственный CMS, который использует мерзавца для сотрудничества и управления версиями и материала.

Теперь у меня есть два репозитория мерзавца A и B, который является проектом и B, который является самим CMS. Теперь я хочу получить B в A, но когда я делаю это, я получаю много конфликтов слияния, и решение для конфликтов состоит в том, чтобы всегда использовать материал от B.

Теперь то, что я думаю, что мне нужно,

git merge  -s recursive theirs 

потому что я хочу объединиться и когда существует конфликт слияния, он должен быть вынужден использовать решение от B. Но я не могу заставить это работать. Это всегда продолжает говорить мне fatal: 'theirs' does not point to a commit.

recursive theirs Я нашел здесь.

Кто-либо знает то, что я делаю неправильно?

33
задан florisla 18 August 2017 в 15:04
поделиться

2 ответа

Содержит ли API EE все классы SE?

Да. Платформа Java EE построена поверх платформы Java SE.

Может ли кто-нибудь указать мне на направление или предложить предложение по разработке образца приложения Java EE

Посмотрите на Примеры и приложения кода Java EE .

-121--3702162-

Связь между лексической и синтаксической фазами процессора является нормальной.

Таким образом, распознать синтаксис для директивы включения в синтаксическом анализаторе (или, чтобы сделать вещи проще, просто распознать его в lexer) и сделать переключение на лексическом уровне.

Например, это простой язык, который распознает стандартные входные строки, содержащие ab или cd или .file . Когда он видит .someString , он открывает someString как файл включения, а затем возвращается к чтению стандартного ввода.

%{
#include <stdio.h>
#include <stdlib.h>
void start_include(char *); int yylex(void); void yyerror(void *);
#define YYSTYPE char *
%}
%%
all:          all others | others;
others:       include_rule | rule_1 | rule_2 | 'Z' { YYACCEPT; };
include_rule: '.' '\n' { start_include($1); };
rule_1:       'a' 'b' '\n' { printf("random rule 1\n"); };
rule_2:       'c' 'd' '\n' { printf("random rule 2\n"); };
%%
FILE * f = NULL;
void start_include(char *s) {
        if ((f = fopen(s, "r")) == NULL)
                abort();
}
int yylex(void) {
        int c;
        static char s[100];
        if (f == NULL)
                f = stdin;
        c = getc(f);
        if (c == EOF) {
                f = stdin;
                c = getc(f);
        }
        if (c == '.') {
                scanf(" %s", s);
                yylval = s;
        } else if (c == EOF)
                return 'Z';
        return c;
}

И когда мы запустим его...

$ cat > toplevel
ab
.myinclude
ab
$ cat > myinclude
cd
cd
$ yacc ip.y && cc -Wall y.tab.c -ly && ./a.out < toplevel
random rule 1
random rule 2
random rule 2
random rule 1
$ 
-121--2986101-

Необходимо использовать эту форму для передачи параметров стратегии слияния:

git merge -s recursive -Xtheirs # short options
git merge --strategy recursive --strategy-option theirs # long options

Также убедитесь, что ваша версия поддерживает -Xtheirs , это совсем недавно (?)

62
ответ дан 27 November 2019 в 18:09
поделиться

Я думаю, причина его неудачи в том, что вы указываете в качестве стратегии «рекурсивный их». «рекурсивный» - это стратегия, и когда вы помещаете после нее пробел, «их» интерпретируется как нечто, с чем git нужно объединить вашу рабочую копию (например, другую ветку или refspec).

Я думаю, что вы не сможете определить стратегию в точности так, как вы хотите. Существует стратегия под названием «наша», которая противоположна тому, чего вы хотите.

Обычный шаблон, используемый в этой ситуации, - либо слияние, либо перебазирование в репозиторий «B». Из рабочей копии репозитория «A» вы должны выполнить перебазирование, если это возможно (это может быть невозможно, если вы уже делитесь репозиторием git с другими разработчиками). Перебазирование, по сути, откатит репозиторий A до общего коммита в обоих репозиториях, применяет коммиты «B», затем «A» коммитирует поверх. Попутно вы разрешите любые конфликты слияния.

После того, как вы пройдете через болезненные ощущения от слияния или перебазирования в репозиторий «B», будущие слияния будут менее болезненными.

2
ответ дан 27 November 2019 в 18:09
поделиться
Другие вопросы по тегам:

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