笔记: git 检出部分文件夹;本地代码与服务端合并同步

一、git 检出部分文件夹

gitlab 项目下存在多个工程文件夹,由于工程目录比较大

只需要检出Android相关的代码,而不检出嵌入式、web的代码。

操作步骤如下:

$ git clone -n https://yun.rangotec.com:8001/test/code_my.git # -n选项的意思是不要检出: -n --no-checkout  ->   don't create a checkout
$ cd code_my
$ git config core.sparsecheckout true                         # 配置稀疏检出
$ echo android_project >> .git/info/sparse-checkout           # 配置仅检出 android_project 文件夹, 多层文件夹这样写: android_project/src
$ git checkout master                                              # 检出

这样本地就只有android_project 这一个文件夹了。

如果要检出多个文件夹,以此类推:

echo web/code >> .git/info/sparse-checkout
echo web/img >> .git/info/sparse-checkout

然后执行检出命令,checkout 项目至本地。

二、本地代码与服务端合并同步

本地创建仓库结构

git init 创建空白结构
git add ./* 添加
git commit -m "test co" 本地提交

添加远端信息

git remote add ttttt https://yun.rangotec.com:8001/aaa.git 添加远程, tttt通常起名为origin
git remote rm tttt   删除远程, 这里示例如何删除
git remote -v 查看

设置账号信息

git config --global user.name "lsw"
git config --global user.email "lsw@rangotec.com"

拉取代码

git pull ttttt master --allow-unrelated-histories # 允许不相干的代码,强行合并; 本地已有代码的情况下会出现。 通常做法是先从服务端拉取代码,然后再添加代码。

本地和服务端不相关, 但需要合并,  需要把服务端的拉下来; 如果服务端目录空,则此命令执行失败,找不到master, 这时候直接执行push即可。

//---------------- 本地合并代码(如有不同) ----------------------

.... 略 ...

推送本地代码到服务器

git push tttt master

这里没有用 -u 参数, 用了之后, 可以简写为 git push

关于换行符引起的无法提交的问题:

通常可以通过配置autocrlf 和 saftcrlf 两个参数来解决;如下

1、autocrlf

// 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true   

// 提交时转换为LF,检出时不转换
git config --global core.autocrlf input   

// 提交检出均不转换
git config --global core.autocrlf false

2. safecrlf

// 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true   

// 允许提交包含混合换行符的文件
git config --global core.safecrlf false   

// 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
通常配置为:
git config --global core.autocrlf false
git config --global core.safecrlf true 
评论列表: