溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

git單獨針對一個倉庫實現(xiàn)子目錄提交修改

發(fā)布時間:2020-08-07 14:00:21 來源:網(wǎng)絡(luò) 閱讀:6626 作者:shouhou2581314 欄目:建站服務(wù)器

項目組有個需求:目前我們線上代碼都是git 倉庫托管的,開發(fā)和前端都需要對倉庫中的js目錄中的文件進行修改,為了避免沖突,想到了把倉庫中的子目錄分離開來,讓前端工程師可以提交到git 倉庫。以前是通過ftp進行更新,會有很多問題。更改了這種方式會提高工作效率

git和svn對比:

svn是基于文件方式的集中存儲,Git卻是基于元數(shù)據(jù)方式散布式存儲文件信息的,它會在每次Clone的時候?qū)⑺行畔⒍既』氐奖镜?,即相?dāng)于在你的機器上生成1個克隆版的版本庫,既然本地有了完全的版本庫,肯定就有所有權(quán)限了,所以也就沒辦法針對子目錄的進行權(quán)限控制了。

實現(xiàn):

git從1.7.0開始支持sparse clone,sparse clone也只是1個變通的方法:先拿到全部repository的object等元數(shù)據(jù)信息,然后在本地加1個叫.git/info/sparse-checkout的文件(即黑名單、白名單,支持正則,參見下文具體操作命令)來控制pull那些目錄和文件(類似.gitignore文件,都是本地的概念),變通的實現(xiàn)git只clone倉庫中指定子目錄和文件

步驟:

1.在本地創(chuàng)建一個目錄,用于提交代碼

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.設(shè)置需要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

參考文檔:http://www.wfuyu.com/technology/25144.html


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI