взгляните на этот пример
class Person
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
}
class Pet
{
public string Name { get; set; }
public Person Owner { get; set; }
}
public static void LeftOuterJoinExample()
{
Person magnus = new Person {ID = 1, FirstName = "Magnus", LastName = "Hedlund"};
Person terry = new Person {ID = 2, FirstName = "Terry", LastName = "Adams"};
Person charlotte = new Person {ID = 3, FirstName = "Charlotte", LastName = "Weiss"};
Person arlene = new Person {ID = 4, FirstName = "Arlene", LastName = "Huff"};
Pet barley = new Pet {Name = "Barley", Owner = terry};
Pet boots = new Pet {Name = "Boots", Owner = terry};
Pet whiskers = new Pet {Name = "Whiskers", Owner = charlotte};
Pet bluemoon = new Pet {Name = "Blue Moon", Owner = terry};
Pet daisy = new Pet {Name = "Daisy", Owner = magnus};
// Create two lists.
List people = new List {magnus, terry, charlotte, arlene};
List pets = new List {barley, boots, whiskers, bluemoon, daisy};
var query = from person in people
where person.ID == 4
join pet in pets on person equals pet.Owner into personpets
from petOrNull in personpets.DefaultIfEmpty()
select new { Person=person, Pet = petOrNull};
foreach (var v in query )
{
Console.WriteLine("{0,-15}{1}", v.Person.FirstName + ":", (v.Pet == null ? "Does not Exist" : v.Pet.Name));
}
}
// This code produces the following output:
//
// Magnus: Daisy
// Terry: Barley
// Terry: Boots
// Terry: Blue Moon
// Charlotte: Whiskers
// Arlene:
, теперь вы можете include elements from the left
, даже если этот элемент has no matches in the right
, в нашем случае мы восстановили Arlene
, даже если он не имеет соответствия в правой
здесь ссылка
Если вам нужно опустить какой-то код (конкретные коммиты) при слиянии, вы можете использовать git cherry-pick
вместо git merge
, но вишневый выбор не является хорошей практикой на все время.
Если вам нужно отделить свой код интерфейса и внутренний код, я бы рекомендовал использовать два репозитория git или использовать функцию git subodule .
[Это ответ на этот вопрос. Возможно, кто-то обратится к вашему вопросу напрямую]
Я вижу, что (сохранение разного кода в разных ветвях) является неправильным использованием ветвления. Вы можете обрабатывать это как два разных репозитория или как monorepo обоих проектов. Я бы предложил посмотреть различные ссылки на monorepos, а также на популярные стратегии рабочего процесса git.
Swift
, Android /Java
), а также веб-версию вReact.js
. Нам нравится разделять оболочку / UI-версию, поэтому мы всегда можем улучшить интерфейс пользователя отдельно (в отдельной ветке), поэтому команда разработчиков может принять его и внести в него какую-либо интеграцию. – Muhammad Hannan 16 July 2018 в 03:52