Подтвердить что ты не робот

Как создать патч без фиксации в Git

Я сделал поиск в Интернете. Я знаю, что вы можете использовать format-patch после фиксации. Но моя ситуация немного отличается.

Я хочу создать патч, подобный "dpk" в SVN. Поэтому я могу отправить его для проверки кода. Но я еще не хочу его совершать.

как это сделать в GIT? любые GURU?

4b9b3361

Ответ 1

Фиксирование в Git является дешевой и полностью локальной операцией, поэтому нет причин избегать фиксации до тех пор, пока вы ничего не нажимаете.

Просто создайте новую локальную ветку и зафиксируйте там свои изменения. Вы всегда можете удалить ветвь позже, если вы этого больше не хотите, или вы можете сохранить ветку и использовать ее для работы над тем, что вы делаете, а затем слить (или переустановить) ее в основную ветку, когда она будет готова. Это хороший рабочий процесс, который следует использовать при работе с Git.

$ git checkout -b feature-foo  # create and switch to new branch feature-foo
$ git commit

# do whatever you need to do

$ git checkout master          # switch back to the master branch
$ git merge feature-foo        # merge your change into master (optional)
$ git branch -d feature-foo    # delete the branch

Ответ 2

Когда другие ребята уже дали какой-то ответ, который соответствует соглашению git, вопрос OP, "создать патч без фиксации", также можно решить следующим образом:

git diff > my_patch.txt

Позже вы можете применить этот патч, также без фиксации, посредством:

git apply my_patch.txt

Но если вы просто работаете локально, git checkout another_branch -m достаточно хорош, чтобы привести все ваши текущие uncommit изменения в этот another_branch, даже без патча и применения.

Ответ 3

общий шаг для создания патча без фиксации наконец

  • скопируйте локальные изменения, используя

    git commit -a -m "specific message"
    

    Примечание: не нажимайте эту фиксацию.

  • создать патч

    git format-patch -s -n -1 HEAD   
    

    он будет генерировать 0001-.patch

  • вернуть обратно локальную фиксацию

    git reset --soft HEAD~1
    

    удалить фиксацию, но сохранить свою работу

    git reset --hard HEAD~1
    

    чтобы удалить фиксацию с вашей работой.

Ответ 4

Как и @hammar, фиксация будет дешевой, а затем вы можете снести фиксацию с помощью git reset и т.д.

Вы также можете запрограммировать и выполнить следующее:

git stash show -p

Ответ 5

Передача локального репо в git не является обязательной. Вы можете зафиксировать свои изменения, создать свой патч, а затем сделать мягкую reset в своей ветке предыдущей фиксации, и это похоже на то, что ваша фиксация никогда не происходила.

При этом, действительно, нет причин, по которым вы должны иметь reset свою ветку после создания патча. Вы можете оставить фиксацию в репо и просто не нажимать ее, пока не будет проведен обзор кода. Если вам нужно вернуться и внести изменения в первоначальную фиксацию, у вас есть варианты в этой точке.

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