簡體   English   中英

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.

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