Так как Ваши файлы еще не фиксируются в branch1
:
git stash
git checkout branch2
git stash pop
или
git stash
git checkout branch2
git stash list # to check the various stash made in different branch
git stash apply x # to select the right one
, Как прокомментировано benjohn (см. git stash
страница справочника ):
, Чтобы также спрятать в настоящее время неотслеженный (недавно добавленный) файлы, добавьте аргумент
-u
, таким образом:
git stash -u
Используйте такой инструмент, как VisualSVN , чтобы показать, какие файлы были изменены в обозревателе решений, чтобы вы не забыли зафиксировать их:
Простое решение - щелкнуть правой кнопкой мыши на верхнем уровне проекта и затем щелкнуть «зафиксировать». Tortoise показывает вам весь проект, включая файлы без версий.
Это требует некоторой дисциплины при настройке исходного дерева. Например, если вы смешиваете двоичные выходные файлы с исходным кодом, это усложняет задачу. Также убедитесь, что у вас нет игнорируемых каталогов, содержащих исходный код.
Ежедневные сборки.
Пакетный файл (или эквивалент), который регистрируется в новом каталоге и выполняет сборку (а в идеальном мире запускает модульные тесты) - если он не собирается, значит, вы что-то пропустили.
У меня нет волшебной палочки, которую я мог бы предложить, только мантра «совершать рано, совершать часто»; Помимо предотвращения таких аварий или, по крайней мере, сведения к минимуму их воздействия, когда они все же происходят, это дает и другие преимущества (например, более мелкий откат, если для набора изменений требуется возврат). Для этого может потребоваться ветка, если считается, что ствол всегда содержит «золотой код», поэтому вы не хотите фиксировать недоделанные наборы изменений (и svn точно не делает ветвление и слияние безболезненным, вздох) - действительно, это (среди другие преимущества распределенных VCS) - это одна из причин, по которой я начал переключаться с подрывной деятельности на ртутную (также известную как hg) в проектах с открытым исходным кодом и / или в личных проектах, где я могу взять на себя ответственность! -)
Remote -управлять другими машинами (возможно, через VPN), чтобы вы могли получить код в удаленных рабочих каталогах, даже если вы забыли его зарегистрировать.
И / или автоматическое резервное копирование ваших рабочих каталогов.
Заставьте себя погрузиться в рутину.
First thing in the office - do an update. Last thing in the office - do a commit (if required).
Конечно, вы должны обновлять / фиксировать в течение дня (например, при регистрации), но как минимум проделайте то же самое.
В Tortoise я всегда открываю одно из окон «Проверить наличие модификаций» и регулярно нажимаю кнопку «Обновить». Это действительно была бы очень плохая спешка, из-за которой я отключился бы без предварительной проверки всех открытых окон / приложений на наличие несохраненных данных.
Это также хорошо против того, чтобы забыть добавить что-то, кстати, так как вы можете настроить это окно так, чтобы также показывать все неотмеченные и не добавленные вещи.
Я использую git-prompt.sh , чтобы отслеживать состояние файлов и веток. Похоже, он также работает с SVN.
За то, что я вообще забыл отметиться, если возможно, я бы вышел из системы с помощью какого-нибудь скрипта, который сначала будет пилить вас, если есть работа, которую еще не отметили. Или щелкнув значок в папке проектов, чтобы TortoiseSVN отобразил красный восклицательный знак.
Чтобы забыть добавить новые файлы к отметке, я использую этот командный файл:
svn st
svn ci -m %1 --username "russell.wallace"
Итак, как только я фиксации, в которой отсутствуют новые файлы, я уведомляюсь об этом факте и могу немедленно выполнить другой коммит, который их добавит.