MailMessage mail = new MailMessage();
mail.From = new MailAddress("nerfDeathKnights@mycompany.com", "Bob Jones" );
Есть три основных способа сделать это в зависимости от того, что вы сделали с изменениями в файле A. Если вы еще не добавили изменения в индекс или не зафиксировали их, тогда вы просто хотите использовать команду checkout - это изменит состояние рабочей копии в соответствии с репозиторием:
git checkout A
Если вы уже добавили ее в индекс, используйте reset:
git reset A
Если вы зафиксировали ее, то вы используете возврат command:
# the -n means, do not commit the revert yet
git revert -n <sha1>
# now make sure we are just going to commit the revert to A
git reset B
git commit
Если, с другой стороны, вы зафиксировали его, но в фиксации было задействовано довольно много файлов, которые вы также не хотите восстанавливать, то вышеупомянутый метод может включать в себя множество команд «сброса B». В этом случае вы можете использовать этот метод:
# revert, but do not commit yet
git revert -n <sha1>
# clean all the changes from the index
git reset
# now just add A
git add A
git commit
Другой метод, опять же, требует использования команды rebase -i. Это может быть полезно, если вам нужно отредактировать более одного коммита:
# use rebase -i to cherry pick the commit you want to edit
# specify the sha1 of the commit before the one you want to edit
# you get an editor with a file and a bunch of lines starting with "pick"
# change the one(s) you want to edit to "edit" and then save the file
git rebase -i <sha1>
# now you enter a loop, for each commit you set as "edit", you get to basically redo that commit from scratch
# assume we just picked the one commit with the erroneous A commit
git reset A
git commit --amend
# go back to the start of the loop
git rebase --continue
git add B # Add it to the index
git reset A # Remove it from the index
git commit # Commit the index
Да;
git commit FILE
зафиксирует только ФАЙЛ. Затем вы можете использовать
git reset --hard
для отмены локальных изменений в других файлах.
Могут быть и другие способы, о которых я не знаю ...
edit: или, как сказал NicDumZ, git-checkout просто файлы, для которых вы хотите отменить изменения (лучшее решение зависит от того, есть ли больше файлов для фиксации или больше файлов для отмены: -)
Почему вы не можете просто отметить, какие изменения вы хотите внести в коммит, используя « git add
В вашей ситуации (для вашего примера) это будет:
prompt> git add B
prompt> git commit
Только изменения в файле B будут зафиксированы, а файл A останется «грязным», то есть с теми операторами печати в версии рабочей области. Если вы хотите удалить эти операторы печати, достаточно использовать
prompt> git reset A
или
prompt> git checkout HEAD -- A
, чтобы вернуться к завершенной версии (версия из HEAD, т.е. версия "git show HEAD: A").