簡體   English   中英

如何讓git merge處理我工作樹的未提交更改?

[英]How to make git merge handle uncommitted changes to my working tree?

一位同事和我現在都在主分公司工作。 我在工作樹中有一些我不想提交的代碼(調試語句等)。 現在,如果他對某些相同的文件進行更改,我就無法合並它們:

$ git merge origin/master
Updating 1b8c5c6..eb44c23
error: Entry 'blah.java' not uptodate. Cannot merge.

來自subversion背景,我習慣於在從存儲庫中提取更改時自動合並工作樹,如果存在沖突,我會手動解決它們。

我發現在git中這樣做的最快方法是:

$ git stash
$ git merge origin/master
$ git stash pop

本質上,刪除我未提交的更改,執行合並然后重新應用更改。 如何告訴merge自動將我的工作樹與我想要引入的更改合並?

忘掉你從顛覆中學到的一切。

在引入外部更改之前始終提交。

想象一下,你有一棵大多數工作的樹 - 也許並不完美,但你正在取得一些進展。 然后你去做一個合並,你帶來的代碼只會造成嚴重破壞(本身就是錯誤,需要處理的沖突太多等等)。 如果你可以撤消它,那不是很好嗎?

如果你承諾,你可以。 如果你不這樣做,你就會受苦。

記住:你犯了什么並不一定是你推什么,但你不承諾,你可以很容易失去。

只做安全和輕松的事情,盡早提交並經常提交。

據我所知,你能做的最好的就是你已經擁有的git stash 我也覺得奇怪,合並只想處理干凈的樹木。

  • 如果未提交本地工作
    • 並且您已經引入了遠程分支中不存在的全新文件:
    • 或者受本地工作影響的文件與受遠程控制所需更改影響的文件重疊ZERO:
      • 你很幸運: git pull將“正常工作”
    • 除此以外:
      • 如果您的本地更改與您正在提取的更改沒有重疊:
        • git stash會起作用:
          • git stash save
          • git pull
          • git stash pop
      • 如果您的本地更改與您正在進行的更改有一些重疊:
        • git stash需要手動解決沖突:
          • git stash save
          • git pull
          • git stash pop
          • 解決合並沖突
          • git reset
          • git stash drop
  • 如果承諾本地工作
    • 受本地工作影響的文件與受影響的文件重疊
      • 你很幸運: git pull將“正常工作”
      • 但是:由於歷史更清晰, git pull --rebase將“更好地工作”
      • 沒有合並提交; 您的更改將在上游更改后提交
    • 除此以外:
      • git pull將需要手動解決沖突:
        • git pull
        • 解決合並沖突
        • git add FILE為每個沖突的FILE git add FILE FILE
        • git commit
      • 由於歷史更清晰, git pull --rebase仍然可以“更好地工作”
        • 但是,解決合並沖突可能要困難得多

有關詳細說明,請參閱: https//happygitwithr.com/pull-tricky.html

您不能告訴git merge合並對本地存儲庫進行更改的文件的更改。 這可以防止您在合並失敗時丟失更改。

使用CVS和SVN合並方法,如果您沒有在更新之前手動復制文件並且在合並時將它們加擾,則必須手動重新編輯才能恢復到良好狀態。

如果您在進行合並之前提交更改或存儲它們,則一切都是可逆的。 如果合並不順利,你可以嘗試幾種方法使其成功,並選擇效果最好的方法。

如果你確實提交了實驗或調試更改,你可以使用git rebase在你通過git merge獲得的提交之后移動它們,以便更容易擺脫它們或者避免意外地將它們推送到存儲庫。

請注意,在已推送到共享存儲庫的分支上使用git rebase將導致從該存儲庫中提取的每個人都感到悲傷。

我更喜歡在這些情況下使用git stash ,但是我只在合並更改我已編輯但未提交的文件時才使用它。

暫無
暫無

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

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