![](/img/trans.png)
[英]How to reset HEAD to a certain commit without losing last commit(s) in Git?
[英]GIT how to reset without a commit
假設我使用以下命令創建一個空的GIT存儲庫:
# git init
然后,我開始添加遠程存儲庫:
# git remote add remote1 ........
# git remote add remote2 ........
# git remote add remote3 ........
並獲取:
# git fetch --all
最后,我將所需的所有遠程分支合並到本地倉庫中:
# git merge remote1/branchX
# git merge remote2/branchY
# git merge remote3/branchZ
現在,假設我必須在所有合並之前重置本地存儲庫; 自然的解決方案似乎是只創建一個新的空存儲庫。 但是問題是:獲取我的遠程存儲庫需要很長時間(數小時),因此我想避免再次全部復制。
我無法執行“ git reset”,因為在所有合並之前都沒有提交。
作弊的一種不錯的方法是執行git init && git commit --allow-empty -m 'Initial commit.'
設置存儲庫時,至少可以緩解不存在的HEAD
的症狀。
但是,由於您已經獲取了所有的遙控器,因此,如果您要查找的是更多內容,則無需刪除存儲庫即可創建一個新的空/不相關分支:
git symbolic-ref HEAD refs/heads/new-branch
然后,當您在HEAD
上提交/合並任何內容時,git將為您填充新分支。 擁有另一個現有分支后,您可以硬重置master或執行其他任何使它們變幻莫測的技巧。
我認為這個線程: 簽出舊提交並使其成為新提交提供了一些可能性。 在合並之前簽出先前提交之一,或者重置到該位置。 如果發生了多個提交,我將先在合並之前查找SHA值並使用該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.