回答
如果我添加1個文件中,只有1個文件是在犯,又名我們增加了一些新的東西,它現在是一成不變的
有便捷的方式可以添加單個文件承諾主分公司的祕訣在裸回購。
所以看來我需要創建一個blob對象,將它附加到樹上,然後將該樹對象附加到提交。
所有提交任何事情的方法歸結爲做到這一點,這只是一個問題,說明便利命令如何適合您的目的。 git add
創建一個blob並在索引中爲它創建一個條目; git commit
做了一個git write-tree
,它爲索引中的內容添加了所有新樹,並添加了頂層生成樹的提交,並且git update-ref
保持HEAD
爲最新。裸回購確實有一個HEAD
提交,通常附加到(也稱爲符號引用)像master
這樣的分支。 。 。
因此,git的便捷命令已經在做你想要的東西了。特別是只有一個文件,這將是非常簡單的。
說,例如,您的文件出現在~server/data/logs/
,您使用的是分佈在裸露的回購協議是在~server/repo.git
,你想提交的文件將在回購data/logs
,而你總是要提交的最新日誌文件:
#!/bin/sh
cd ~server
# supply locations git ordinarily does on its own in working i.e. non-bare repos:
export GIT_DIR=$PWD/repo.git # bare repos don't have defaults for these
export GIT_WORK_TREE=$PWD # so supply some to suit our purpose
export GIT_INDEX_FILE=$GIT_DIR/scratch-index # ...
# payload: commit (only) the latest file in data/logs:
git read-tree --empty # make the index all pretty, and
git add data/logs/`ls -1t data/logs|sed q` # everything's ordinary from here - add and
git commit -m'new logfile' # commit
git read-tree
從承諾樹中加載索引條目。這是結帳和合並和重置的基礎,可能還有一些我忘記atm。在這裏,我們只需要一個空索引,因此--empty
。
使用推/拉/遠程數據而使用每臺機器上已經可用的工具同步
你說隨着時間的推移文件的「百萬」,如果你不希望完整的歷史分發,rsync
因爲我收集你已經懷疑可能是一個更好的選擇。但是 - 一次一個,每分鐘一個新文件,需要兩年才能累計一百萬。那麼,?
無論如何,上述過程可以高效地擴展到每次提交的任何小數目的文件。對於批量工作有更好的方法。
很酷。好的回答:) – Jubobs
- 1. 如何將工作目錄「附加」到裸GIT存儲庫
- 2. 推到裸Git存儲庫(遠程)導致它停止裸露
- 3. 從裸存儲庫推送到另一個裸存儲庫
- 4. 將所有遠程分支提取到裸Git存儲庫中
- 5. 沒有裸存儲庫的Git tfs
- 6. Git只推送裸露的存儲庫?
- 7. 鏡像git非裸存儲庫
- 8. 將.git/config添加到另一個Git存儲庫
- 9. Git裸和非裸存儲器
- 10. 將Git存儲庫添加到Perforce倉庫
- 11. 將東西添加到隱藏文件
- 12. 將東西添加到Twitch bot
- 13. iphone - 將東西添加到類方法
- 14. 無法將現有的Git存儲庫添加到新的存儲庫中
- 15. 從git-svn克隆的遠程存儲庫更新裸Git存儲庫
- 16. 添加東西到UIPopoverController
- 17. 在主目錄中存儲裸Git存儲庫的公約?
- 18. 如何將git 1存儲庫升級到git 2存儲庫?
- 19. 將Git工作目錄轉換爲裸露的存儲庫?
- 20. git添加到裸露的回購
- 21. 如何將文件添加到git存儲庫?
- 22. 將本地GIT存儲庫添加到Gogs Docker容器
- 23. 如何將預推git鉤子添加到現有存儲庫?
- 24. 將一個名爲「 - 」的文件添加到git存儲庫中
- 25. Android Studio將當前項目添加到git存儲庫
- 26. Qt:將qml.qrc添加到git存儲庫或.gitignore?
- 27. 如何以編程方式將塊添加到Git存儲庫?
- 28. 如何將SVN遠程添加到Git存儲庫?
- 29. 將git子模塊添加到存儲庫的根目錄中?
- 30. Netbeans Git無法將文件添加到存儲庫
您可以在不使用工作樹的情況下通過使用低級別git命令來構建提交,這是一種非常光榮的方式來完成事情,但很少改進便利命令;你可以在不克隆的情況下做到這一點 - 甚至有很多選擇 - 但是選擇一種合理的方式去實現這一點取決於你想要構建的歷史與已經存在的歷史之間的關係。那麼,您發現自己在什麼情況下會提出這個問題? – jthill
所說的git倉庫的內容是小文件,有一天可能會以百萬計。雖然我知道隨着事情變得越來越大,會出現性能成本,但在服務器上運行的極端情況下擁有數百萬小文件和文件夾的擔憂並不會很好。使用裸倉庫減輕了一些問題,同時調查了替代品 –
因此,單次提交可能包含數百萬個文件,您經常或通常不希望所有文件都立即檢出,是的?好的,這非常有幫助。下一個問題:你試圖通過無克隆要求來避免的怪物結賬,或者是什麼?要更新回購協議,您必須位於同一個文件系統上或推送到該文件系統,剩下的唯一問題就是在何處執行該工作以及提交結構的詳細信息。 – jthill