簡體   English   中英

如何在 Git 中創建沒有提交的補丁?

[英]How to create a patch without commit in Git?

我在網上做了一些搜索。 我知道你可以在提交后使用格式補丁,但我的情況有點不同。

我想創建一個補丁,類似於 SVN 中的“dpk”,所以我可以將它發送出去進行代碼審查,但我還不想提交它。

如何使用 Git 實現這一目標?

當其他人已經給出了一些符合 git 約定的答案時,OP 的問題“創建一個不提交的補丁”也可以這樣解決:

git diff > my_patch.txt

稍后您可以通過以下方式應用此補丁,也無需提交:

git apply my_patch.txt

但是,如果您只是在本地工作,則git checkout another_branch -m足以將您當前的所有未提交更改帶到另一個分支,甚至無需修補和應用。

最后生成沒有提交的補丁的一般步驟

  1. 使用提交您的本地更改

    git commit -a -m "specific message"

    注意:不要推送此提交。

  2. 生成補丁

    git format-patch -s -n -1 HEAD

    它將生成 0001-.patch

  3. 恢復本地提交

    git reset --soft HEAD~1

    刪除提交但保留你的工作

    git reset --hard HEAD~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

就像@hammar 說的那樣,提交很便宜,然后你可以用git reset等來清除提交。

您還可以 stash 然后執行以下操作:

git stash show -p

在 git 中對本地倉庫的提交不是“綁定”的。 您可以提交您的更改,創建您的補丁,然后在您的分支上進行軟重置到之前的提交,就像您的提交從未發生過一樣。

話雖這么說,創建補丁后確實沒有理由必須重置分支。 您可以將提交保留在 repo 中,並且在代碼審查完成之前避免推送它。 如果您必須返回並更改原始提交,那么您可以選擇。

而且,如果您按照 hammar 的建議為提交創建一個分支,則可以更輕松地返回並稍后進行更改,而無需在推送之前在主分支中進行任何煩人的變基等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM