簡體   English   中英

如何獲取git倉庫的更新分支?

[英]How to get updated branch for a git repo?

我正在嘗試提出一系列git命令,這些命令將更改為預先存在的git repo中的一個已知分支。 我知道的三件事是:

  • 我已經在包含.git文件夾的文件夾中
  • 我要檢出的分支在origin存在
  • 我要撤消在此文件夾內進行的任何臨時(暫存或暫存)更改。

這就是我在做什么:

git clean -xfd
git reset HEAD --hard
git add --all; git stash; git stash drop
git fetch origin
git checkout -B $BRANCH
git pull origin $BRANCH

這是實現此目標的最少的git命令集嗎? 是否有任何情況下這些命令序列將失敗?

因此,您的想法是您當前的結帳可能處於完全垃圾回收的潛在惡意狀態,而您想完全放棄它嗎?

git fetch
git checkout -f -B branch origin/branch
git clean -dfx

如果沒有子模塊,這就是您想要的。 如果這樣做,核選項是

git read-tree --empty
git clean -dffx         # <-- two f's, forces submodule removal
git fetch
git checkout -B branch origin/branch
git submodule update --init    

(編輯:從find -exec rm切換到read-tree / clean)


不要為此使用git pull ,它會進行提取,然后將提取的歷史記錄合並到您當前的結帳中。 首先執行git checkout -B branch只是標記您當前的checkout branch ,因此該操作和拉取的結果與切換到原點的分支相距很遠。

您可以使之更簡單:

git fetch --all --prune
git pull origin <branch>

如果您正在執行git reset --hard ,則不需要git stash因為您的工作目錄將被清除

git reset HEAD --hard

get reset --hard
重置索引和工作樹
由於對工作樹中跟蹤文件的任何更改,都將被丟棄。


我要撤消在此文件夾內進行的任何臨時(暫存或暫存)更改。

無需這樣做,因為除非您明確添加所有未提交的內容,否則不會將其添加到您的分支中

不過,如果您要清除當前工作目錄

# small x
git clean -xfd 

# capital x
git clean -Xfd 

-x

不要使用從.gitignore(每個目錄)和$ GIT_DIR / info / exclude讀取的標准忽略規則,但仍要使用-e選項提供的忽略規則。 這允許刪除所有未跟蹤的文件,包括構建產品。 可以使用它(可能與git reset結合使用)創建原始工作目錄以測試干凈的構建。

-X
僅刪除Git忽略的文件
這對於從頭開始重建所有內容很有用,但保留手動創建的文件。

暫無
暫無

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

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