2016-01-26 3 views
5

После выполнения интерактивной перестановки в git я хочу иметь сообщение фиксации, которое начинается с символа # (хеш, или фунт), но строки, начинающиеся с #, рассматриваются как комментарии и игнорируются.Escape # символ в сообщении об ошибке переадресации

Есть ли способ избежать символа #, чтобы мое сообщение о совершении действительно начиналось с #?

Подробнее

Я выполняю интерактивный перебазироваться с помощью:

git rebase -i HEAD~4 

Затем в редакторе я делаю все, что необходимо, например:

pick b010299 #91691 Add test for logging in with valid credentials 
reword 5e9159d 91691 Implement log-in feature 
pick 2735aa3 #91691 Re-factor logic 
pick 14bd500 #91691 Tidy up 'using' declarations 

# Rebase 60d6e3f..14bd500 onto 60d6e3f 
# 
# Commands: 
# p, pick = use commit 
# r, reword = use commit, but edit the commit message 
# e, edit = use commit, but stop for amending 
# s, squash = use commit, but meld into previous commit 
# f, fixup = like "squash", but discard this commit's log message 
# x, exec = run command (the rest of the line) using shell 
# 
# These lines can be re-ordered; they are executed from top to bottom. 
# 
# If you remove a line here THAT COMMIT WILL BE LOST. 
# 
# However, if you remove everything, the rebase will be aborted. 
# 
# Note that empty commits are commented out 

Тогда мерзавца загружает сообщение фиксации в текстовом редакторе для коммита, который я хочу переписать, но я хочу сохранить сообщение о совершении с помощью # в начале:

#91691 Implement log-in feature 

# Please enter the commit message for your changes. Lines starting 
# with '#' will be ignored, and an empty message aborts the commit. 
# rebase in progress; onto 60d6e3f 
# You are currently editing a commit while rebasing branch 'master' on '60d6e3f'. 
# 
# Changes to be committed: 
# modified: My.Website.LogInController.cs 

Но это означает, что мое сообщение о совершении будет проигнорировано. Как мне сделать сообщение commit #91691 Implement log-in feature?

ответ

9

Если вы сохраните вы коммита с # так в действительности ваше сообщение фиксации является пустым (вы можете также удалить все, что в сообщении), мерзавец покажет вам, что делать:

Aborting commit due to empty commit message. 
Could not amend commit after successfully picking 5e9159d9ce3a5c3c87a4fb7932fda4e53c7891db... 91691 Implement log-in feature 
This is most likely due to an empty commit message, or the pre-commit hook 
failed. If the pre-commit hook failed, you may need to resolve the issue before 
you are able to reword the commit. 
You can amend the commit now, with 

     git commit --amend 

Once you are satisfied with your changes, run 

     git rebase --continue 

So просто изменить сообщение:

git commit --amend -m "#91691 Implement log-in feature" 

и продолжить перебазирование:

git rebase --continue 
+0

Что делать, если я совершаю s очень большой и многострочный, как хэш-знак может быть добавлен в начале строки? – Mohammed

+0

Просто положите свои разрывы строк перед закрытием двойных кавычек. Git довольна многострочными длинными сообщениями фиксации. –

Смежные вопросы