![](/img/trans.png)
[英]svn2git with --exclude, any way to ignore the empty/blank commits?
[英]Any way to exclude commits from branch in git?
我正在尋找一種從分支中排除提交的方法。
假設我有我推送到生產服務器的分支主機。 但是我有一些承諾,我不想推送到服務器。 有沒有辦法在推送時排除這些提交?
也許使用標簽可以實現?
也許您有其他想法如何解決這個問題?
從一開始……這聽起來像是工作流程中其他分支的用例。 您可能希望擁有一個指向生產服務器的main
分支。 然后,當您想要進行增量提交、錯誤修復、重構等時,您可以將它們存儲在development
分支中。 這樣,生產服務器仍然可以git pull
(來自main
)而沒有任何問題,並且您可以將提交存儲在另一個地方。 一旦開發分支是准備去住在生產中,您可以rebase
的development
上所發生的任何提交的頂枝main
,而你忙於其他,那么你可以快進從提交development
到main
使用git merge
此循環稱為功能分支工作流,可能會解決您遇到的問題的性質。
現在...回答您最初的問題,當您從 git 存儲庫中提取時,沒有一種超級直觀的方法可以過濾掉特定的提交。 並不是說它不能完成......但它需要一些工作才能到達那里。
如果我有一個名為main
的分支並且它提交了 ABCDE:
Newest
a2a35a479a69b62cba8c65344211d9fc3e1dc66e - E
7213fb8420ca164c3975078a498b394be3455870 - D
b6db644732c28a4f91061d812a61c37d09f8f94c - C
4dab25431e3dd747874f9488389c094e81bc96ba - B
aa2d56df73afb19043c33f4b9e8addd2d9089375 - A
Oldest
我只想拉提交 ABDE(刪除 C)我會做以下事情:
origin
。 使用git remote -v
查看可以從中獲取和推送到哪些遙控器。git branch
列出可用的分支。git log
查看可用的提交哈希main
指定為對主分支中最新提交的引用。 如果一切順利,您現在將擁有一個分離的 HEAD,並按順序提交 ABDE。 您可能會遇到櫻桃選擇涉及合並的問題(這完全是一個單獨的問題)我不知道您想從這里做什么,但是此時您可以創建一個新分支(並開始使用這個新分支)分支),或者保持原樣,直到您需要再次從main
挑選更多提交(這聽起來有點奇怪......我不推薦這個)
如果有一些提交,比如 5,在origin/master 之前,但希望只推送其中的一些,比如 2,手冊可以幫助你:使它成為一個主題分支
撤消提交,使其成為主題分支
$ git branch topic/wip (1) $ git reset --hard HEAD~3 (2) $ git checkout topic/wip (3)
然后你可以push
(前兩次提交)到origin/master ,然后繼續工作。 您可能只是進入topic/wip分支,然后有選擇地合並,或者您可能將整個topic/wip分支合並到您的本地 master 中。
關鍵是
branch
命令,它將您當前的狀態保存到分支reset --hard
命令,它從 master 中刪除最后 3 個提交你需要從 master 那里獲得另一個分支,然后從那里挑選你想要的提交。 你可以通過git log
查看你的提交
來自主人
git checkout -b branch
git cherry-pick <sha1-of-commit>
然后推動你的分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.