簡體   English   中英

Git:將不同的文件推送到各種遙控器

[英]Git: push different files to various remotes

我正在使用 git 擴展。 我確實有各種分支機構,並且已經設置了各種遙控器。 存儲庫中有超過 10k 個文件。 現在我只需要將幾個特定文件從這些遙控器(bitbucket)推送到一個。 這些特定文件將定期推送。 最好的工作流程是什么?

Git 不推送文件 Git 推送提交 現在,提交確實包含文件。 但這是一筆 package 交易:將提交想象成裝滿家具的卡車。 您不能只提供一張茶幾或椅子。 整輛卡車在某處有 go。 (不要過分強調這個類比,否則它會分崩離析。)

要按名稱將給定的提交推送到某個遠程,請運行:

git push <remote-name> <commit-specifier>:<name>

您這邊的commit-specifier部分可以是分支名稱、標簽名稱、原始提交 hash 或其他任何內容。 remote-name可以是您的任何遠程名稱。 冒號右側的name部分是遠程中的名稱,任何使用其他 Git 存儲庫(在遠程上)的人都會找到您使用您身邊的commit-specifier發送的提交來選擇一個犯罪。

因為提交歷史,如果遠程沒有提交,發送提交將自動發送所有早期提交。 他們將得到每一個承諾,包括那個承諾。 如果遙控已經擁有它們——這很常見——它們就不需要這些提交。

Git 協議使兩個 Git 能夠相互交談並找出它們有哪些提交。 When the receiving Git says I have commit a123456 to the sending Git, that notifies the sending Git that the receiver not only has that commit, but all the commits leading up to and including that commit, because commits are history and we always 1 send all完整歷史所需的提交。

發送 Git 將看到接收 Git 不僅具有所有這些提交,而且還具有該提交的所有文件 因此,發送者可以通過完全忽略任何匹配的文件來壓縮他發送的任何提交,並將新文件壓縮為delta 編碼的指令,告訴接收者如何從他已經擁有的文件中構建這些文件。 這些壓縮指令非常適用於純文本文件。 對於預壓縮的二進制文件,例如 jpeg 圖像,它們往往效果不佳。


1此規則的例外是淺存儲庫,這會使事情變得復雜。 使用git clone --depth制作這些。 (Bitbucket 上的接收倉庫不會是淺層倉庫。)

暫無
暫無

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

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