如何向整個 Git 倉庫補提交乙個檔案

2021-08-08 06:26:06 字數 1236 閱讀 9817

但是!!!居然忘了在第一次提交之前放乙個 .gitignore 檔案!如果沒有這個檔案,那我們每次開啟原始碼檢視都會帶來一大堆不明所以的修改檔案。那麼多的原始碼,絕對不會想重新挨個版本再提交一次。於是找到了一條可以解決這個問題的 git 命令。

git filter-branch --index-filter "cp /c/倉庫外面某個路徑下的/.gitignore . && git add .gitignore"
執行之後,c:\倉庫外面某個路徑下的\.gitignore檔案就被新增到了當前分支的第一次提交裡面,並且檢視後面任何一次提交對應的全部檔案時,都會有這個檔案。

如果希望此操作對所有分支生效,則加乙個--all引數,即:

git filter-branch --index-filter "cp /c/倉庫外面某個路徑下的/.gitignore . && git add .gitignore" -- --all
寫這個命令時需要注意:

- git 在 bash 裡寫的時候,c:\需要寫成/c/

--- --all中的--是用來區分路徑和提交的,官方說法是:

fatal: ambiguous argument 'cp /c/倉庫外面某個路徑下的/.gitignore . && git add .g

itignore': unknown revision or path not in the working tree.

use '--' to separate paths from revisions, like this:

'git [...] -- [...]'

執行了此命令後,所有的提交其實都被重寫了,提交號已經改變。如果你從未推送到遠端過,那麼恭喜,你已經在神不知鬼不覺中新增了乙個 .gitignore 檔案,就像是第一次提交就加了這個檔案一樣。

但是,如果此前有推送到過遠端分支,請慎重!因為你的此次推送的命令和其他人首次拉取的命令將有所改變:

推送(所有分支,強制):

$ git push --all -f
拉取(獲取 + 重置)

$ git fetch

$ git reset origin/master --hard

參考資料

git 同時向兩個倉庫提交同乙個分支

目的 1 為了同時在兩個git倉庫中備份 以避免某個倉庫崩潰的情況!2.以git push origin master 同時備份兩個倉庫 以oschina 與 csdn為例 步驟 1.分別在兩個倉庫建立相應的專案 2.git remote add origin aaa 3.git remote ad...

從乙個git倉庫遷移到另外乙個git倉庫

我們平常可能會遇到git倉庫遷移的問題,現在把遷移方法備忘一下。1 先備份倉庫裸倉庫 git clone bare git bare 建立的轉殖版本庫都不包含工作區,直接就是版本庫的內容。2 在新的 倉庫上新建乙個倉庫。3 然後推送裸倉庫到新建的倉庫上 cd bak.git git push mir...

從乙個git倉庫遷移到另外乙個git倉庫

如果你想從別的 git 託管服務那裡複製乙份源 到新的 git 託管伺服器上的話,可以通過以下步驟來操作。從原位址轉殖乙份裸版本庫,比如原本託管於 github。設定網速 然後到新的 git 伺服器上建立乙個新專案,比如 gitcafe。以映象推送的方式上傳 到 gitcafe 伺服器上。刪除本地 ...