Ответ выше не подходит для усложнения выражения Linq. Все что вам нужно:
// set up the "main query"
var test = from p in _db.test select _db.test;
// if str1 is not null, add a where-condition
if(str1 != null)
{
test = test.Where(p => p.test == str);
}
Вы используете избирательный подход команда для получения отдельных фиксаций от одного ответвления.
, Если изменение (изменения) Вы хотите, не находятся в отдельных фиксациях, затем используют метод, показанный здесь , разделяет фиксацию на отдельные фиксации . Примерно говоря, Вы используете git rebase -i
, чтобы заставить исходную фиксацию редактировать, затем git reset HEAD^
для выборочного возвращения изменений, тогда git commit
для фиксации того бита как новой фиксации в истории.
существует другой хороший метод здесь в Журнале Red Hat, где они используют git add --patch
или возможно git add --interactive
, который позволяет Вам добавлять просто части ломтя, если Вы хотите разделить различные изменения в отдельном файле (поиск на той странице для "разделения").
разделявший изменения, можно теперь избирательно подойти к выбору просто тех, Вы хотите.
1800 Ответ ИНФОРМАЦИИ полностью верен. Однако, как git noob, «использовать git cherry-pick» было недостаточно для того, чтобы я понял это без каких-либо дополнительных копаний в Интернете, поэтому я решил опубликовать более подробное руководство на случай, если кто-то еще будет в похожая лодка.
Мой вариант использования заключался в желании выборочно перенести изменения из чужой ветви github в мою собственную. Если у вас уже есть локальная ветвь с изменениями, вам нужно только выполнить шаги 2 и 5-7.
Создать (если не создал) локальную ветвь с изменениями, которые вы хотите внести.
$ git branch mybranch <базовая ветка>
Переключитесь на нее.
$ git checkout mybranch
Внесите необходимые изменения из учетной записи другого человека. Если вы еще этого не сделали, вы захотите добавить их как удаленные.
$ git remote add repos-w-changes
Снять все из их ветки.
$ git pull repos -w-changes branch-i-want
Просмотрите журналы коммитов, чтобы увидеть, какие изменения вы хотите:
$ git log
Вернитесь к ветке, в которую вы хотите перенести изменения.
$ git checkout originalbranch
Cherry выбирает ваши коммиты, один за другим, с помощью хэшей.
$ git cherry-pick -x hash-of-commit
Подсказка для шляпы: http: //www.sourcemage. org / Git_Guide
I don't like the above approaches. Using cherry-pick is great for picking a single change, but it is a pain if you want to bring in all the changes except for some bad ones. Here is my approach.
There is no --interactive
argument you can pass to git merge.
Here is the alternative:
You have some changes in branch 'feature' and you want to bring some but not all of them over to 'master' in a not sloppy way (i.e. you don't want to cherry pick and commit each one)
git checkout feature
git checkout -b temp
git rebase -i master
# Above will drop you in an editor and pick the changes you want ala:
pick 7266df7 First change
pick 1b3f7df Another change
pick 5bbf56f Last change
# Rebase b44c147..5bbf56f onto b44c147
#
# Commands:
# pick = use commit
# edit = use commit, but stop for amending
# squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
git checkout master
git pull . temp
git branch -d temp
So just wrap that in a shell script, change master into $to and change feature into $from and you are good to go:
#!/bin/bash
# git-interactive-merge
from=$1
to=$2
git checkout $from
git checkout -b ${from}_tmp
git rebase -i $to
# Above will drop you in an editor and pick the changes you want
git checkout $to
git pull . ${from}_tmp
git branch -d ${from}_tmp
У меня была точно такая же проблема, как упомянуто вами выше. Но я нашел этот более ясным в объяснении ответа.
Резюме:
Проверить путь (пути) из ветки, которую вы хотите объединить,
$ git checkout source_branch - ...
Подсказка: он также работает без -
, как показано в связанной публикации.
или для выборочного слияния фрагментов
$ git checkout -p source_branch - ...
Или используйте сброс, а затем добавьте с опцией -p
,
$ git reset ...
$ git add -p <пути> ...
Наконец, зафиксируйте
$ git commit -m "'Объединить' эти изменения"
Я знаю, что немного опоздал, но это мой рабочий процесс для объединения выборочных файлов.
#make a new branch ( this will be temporary)
git checkout -b newbranch
# grab the changes
git merge --no-commit featurebranch
# unstage those changes
git reset HEAD
(you can now see the files from the merge are unstaged)
# now you can chose which files are to be merged.
git add -p
# remember to "git add" any new files you wish to keep
git commit
sed -i 's/e[-+][0-9][0-9]//g'
иsed -i 's/nan/0.0/g'
и адаптируя код для соответствия остальной части сравнительных тестов (т.е. пробел синтаксического анализа...). Я обошел 1,84 с. Обратите внимание, что вход был на самом деле уменьшен до 408 МБ (от 515 МБ, 21%-е сокращение). Компенсация этого дала бы 2,32 с – sehe 5 July 2013 в 02:01