據我所知,沒有辦法做到你想要的。 當您嘗試推一些承諾到遠程倉庫Git會檢測您當前分支是否是其遠程對應後面而且這種情況下,它會提示錯誤:
! [rejected] master -> master (non-fast-forward)
作爲示例考慮以下情形:
A - B - C - D (remote master)
\
- E (local master)
如果試圖在此情況下,推Git會阻止你和建議:
Updates were rejected because the tip of your current branch is behind its remote counterpart. Merge the remote changes (e.g. 'git pull') before pushing again.
也就是說,你必須獲取雷莫te分支,合併更改,然後推送合併結果。 Git阻止您推送可能與遠程分支衝突的更改,並要求您在推送之前在本地合併更改(並可能解決衝突)。
作爲一個便箋,你可以在Git中推動非快進的變化(也就是避免獲取遠程)git push --force
。儘可能避免強制推送,因爲它可能會帶來一些不愉快的後果,因爲無法訪問某些可能已經拉出的提交。 在以前的方案迫使一推將導致:
A - B - E (remote/local master)
正如你可以看到這會造成一些麻煩的是拉到偏僻以前的狀態的人。 有關git push --force
的後果的詳細說明,請參閱this堆棧溢出問題。
你也可以在Git中做什麼是獲取一個遠程並只檢出一些文件。你可以做到這一點:
git fetch
git checkout FETCH_HEAD -- <file-path>
然而,這並不解決您的問題,因爲它仍然獲取遠程並且不允許你推不合並。
這是一個非常清晰,結構良好的答案。非常感謝你! –