Когда я публикую это, уже есть более 30 ответов, но я чувствую, что мой ответ улучшается по уже принятому ответу Джейком.
Меня не удовлетворила проблема, возникающая из-за простого использования переходов max-height
и CSS3, поскольку, как отмечали многие комментаторы, вы должны установить значение max-height
очень близко к фактической высоте, иначе вы получите задержку , См. JSFiddle для примера этой проблемы.
Чтобы обойти это (хотя по-прежнему не используется JavaScript), я добавил еще один элемент HTML, который переводит значение CSS transform: translateY
.
Это означает, что используются max-height
и translateY
: max-height
позволяет элементу отталкивать элементы под ним, а translateY
дает «мгновенный» эффект, который мы хотим. Проблема с max-height
все еще существует, но ее влияние уменьшено. Это означает, что вы можете установить гораздо большую высоту для своего значения max-height
и меньше беспокоиться об этом.
Общее преимущество заключается в том, что при переходе обратно в (развал) пользователь сразу видит анимацию translateY
, поэтому не имеет значения, сколько времени занимает max-height
.
body {
font-family: sans-serif;
}
.toggle {
position: relative;
border: 2px solid #333;
border-radius: 3px;
margin: 5px;
width: 200px;
}
.toggle-header {
margin: 0;
padding: 10px;
background-color: #333;
color: white;
text-align: center;
cursor: pointer;
}
.toggle-height {
background-color: tomato;
overflow: hidden;
transition: max-height .6s ease;
max-height: 0;
}
.toggle:hover .toggle-height {
max-height: 1000px;
}
.toggle-transform {
padding: 5px;
color: white;
transition: transform .4s ease;
transform: translateY(-100%);
}
.toggle:hover .toggle-transform {
transform: translateY(0);
}
Toggle!
Content!
Content!
Content!
Content!
Toggle!
Content!
Content!
Content!
Content!
Руководство для самого проекта Git (и проекта Linux, AFAIK) - одна фиксация на «логически отдельный набор изменений».
Это немного двусмысленно, но вы, вероятно, не хотите совершать коммиты каждые несколько дней, если вы постоянно работаете над проектом, и вы , вероятно, не хотите коммитить после каждого изменения функции - если вы редактировали несколько функций в нескольких разных файлах, вы хотите зафиксировать все связанные функции вместе, если можете, и предоставить им полезное сообщение о фиксации. Весь код, измененный в каждой фиксации, должен быть связан, но он может (и, вероятно, должен) определенно находиться в нескольких файлах.
Вы, вероятно, захотите иметь в виду обзоры кода. Если кто-то пытается решить, следует ли им объединить вашу работу, им будет намного проще обработать вводимую работу, если у вас есть каждая фиксация, логически содержащаяся и отделенная друг от друга. Это позволяет вам (или другим) эффективно работать с выбором вишни - если у вас есть три коммита с одной измененной функцией в каждой, но все они каким-то образом связаны - вы не можете применить один без двух других, не нарушая кодовую базу - тогда они, вероятно, должны быть сжатым до одной фиксации.
Весь код, измененный в каждой фиксации, должен быть связан, но он может (и, вероятно, должен) определенно находиться в нескольких файлах.Вы, вероятно, захотите иметь в виду обзоры кода. Если кто-то пытается решить, следует ли им объединить вашу работу, им будет намного проще обработать вводимую работу, если у вас есть каждая фиксация, логически содержащаяся и отделенная друг от друга. Это позволяет вам (или другим) эффективно работать с выбором вишни - если у вас есть три коммита с одной измененной функцией в каждой, но все они каким-то образом связаны - вы не можете применить один без двух других, не нарушая кодовую базу - тогда они, вероятно, должны быть сжатым до одной фиксации.
Весь код, измененный в каждой фиксации, должен быть связан, но он может (и, вероятно, должен) определенно находиться в нескольких файлах.Вы, вероятно, захотите иметь в виду обзоры кода. Если кто-то пытается решить, следует ли им объединить вашу работу, им будет намного проще обработать вводимую работу, если у вас есть каждая фиксация, логически содержащаяся и отделенная друг от друга. Это позволяет вам (или другим) эффективно работать с выбором вишни - если у вас есть три коммита с одной измененной функцией в каждой, но все они каким-то образом связаны - вы не можете применить один без двух других, не нарушая кодовую базу - тогда они, вероятно, должны быть сжатым до одной фиксации.
Если кто-то пытается решить, следует ли им объединить вашу работу, им будет намного проще обработать вводимую работу, если у вас есть каждая фиксация, логически содержащаяся и отделенная друг от друга. Это позволяет вам (или другим) эффективно работать с выбором вишни - если у вас есть три коммита с одной измененной функцией в каждой, но все они каким-то образом связаны - вы не можете применить один без двух других, не нарушая кодовую базу - тогда они, вероятно, должны быть сжатым до одной фиксации. Если кто-то пытается решить, следует ли им объединить вашу работу, им будет намного проще обработать вводимую работу, если у вас есть каждая фиксация, логически содержащаяся и отделенная друг от друга. Это позволяет вам (или другим) эффективно работать с выбором вишни - если у вас есть три коммита с одной измененной функцией в каждой, но все они каким-то образом связаны - вы не можете применить один без двух других, не нарушая кодовую базу - тогда они, вероятно, должны быть сжатым до одной фиксации.Я также отслеживаю некоторые другие проекты с помощью git, такие как emacs, wordpress и т. Д. Я вижу, что они не фиксируют это часто.
Одна из приятных особенностей git - то, что вы можете делать коммиты так часто, как захотите, а затем, когда вы хотите сделать апстрим-коммит, вы можете объединить несколько связанных коммитов в одну красивую чистую фиксацию, используя git -rebase
.
Одна из приятных особенностей git - то, что вы можете коммитить столько, сколько захотите, а затем, когда вы захотите сделать апстрим, вы можете объединить несколько связанных коммитов в один хорошая чистая фиксация с использованием git-rebase
.
Одна из приятных особенностей git - то, что вы можете коммитить столько, сколько захотите, а затем, когда вы захотите сделать апстрим, вы можете объединить несколько связанных коммитов в один хорошая чистая фиксация с использованием git-rebase
.
Чем больше вы фиксируете, тем проще находить ошибки с помощью git bisect
В конце концов, я завершаю фиксацию функции за функцией
Не забывайте, что вы могли бы « git add
» выполнять функцию за функцией, делая только одну фиксацию:
Затем количество коммитов может быть связано с целью ветки:
Короче говоря, « публикации соображения» могут в D ] VCS (как в «Распределенный») поможет вам сделать правильное количество коммитов по правильным причинам.
Как только тесты пройдут, или когда функциональная единица добавлена / удалена / изменена.
То, что вы делаете, мне кажется правильным. Каждый раз, когда у вас есть рабочая установка , к которой вы хотите вернуться, если вы что-то испортили, это хорошее время для фиксации. Если у вас есть хорошая настройка, при которой выполнение регрессионных тестов выполняется быстро и легко, я мог видеть это довольно часто. Что касается меня, то мне повезет, если я буду делать по одной в неделю.
Наш бизнес требует, чтобы мы выполняли фиксацию в нестабильной ветке при компиляции программы и фиксировали в стабильной ветке когда он проходит модульное тестирование и проверяется заказчиком (пока он находился в нестабильной ветке).
Это действительно зависит от обстоятельств.
Что я делаю, так это то, что я часто фиксирую локально, поскольку это звучит так, как будто вы делаете, но я продвигаю свои изменения только тогда, когда у меня накоплено несколько важных изменений.
Это гарантирует, что я сохраню свою работу, но также не загромождает репо для других пользователей.