2021-05-12 14:32:11
Git單獨針對一個倉庫實現子目錄提交修改
專案組有個需求:目前我們線上程式碼都是git 倉庫托管的,開發和前端都需要對倉庫中的js目錄中的檔案進行修改,為了避免衝突,想到了把倉庫中的子目錄分離開來,讓前端工程師可以提交到git 倉庫。以前是通過ftp進行更新,會有很多問題。更改了這種方式會提高工作效率
git和svn對比:
svn是基於檔案方式的集中儲存,Git卻是基於後設資料方式散布式儲存檔案資訊的,它會在每次Clone的時候將所有資訊都取回到本地,即相當於在你的機器上生成1個克隆版的版本庫,既然本地有了完全的版本庫,肯定就有所有許可權了,所以也就沒辦法針對子目錄的進行許可權控制了。
實現:
git從1.7.0開始支援sparse clone,sparse clone也只是1個變通的方法:先拿到全部repository的object等後設資料資訊,然後在本地加1個叫.git/info/sparse-checkout的檔案(即黑名單、白名單,支援正則,參見下文具體操作命令)來控制pull那些目錄和檔案(類似.gitignore檔案,都是原生的概念),變通的實現git只clone倉庫中指定子目錄和檔案
步驟:
1.在本地建立一個目錄,用於提交程式碼
mkdir test
2.初始化倉庫
git init
3.拉取遠端倉庫的objects資訊
git remote add -f origin git@code.aliyun.com:test/test.git
4.開啟sparse clone
git config core.sparsecheckout tr
ue
5.設定需要pull的目錄 *表示所有
echo "develop" >>.git/info/sparse-checkout
echo "web/assets/*" >>.git/info/sparse-checkout
6.拉取遠端倉庫
git pull origin master
7.檢視
ll assets/
total 4
drwxr-xr-x 1 Administrator 197121 0 七月 10 10:51 css/
drwxr-xr-x 1 Administrator 197121 0 七月 10 10:51 img/
drwxr-xr-x 1 Administrator 197121 0 七月 10 10:51 js/
drwxr-xr-x 1 Administrator 197121 0 七月 10 10:51 lib/
8.本地測試提交
touch test.txt
echo "this is a test"
git add .
git commit -m "test"
git push origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 331 bytes | 0 bytes/s, done.
Total 4 (delta 2), reused 0 (delta 0)
To code.aliyun.com:test8/test.git
037b8ec..317b2a2 master -> master
更多Git 教學系列文章:
Git常用命令整理 http://www.linuxidc.com/Linux/2017-12/149316.htm
GitHub 使用教學圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git使用圖文詳細教學 http://www.linuxidc.com/Linux/2016-11/136781.htm
Git介紹及安裝設定 http://www.linuxidc.com/Linux/2017-12/149948.htm
分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm
Git從入門到學會 http://www.linuxidc.com/Linux/2016-10/135872.htm
Git基本操作詳解 http://www.linuxidc.com/Linux/2016-10/135691.htm
Git部署與常用基本命令詳解 http://www.linuxidc.com/Linux/2017-06/144961.htm
分散式版本控制系統 Git 詳細教學 http://www.linuxidc.com/Linux/2017-05/143747.htm
Git命令和設定技巧 http://www.linuxidc.com/Linux/2017-11/148423.htm
相關文章