首頁 > 軟體

Git單獨針對一個倉庫實現子目錄提交修改

2020-06-16 16:55:26

專案組有個需求:目前我們線上程式碼都是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


IT145.com E-mail:sddin#qq.com