Всегда используйте свой элемент с этим атрибутом:
Javascript: element.style.fontSize = "100%";
или
CSS: style = "font-size: 100%;"
Когда вы идете в полноэкранный режим, вы уже должны иметь вычисляемую переменную масштаба (масштаб> 1 или масштаб = 1). Затем на полноэкранном режиме:
document.body.style.fontSize = (scale * 100) + "%";
Он отлично работает с небольшим кодом.
Вы можете использовать git rebase, например, если вы хотите изменить обратно на commit bbc643cd
, запустите
$ git rebase --interactive 'bbc643cd^'
В редакторе по умолчанию измените pick
на edit
в которую вы хотите изменить. Внесите свои изменения и затем передайте их с тем же сообщением, которое у вас было до:
$ git commit --all --amend --no-edit
, чтобы изменить фиксацию, и после этого
$ git rebase --continue
вернется к предыдущей главе commit.
ПРЕДУПРЕЖДЕНИЕ. Обратите внимание, что это изменит SHA-1 этой фиксации, а также всех детей - другими словами, это переписывает историю с этой точки вперед. Вы можете сломать repos, выполнив это , если вы нажмете с помощью команды git push --force
Запуск:
$ git rebase --interactive commit_hash^
каждый ^
указывает, сколько коммитов назад вы хотите отредактировать, если это только один (хеш-фиксация, которую вы указали), затем вы просто добавляете один ^
.
Используя Vim, вы изменяете слова pick
на reword
для коммитов, которые вы хотите изменить, сохранить и выйти (:wq
). Затем git предложит вам каждую фиксацию, которую вы пометили как временное слово, чтобы вы могли изменить сообщение фиксации.
Каждое сообщение фиксации, которое вы должны сохранить и выйти (:wq
), перейти к следующему сообщению фиксации
Если вы хотите выйти без применения изменений, нажмите :q!
EDIT: чтобы перейти в vim
, вы используете j
для перехода вверх, k
, чтобы перейти вниз , h
, чтобы идти влево, а l
- вправо (все это в режиме NORMAL
, нажмите ESC
, чтобы перейти в режим NORMAL
). Чтобы отредактировать текст, нажмите i
, чтобы войти в режим INSERT
, где вы вставляете текст. Нажмите ESC
, чтобы вернуться в режим NORMAL
:)
UPDATE: вот отличная ссылка из списка github Как отменить (почти) что угодно с git
git push --force
делает, перезаписывает удаленные объекты с локальными коммитами. Это не относится к этой теме :)
– betoharres
14 July 2016 в 17:12
git rebase -i @~9 # Show the last 9 commits in a text editor
Найдите требуемый коммит, измените pick
на e
(edit
) и сохраните и закройте файл. Git перемотает эту фиксацию, позволяя вам:
git commit --amend
для внесения изменений или git reset @~
, чтобы отменить последнее коммит, но не изменения в файлах (т. е. довести вас до того момента, когда вы редактировали файлы, но еще не зафиксировали его). Последнее полезно для более сложных например, разбиение на несколько коммитов.
Затем запустите git rebase --continue
, а Git воспроизведет последующие изменения поверх измененного коммита. Вас могут попросить исправить некоторые конфликты слияния.
Примечание: @
является сокращением для HEAD
, а ~
является фиксацией до указанного фиксации.
Узнайте больше о истории перезаписи в документах Git.
ProTip ™: не бойтесь экспериментировать с «опасными» командами, которые переписывают историю * - Git не удаляет ваши коммиты в течение 90 дней по умолчанию; вы можете найти их в reflog:
$ git reset @~3 # go back 3 commits
$ git reflog
c4f708b HEAD@{0}: reset: moving to @~3
2c52489 HEAD@{1}: commit: more changes
4a5246d HEAD@{2}: commit: make important changes
e8571e4 HEAD@{3}: commit: make some changes
... earlier commits ...
$ git reset 2c52489
... and you're back where you started
* Остерегайтесь опций, таких как --hard
и --force
, хотя - они могут отбрасывать данные. * Также , не переписывайте историю в каких-либо ветвях, с которыми вы работаете.
Во многих системах git rebase -i
откроет Vim по умолчанию. Vim не работает, как большинство современных текстовых редакторов, поэтому посмотрите на , как переустановить с помощью Vim . Если вы предпочитаете использовать другой редактор, измените его на git config --global core.editor your-favorite-text-editor
.
@
как стенографию для HEAD
. Спасибо, что опубликовали это.
– James Ko
2 October 2016 в 20:42
Я просто подумал, что буду использовать псевдоним, который я использую для этого. Он основан на неинтерактивной интерактивной перезагрузке. Чтобы добавить его в свой git, запустите эту команду (пояснение ниже):
git config --global alias.amend-to '!f() { SHA=`git rev-parse "$1"`; git commit --fixup "$SHA" && GIT_SEQUENCE_EDITOR=true git rebase --interactive --autosquash "$SHA^"; }; f'
Самым большим преимуществом этой команды является то, что она не-vim.
(1), учитывая, что конфликтов во время rebase нет, конечно
git amend-to <REV> # e.g.
git amend-to HEAD~1
git amend-to aaaa1111
Имя amend-to
кажется соответствующим IMHO. Сравните поток с --amend
:
git add . && git commit --amend --no-edit
# vs
git add . && git amend-to <REV>
git config --global alias.<NAME> '!<COMMAND>'
- создает глобальный псевдоним git с именем <NAME>
, который будет выполнять команду non-git <COMMAND>
f() { <BODY> }; f
- «анонимная» функция bash. SHA=`git rev-parse "$1"`;
- преобразует аргумент в git-ревизию и присваивает результат переменной SHA
git commit --fixup "$SHA"
- fixup-commit для SHA
. См. git-commit
docs GIT_SEQUENCE_EDITOR=true git rebase --interactive --autosquash "$SHA^"
git rebase --interactive "$SHA^"
часть была покрыта другими ответами. --autosquash
- это то, что используется в сочетании с git commit --fixup
, см. git-rebase
docs для получения дополнительной информации GIT_SEQUENCE_EDITOR=true
, что делает все это неинтерактивным. Этот хак я узнал из этого сообщения в блоге . amend-to
обрабатывать неустановленные файлы: git config --global alias.amend-to '!f() { SHA=
git rev-parse & quot; $ 1 & quot; ; git stash -k && git commit --fixup "$SHA" && GIT_SEQUENCE_EDITOR=true git rebase --interactive --autosquash "$SHA^" && git stash pop; }; f'
– Dethariel
6 March 2018 в 23:16
Если по какой-то причине вам не нравятся интерактивные редакторы, вы можете использовать git rebase --onto
.
Предположим, вы хотите изменить Commit1
. Прежде всего, отделитесь от до Commit1
:
git checkout -b amending [commit before Commit1]
Во-вторых, возьмите Commit1
с cherry-pick
:
git cherry-pick Commit1
Теперь измените ваши изменения, создавая Commit1'
:
git add ...
git commit --amend -m "new message for Commit1"
И, наконец, после того, как вы спрятали какие-либо другие изменения, пересаживайте остальную часть своих коммитов до master
поверх вашей новой фиксации:
git rebase --onto amending Commit1 master
Читайте: «rebase, на ветку amending
, все фиксируются между Commit1
(не включительно) и master
(включительно)». То есть Commit2 и Commit3 полностью разрезают старый Commit1. Вы можете просто выбрать вишню, но это проще.
Не забудьте очистить свои ветви!
git branch -d amending
git checkout -b amending Commit1~1
, чтобы получить предварительную фиксацию
– Arin Taylor
12 July 2017 в 21:13
На основании Документация
Изменение сообщения более старых или нескольких сообщений фиксации
git rebase -i HEAD~3
Вышеупомянутый список последних 3 фиксаций текущая ветвь, измените 3 на что-то еще, если хотите больше. Список будет выглядеть следующим образом:
pick e499d89 Delete CNAME
pick 0c39034 Better README
pick f7fde4a Change the commit message but push the same commit.
Заменить выбор с помощью повтора перед каждым сообщением фиксации, которое вы хотите изменить. Скажем, вы изменили вторую фиксацию в списке, ваш файл будет выглядеть следующим образом:
pick e499d89 Delete CNAME
reword 0c39034 Better README
pick f7fde4a Change the commit message but push the same commit.
Сохраните и закройте файл списка фиксаций, появится новый редактор, который изменит вашу фиксацию сообщение, изменить сообщение фиксации и сохранить.
Завершить принудительное принудительное изменение.
git push --force
Я решил это,
1), создав новую фиксацию с изменениями, которые я хочу.
r8gs4r commit 0
2) Я знаю, какой фиксации мне нужно объединить с ней. который является фиксацией 3.
, поэтому git rebase -i HEAD~4
# 4 представляет недавний 4 фиксации (здесь commit 3 находится на 4-м месте)
3) в интерактивной rebase недавняя фиксация будет расположена внизу , он будет выглядеть одинаково,
pick q6ade6 commit 3
pick vr43de commit 2
pick ac123d commit 1
pick r8gs4r commit 0
4) здесь нам нужно перестроить фиксацию, если вы хотите объединиться с конкретным. он должен выглядеть следующим образом:
parent
|_child
pick q6ade6 commit 3
f r8gs4r commit 0
pick vr43de commit 2
pick ac123d commit 1
после переупорядочения вам нужно заменить p
pick
на f
(исправление будет сливаться без сообщения фиксации) или s
(слияние сквоша с сообщением фиксации может изменить время выполнения)
, а затем сохранить ваше дерево.
теперь сливается с существующим фиксатором.
Примечание: его предпочтительный метод, если вы не «поддерживать себя самостоятельно. если у вас большой размер команды, его не приемлемый метод для перезаписи дерева git закончится конфликтами, которые, как вы знаете, будут другими. если вы хотите поддерживать чистоту дерева с меньшим количеством коммитов, можете попробовать это, и если его небольшая команда в противном случае не будет предпочтительной .....
blockquote>
Пришел к этому подходу (и он, вероятно, точно так же, как и с использованием интерактивной переадресации), но для меня это довольно просто.
Примечание. Представляю этот подход для иллюстрации того, что вы можете а не повседневную альтернативу.
Предположим, вы хотите изменить commit 0
, и вы в настоящий момент находитесь на feature-branch
some-commit---0---1---2---(feature-branch)HEAD
. Выполните проверку этого коммита и создайте quick-branch
. Вы также можете клонировать свою ветвь функции как точку восстановления (перед запуском).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Теперь у вас будет что-то вроде этого:
0(quick-branch)HEAD---1---2---(feature-branch)
Сценические изменения, .
git add ./example.txt
git stash
Заменить изменения и выполнить возврат к feature-branch
git commit --amend
git checkout feature-branch
Теперь у вас будет что-то вроде этого:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
на quick-branch
(разрешить любые конфликты на этом пути). Примените stash и удалите quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
И вы получите:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git не будет дублировать (хотя я не могу сказать, в какой степени) 0 commit при перезагрузке.
Примечание: все хеши фиксации изменяются, начиная с фиксации, которую мы изначально планировали изменить.
Чтобы получить неинтерактивную команду, поместите скрипт с этим контентом в ваш PATH:
#!/bin/sh
#
# git-fixup
# Use staged changes to modify a specified commit
set -e
cmt=$(git rev-parse $1)
git commit --fixup="$cmt"
GIT_EDITOR=true git rebase -i --autosquash "$cmt~1"
Используйте его, разместив свои изменения (с помощью git add
), а затем запустите git fixup <commit-to-modify>
. Конечно, он все равно будет интерактивным, если у вас появятся конфликты.
Для меня это было для удаления некоторых учетных данных из репо. Я попытался переустановить и столкнулся с тонкой, казалось бы, несвязанными конфликтами на пути, когда пытался переустановить, - продолжайте. Не утруждайте себя попыткой перезагрузить себя, используйте инструмент BFG (brew install bfg) на mac.
Интерактивная rebase с --autosquash
- это то, что я часто использую, когда мне нужно исправлять предыдущие, фиксирует глубже в истории. Это существенно ускоряет процесс, который иллюстрирует ответ ZelluX, и особенно удобен, когда у вас есть несколько коммитов, которые вам нужно отредактировать.
Из документации:
--autosquash
Когда сообщение журнала фиксации начинается с «squash! ...» (или «fixup! ...»), и есть фиксация, название которой начинается с того же ..., автоматически изменяет список дел rebate -i, так что фиксация, помеченная для раздачи, появляется сразу после модификации фиксации
Предположим, что у вас есть история, которая выглядит так:
$ git log --graph --oneline * b42d293 Commit3 * e8adec4 Commit2 * faaf19f Commit1
и у вас есть изменения, которые вы хотите внести в Commit2, затем выполните свои изменения с помощью
$ git commit -m "fixup! Commit2"
, иначе вы можете использовать commit-sha вместо сообщения commit, поэтому
"fixup! e8adec4
или даже префикс сообщение фиксации.Затем инициируйте интерактивную rebase на фиксации до
$ git rebase e8adec4^ -i --autosquash
, который откроет ваш редактор с уже правильно упорядоченными коммитами
pick e8adec4 Commit2 fixup 54e1a99 fixup! Commit2 pick b42d293 Commit3
все, что вам нужно сделать, это сохранить и выйти [/ g1 0]
git commit --fixup=@~
вместо git commit -m "fixup! Commit2"
. Это особенно полезно, когда ваши сообщения фиксации более длинные, и было бы болью печатать все это.
– Zaz
19 October 2015 в 20:57
reword
вgit rebase -i
вместоedit
(он автоматически открывает редактор и продолжается с остальными этапами переадресации, что устраняет использованиеgit commit --ammend
иgit rebase --continue
, когда вам нужно только изменить сообщение фиксации, а не контент). – Chris Johnsen 29 November 2010 в 04:35git stash
доgit rebase
иgit stash pop
после этого, если у вас есть ожидающие изменения. – user123444555621 18 September 2013 в 09:42git commit --all --amend --no-edit
здесь. Все, что мне нужно было делать послеgit rebase -i ...
, былоgit commit --amend
обычно тогдаgit rebase --continue
. – Eric Chen 2 March 2017 в 10:04