<address id="fblfv"><form id="fblfv"></form></address>

    <noframes id="fblfv"><address id="fblfv"><nobr id="fblfv"></nobr></address>
    <span id="fblfv"></span>

         找回密碼
         注冊帳號

        掃一掃,訪問微社區

        keyle Git FAQ

        0
        回復
        824
        查看
        打印 上一主題 下一主題
        [ 復制鏈接 ]
        排名
        3259
        昨日變化

        19

        主題

        173

        帖子

        1599

        積分

        Rank: 9Rank: 9Rank: 9

        UID
        22288
        好友
        10
        蠻牛幣
        2551
        威望
        0
        注冊時間
        2014-4-21
        在線時間
        339 小時
        最后登錄
        2021-3-25

        專欄作家

        QQ

        馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

        您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

        x
        今天有朋友問了我三個問題
        • 策劃或者美術可能沒有commit前先pull的習慣,先commit上去,然后push不上。Git提醒pull,然后報錯,一般除了程序,甚至沒使用過Git的程序就有點不知所措了。應該要講下出錯時候要stash的問題。
        • 策劃pull出錯時候, 萬一revert,然后push強推把之前別人提交的東西沖掉了。我們有用過回滾,然后強推上去??梢栽僦v下怎么強推
        • 怎么stash,怎么stash apply,apply失敗后怎么弄。commit的順序最好也要重點強調下
        在篇中我會解答,如果還有其他問題 請給我留言,我會追加敘述。求關注 求轉發。把愛傳出去 笑~

        在解答第一個問題之前我們先了解一下什么是 stash (存儲) (非程序人員跳過此條說明)
        stash意味著你有未提交的更改,將會在拉取代碼的時候防止本地的修改被覆蓋。順便說一句如果你想知道更多關于Git stash 的問題只需要提問:how do I solve the problem where Git tells me to commit or stash (如何解決Git告訴我commit或stash的問題)
        通過git stash將工作區恢復到上次提交的內容,同時備份本地所做的修改,之后就可以正常git pull了,git pull完成后,執行git stash pop將之前本地做的修改應用到當前工作區。
        git stash: 備份當前的工作區的內容,從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。同時,將當前的工作區內容保存到Git棧中。
        git stash pop: 從Git棧中讀取最近一次保存的內容,恢復工作區的相關內容。由于可能存在多個Stash的內容,所以用棧來管理,pop會從最近的一個stash中讀取內容并恢復。
        git stash list: 顯示Git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。
        git stash clear: 清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。
        Pull 與 Fetch 區別 (基本概念)
        • 每次commit都會有一個記錄。
        • 本地的所有commit在沒有push之前,都是存在本地。別人是更新不到你的commit記錄的。
        • 所謂更新就是拿到別人的Commit數據。
        • 如果你更新到別人的commit里也有你本次commit修改的數據 就會產生沖突,就需要合并。
        • Pull 的意思是 下載比自己更新的commit數據,并且開始合并,可能馬上就有從沖突文件。
        • Fetch 的意思是 下載比自己更新的commit數據,放在那里(不合并到當前commit),可以看看是否有必要更新到最近commit。
        先解釋下報錯信息
        你本地的修改和Git存儲上的沖突了,現在有兩種方式來解決:
        • commit 先提交本地的修改,commit的原因是為了可追溯,通過本地branches就能拿到N+1個版本的修改。防止丟失
        • stash 備份本地的修改 ,仍舊是防止丟失,且可以有多個版本 很靈活
        演示-Stash如何使用 規避文件修改被沖掉
        我們假設有兩個人正在操作同一份文件 README.md 。
        A君 : 我已經提交此文件的修改了,你更新下。
        B君 : 我先Fetch看看有,然后我上傳。嗯?沖突了。我并不知道你修改了什么個文件我也不想在同步的時候把本地的修改沖掉。 那我提前 Stash 這些個文件吧。
        機制的B君做了如下操作
        Stash了勾選后的將本地修改在這里
        B君 : 點擊 可將指定的Stash文件與更新后的文件合并。
        Stash 簡單理解就是備份本地修改且可以備份多次。什么?又沖突了?用Stash??!
        演示-使用commit來規避文件修改被沖掉
        我們假設有兩個人正在操作同一份文件 README.md 。
        A君 : 我已經提交此文件的修改了,你更新下。
        B君 : 我先Fetch看看有,然后我上傳。嗯?沖突了。我并不知道你修改了什么個文件我也不想在同步的時候把本地的修改沖掉。 那我提前 commit 這些個文件吧。
        這個Push Change不用勾選,反正勾選也上傳不了但是不影響commit。
        現在pull也可以合并本地文件
        commit 簡單理解就是保存本次修改且可以被追溯。什么你只會Stash?直接commit也行??!
        如何強推?
        理解了上面的之后。發現 用Stash 或者Commit都可以實現強推。
        現在commit肯定不行 因為被修改過了,sourcetree的機制是 點擊按鈕 默認commit,然后push
        必然是失敗的,點擊OK現在本地branch已經有了此次commit痕跡了(可追溯)
        現在點擊pull/或者Apply Stash 處理好,上傳吧。
        出了莫名其妙的問題如何補救?
        有些朋友一看到一堆報錯和本地紊亂的修改就慌了。別怕 可以直接回到存檔(commit)點去復活。
        直接回到某個commit的狀態


        最后的最后,感興趣可以follow我的個人站:https://vrast.cn



        回復

        使用道具 舉報

        您需要登錄后才可以回帖 登錄 | 注冊帳號

        本版積分規則

        關注游戲蠻牛公眾號送vip
        欧美野性肉体狂欢大派对