簡體   English   中英

一次性將本地 git repo 與遠程同步,丟棄本地更改/提交

[英]Sync local git repo with remote in one shot discarding local changes/commits

我不是 git 專家,所以這可能看起來像一個愚蠢的問題。

我有本地和遠程存儲庫,我想將我的本地存儲庫與遠程存儲庫同步。 我有許多本地更改、隱藏的更改以及尚未推送到遠程的少量提交。

一種方法是刪除所有本地更改(使用git clean ),恢復提交,而不是從遠程fetch/pull 但我認為必須有一些單一的命令可以一次性完成所有這些。 我嘗試使用git reset --hard HEAD然后git pull但這給了我:

# Your branch and 'origin/master' have diverged,
# and have 1 and 9 different commits each, respectively.

也在看這個問題,但沒有幫助。

如評論所述, git reset --hard origin/master會將您的master服務器重置為上游。

但是:您當前的主人(及其本地提交)將“丟失”(至少,不再可見)。

所以一步不是最好的方法。

我會推薦類似的東西:

git checkout master
git fetch origin
git branch tmp
git reset --hard origin/master
git checkout tmp
git rebase master
git checkout master
git merge tmp
git branch -d tmp

這樣,您可以在更新的 master 之上重新設置本地提交

x--x--x--x--x (master, origin/master)       x--x--x--x--x--y'--y' (tmp, master)
       \                                 =>
        y--y  (tmp)                           (after rebase+merge)

如果您總是想在遙控器上創建一個新分支來鏡像和跟蹤您的本地分支(反之亦然),那么永久修復是:

git config --global push.default current

執行 git clone 后,我總是使用此命令配置本地 git。 雖然它可以在本地遠程分支“Git 致命:當前分支沒有上游分支”錯誤發生時隨時應用。

希望這可以幫助。 多平安。 :)

此命令將丟棄分支上的所有本地提交並將其重置為鏡像遠程當前的內容:

git pull
git reset --hard origin/your-branch

pull 命令是為了確保你擁有的是最新的分支

git fetch -[options]

查看:

git fetch --help

對於您可以使用的功能

暫無
暫無

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

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