Отмена мерзавца изменяется в некоторых файлах [дубликат]

MailMessage mail = new MailMessage();
mail.From = new MailAddress("nerfDeathKnights@mycompany.com", "Bob Jones" );
184
задан Shirish Herwade 11 January 2018 в 00:48
поделиться

5 ответов

Есть три основных способа сделать это в зависимости от того, что вы сделали с изменениями в файле 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
287
ответ дан 23 November 2019 в 05:57
поделиться
git add B # Add it to the index
git reset A # Remove it from the index
git commit # Commit the index
7
ответ дан 23 November 2019 в 05:57
поделиться

Да;

git commit FILE

зафиксирует только ФАЙЛ. Затем вы можете использовать

git reset --hard

для отмены локальных изменений в других файлах.

Могут быть и другие способы, о которых я не знаю ...

edit: или, как сказал NicDumZ, git-checkout просто файлы, для которых вы хотите отменить изменения (лучшее решение зависит от того, есть ли больше файлов для фиксации или больше файлов для отмены: -)

3
ответ дан 23 November 2019 в 05:57
поделиться

man git-checkout : git checkout A

6
ответ дан 23 November 2019 в 05:57
поделиться

Почему вы не можете просто отметить, какие изменения вы хотите внести в коммит, используя « git add » (или даже «git add - -interactive »или« git gui »с возможностью интерактивного коммитирования), а затем использовать« git commit »вместо« git commit -a »?

В вашей ситуации (для вашего примера) это будет:

prompt> git add B
prompt> git commit

Только изменения в файле B будут зафиксированы, а файл A останется «грязным», то есть с теми операторами печати в версии рабочей области. Если вы хотите удалить эти операторы печати, достаточно использовать

prompt> git reset A

или

prompt> git checkout HEAD -- A

, чтобы вернуться к завершенной версии (версия из HEAD, т.е. версия "git show HEAD: A").

1
ответ дан 23 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: