回覆列表
  • 1 # 使用者9685167322496

    如果有多人協作和遠端bare repo,那麼這種事最好不要乾了。

    一定要刪歷史記錄的話,filter-branch也行,不過我也只有笨的辦法:git status羅列下已刪除的檔案列表,全部填到 filter-branch 命令列的 rm 部分裡面就是。期待有人答一份。當然聰明的辦法的思路是有的:藉助bash程式設計把已刪除檔名自動羅列到命令列裡。不過暫時沒條件就答不出了。

    附:

    方法可以是這樣:

    初步確認。不過備份好點。

    再補充下:

    filter-branch裡面使用 git rm --ignore-unmatch 可以避免過多警告。

    --prune-empty可以在一個提交的所有檔案都被清空之後摘除這個提交。

    同樣的,git rm a b c d/e/f/g 可以刪掉這些不同位置的檔案,git rm -rf a b c d可以檔案、資料夾都刪掉。

    所以無論你的問題是什麼,只有一件事要做,提供一個檔名列表出來,送給git filter-branch ..."git rm ..." 語句去做。

  • 2 # 使用者1465424935672

    1.檢視Git日誌:

    命令:git log 預設不加引數,git日誌會按照最新的日期從上往下顯示 引數:-p 顯示版本間的程式碼差異

    -數字 顯示部分的提交

    -雜湊值 顯示指定的版本

    2.指定查詢範圍:

    --since="5 hours" 顯示最近5小時內的提交 --since="5 hours" -1 顯示5小時內的最後一個提交 --before 用法和--since的用法差不多,顯示的是在某個時間點之前的提交 版本1..版本2 說明:版本1之後到版本2的所有提交,版本2可以用 HEAD(要注意大寫)表示當前的最新版本 版本^ 回溯一個版本 注意: 在windows下要加雙引號"版本^" ~N: 回溯N個版本

    3.檢視指定版本之間的差異

    git diff 版本號 說明:當前目錄樹和對應版本號的差異 git diff --stat 說明:統計對應改動的程式碼量

    4.撤銷修改

    4.1增補修改(只能用於針對最後一個提交)

    git commit -C HEAD -a --amend

    4.2反轉提交

    建立一個新的反向的提交來抵消原來的提交

    git revert -n HEAD 反轉當前版本庫最新的提交併且快取起來。但是不提交

    4.3復位

    5重新改寫歷史記錄

    什麼時候需要改寫歷史記錄?

    給歷史記錄重新排序

    多個提交合併成一個提交

    一個提交分解成多個提交

    git rebase -i HEAD~3

    本質上利用的是變基操作,定位到你想變化的範圍之前。然後進入編輯器去修改你想修改的部分。完成之後再回到當前的末梢。

  • 中秋節和大豐收的關聯?
  • 四字生日祝福語?