簡體   English   中英

如何判斷自上次git pull或git push之后我更改過的git pull將覆蓋哪些文件?

[英]How to tell what files would be over written by a git pull that I've changed since the last git pull or git push?

我正在兩台不同計算機上的master分支上工作,並將代碼推送到其中一台計算機上的遠程存儲庫中。

我正在嘗試將代碼從另一台計算機推送到遠程存儲庫,但出現錯誤

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to  'https://github.com/'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

我打算進行$ git pull但是想知道是否有辦法告訴我自從上次從遠程repo進行git pull以來,還是在本地進行了git push之后,我對本地文件進行了更改。遠程回購。

我對已修改文件的完整列表不感興趣。

我不確定我是否真的了解您想要什么,所以我會列舉一些可能的情況和解決方案。

  1. 如果您想知道文件,則本地分支與遠程分支不同:

     git diff --name-status master origin/master 
  2. 如果您打算拉,但想知道將被修改的內容:

     git pull --no-commit 

    git會給您留下合並的工作樹,您可以通過git status類的命令檢查修改后的文件。

  3. 如果您想清除歷史記錄,我建議(也許您不打算這樣做)

     git pull --rebase 

    它將從遠程獲取最新代碼並在其上應用本地更改。

我不知道執行此操作的任何git內部方法(盡管我不會驚訝地發現有這種方法),但是我相信以下內容應該可以滿足您的要求(至少在您獲取了遠程更改之后) 。

# Find merge base between the branch heads.
mb=$(git merge-base master origin/master)

# List of files changed by local master.
git diff --name-only $mb master

# List of files changed by origin/master.
git diff --name-only $mb origin/master

# List of files changed by both heads.
comm -1 -2 <(git diff --name-only $mb master) <(git diff --name-only $mb origin/master)

要找出哪些(本地更改和未提交的文件)與遠程分支上更改的文件重疊,請嘗試:

# List of files locally changes (uncommitted).
git diff --name-only

# List of files changed in working directory and on remote branch.
comm -1 -2 <(git diff --name-only) <(git diff --name-only $mb origin/master)

應當注意,本地更改的版本不會標記本地添加的文件(除非您已經使用git add -N告訴git有關它們的信息)。

首先,請確保您執行git fetch以便您知道遠程分支是最新的。 然后,您可以使用此一線來獲取未提交的文件和遠程文件之間的差異。

git status | grep "(modified|deleted)" | awk '{print $3}' | git diff <remote branch name>

此命令采用git status並查找修改后的文件,對其進行解析,使其僅具有文件名。 最后,它使用這些文件名從源創建差異。

您將需要檢查差異的特定更改,但這會為您提供有關未提交的更改的信息。

暫無
暫無

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

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