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 [email protected]: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

参考文档:http://www.wfuyu.com/technology/25144.html

时间: 2024-08-10 00:04:43

git单独针对一个仓库实现子目录提交修改的相关文章

windows下安装git并创建一个仓库,git常用命令

转载于:http://www.cnblogs.com/nemotan/p/4655498.html 一.windows安装git 1.下载:http://msysgit.github.io/,下载之后直接安装,打开gitbash 2.配置用户名和邮箱: $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]" 3.新建一个文件夹并执

Git 基础 - 克隆远程仓库到本地,修改后推送到远程

克隆现有的远程仓库到本地 [@wooluwakerdeMBP:gitLab]$ pwd /Users/walker/work/gitLab [@wooluwakerdeMBP:gitLab]$ git clone ssh://[email protected]******.git #将远程仓库克隆到本地,会新创建wenjian目录 [@wooluwakerdeMBP:wenjian (master)]$ git remote -v #查看远程信息 origin ssh://[email prot

2.GitHub之创建一个仓库

为了让你的工程放到GitHub,你需要一个仓库来保存它.现在就让我们创建一个吧! 在GitHub上,你可以存储各种项目库.个人知识库属于用户帐户,那么在你注册的GitHub上,你可以创建你的第一个库! 在GitHub上创建第一个仓库 在GitHub网站的任何页面的右上角点击"+" 按钮,点击"New repository" 新建一个仓库. 为你的仓库起一个短的,好记的仓库名字,例如"Hello World". 在下面的选项中,添加一个仓库描述,例

本地git仓库和远端关联,创建一个新的项目提交到远端

创建远端项目           这个不用说了,在github或者本地的gitlab上创建,拿到ssh或者Https地址 创建本地仓库           1.新建文件夹,在文件夹内打开终端           2.初始化本地的文件夹为一个git可以管理的仓库                git init Initialized empty Git repository in X:/javaCode/workspace_MyBatis/.git/ 把本地仓库和远端仓库关联 $ git remo

git 在仓库中添加提交文件

在  上个我们知道了git 构建一个仓库后,那我们需要往里面添加相关的文件啥的. 首先需要执行git status 红色表示还未在本地上户口 git  add 后就上了户口到本地去. 在执行git status  就可以看到  蓝色的上面的. 最后我们提交到本地 git commit -m "init  commit"

git创建仓库,并提交代码(第一次创建并提交)(转)

一直想学GIT,一直不曾学会.主要是GUI界面的很少,命令行大多记不住.今天尝试提交代码,按GIT上给的方法,没料到既然提交成功了. 于是把它记下来,方便以后学习. 代码是学习用的,没多大意义: 下图是github在创建仓库后给的提示:按它一步步操作下去就可以了. 下图是在git命令行下操作: 我不是linux高手,很多linux命令都不会.只会一些简单的操作: cd 在linux下是进入某一文件夹的操作.当你看到CD的时候,我是在找我的目录,即要上传代码的目录.所以一直找到W_IMsg这个目录

2017.6.30 使用git新建项目、仓库并拉取、提交代码

1.在码云上新建一个项目rms 2.在本地指定位置新建仓库,生成.git文件夹 3.同步远程仓库,并拉取最新代码 远程仓库默认名为orgin.可以修改,这里就是用默认名了. 注意:这里使用ssh方式的路径,而不是https,这样就不用一直输入密码了.因为之前配置了ssh公钥. 刚刚做的就是把本地仓库 /lyh/file/git_repostory/rms 对应成远程仓库. 注意:一个仓库有一个.git文件. 所以如果有另一个项目aas,要新建的层次是这样的: 然后rms和aas里再是: 这里要注

git仓库删除所有提交历史记录

stackoverflow原问题地址:http://stackoverflow.com/questions/13716658/how-to-delete-all-commit-history-in-github 原文:http://blog.csdn.net/yc1022/article/details/56487680 经过本人测试,如果对于大型仓库,还不如删掉远程仓库重新创建来得快,以下步骤仅仅是减少了重新创建仓库的步骤 git仓库删除所有提交历史记录,成为一个干净的新仓库 1.根据当前分支

Git的下载,安装,配置,代码仓库创建,提交 <转>

Git下载 链接:http://pan.baidu.com/s/1i5AYkYx 密码:odnh Git安装 Linux系统:打开shell界面输入:sudo apt-get install git-core Windows系统:下载后点双击安装,一直点击下一步即可完成安装 Git使用(使用命令行) Windows上安装的Git是可以在图形界面上操作的,图形界面上操作的不作介绍,这里只介绍通过命令行使用Git,命令行操作掌握了,图形界面就不成问题了 打开交互界面 Linux系统打开shell,W