簡體   English   中英

幾個git用法問題

[英]A few git usage questions

  1. 說我創建一個分支,然后合並到master,然后意識到事情出了問題。 我如何在合並之前恢復到原來的狀態?

  2. 說我創建了一個分支,對其進行處理,然后去合並並分配沖突。 假設我不想處理它,現在就將新分支設為主分支,我該怎么做?

順便說一句,您在網上看到的關於現實生活中GIT使用模式的最佳教程是什么?

  1. 如果您合並並且不希望該提交,則正確的命令是

     git reset --hard HEAD@{1} 

    這意味着將分支重置為之前的位置(閱讀{}語法-您可以通過閱讀有關git reflog的信息來獲取大多數信息)。 HEAD^1也可以使用,但是您必須知道您正在指定當前提交的第一個父對象。

    如果您已經推送了此提交,請謹慎通知所有人。 如果您沒有能力傳達共享存儲庫中分支的將來強制更新,則不要這樣做。

  2. 進行此操作的正確方法是再次合並,但這一次從新分支開始進行合並,並指定只希望自己支持。 “他們的”策略已被棄用。

     git merge -s ours master 

    然后將master更新到另一個分支所在的位置:

     git checkout master git merge --ff-only otherbranch 

    或者,相反,由於您知道這將是一次快速合並(以上只是安全檢查),因此您可以僅將主服務器更新為當前提交,而無需將其檢出:

     git update-ref refs/heads/master HEAD 

    您可以繼續在分支機構上工作。 如果要使用master,請使用前面的命令。

  3. 以下是一些我認為有用的鏈接:

    gitready.com Comitinity Git書 Pro Git書 我的文章

    其他來源:

    Freenode Twitter搜索瀑布 上的IRC頻道

    您也可以使用相同的ID在Twitter上找到我。

  1. 如果沒有推送,請簽出master,然后使用git reset --hard以及最后一次提交的名稱。 或者,使用reflog: HEAD@{1}將帶您回到以前的位置。 如果已推送,請使用git-revert來創建包含您的更正的新提交。
  2. git reset --hard mybranch出主服務器,然后使用git reset --hard mybranch 這使得master指向與mybranch相同的提交,從本質上講,由於分支分支而丟棄了master上的所有工作。 同樣,如果有關master的工作被公開,則丟掉它是一個壞主意。
  3. 請參閱小型團隊的Git開發策略
  1. 說我創建一個分支,然后合並到master,然后意識到事情出了問題。 我如何在合並之前恢復到原來的狀態?

    1. 如果您還沒有進入主線或者已經推入,並且絕對知道沒有人從主線撤出,那么請執行以下操作:

      git reset --hard HEAD〜N(N是您想返回的提交數。)

    2. 如果您已經推了推,或者不能確定是否沒有其他人沒有推,那么請承擔自己的錯誤,然后執行以下操作:

      git還原

  2. 說我創建了一個分支,對其進行處理,然后去合並並分配沖突。 假設我不想處理它,現在就將新分支設為主分支,我該怎么做?

     git checkout <desired branch> git branch -d master git branch -m <desired branch> master 
  3. 順便說一句,您在網上看到的關於現實生活中GIT使用模式的最佳教程是什么?

    http://nvie.com/posts/a-successful-git-branching-model/

  1. http://www.kernel.org/pub/software/scm/git/docs/git-revert.html
  2. 要合並git reset --hard就足夠了,要進行基礎調整,您將必須執行git rebase --abort

暫無
暫無

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

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