Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。在实际工作中,我们会使用git进行代码提交,那要想git代码分开要如何做?下面来我们就来给大家讲解一下。
从 master 上,使用 git subtree 将某个文件夹抽出来
cd big-repo git subtree split --prefix dir-to-extract -b selective-history
新建一个仓库,从上述分支中拉取代码
mkdir slim-repo cd slim-repo git init git pull ../big-repo selective-history:master
之后再提交代码就行了
cd big-repo git subtree split --prefix dir-to-extract -b selective-history git push git@github.com:cjohansen/my-new-slim-repo.git selective-history:master
这就完成了一个文件夹的抽取,就是这么简单。
但是如果想要抽取多个文件夹改怎么办呢?
这种情况就不能使用 git subtree 了,得使用 git filter-branch。
git clone git@github.com:cjohansen/some-fat-repo.git cd some-fat-repo git filter-branch \ --tree-filter 'find . ! \( -path "./terraform*" -o \ -path "./packer*" -o \ -path "./.git*" -o \ -path "." \) \ -exec rm -fr {} +' \ --prune-empty \ HEAD
这样可以遍历所有的commit,删掉我们不想要的文件。使用 --prune-empty 参数可以将空分支给删掉。
但是还是遇到了问题,执行了10分钟之后,报 find: './api-doc/xxxx': No such file or directory 的错。查了一下,加上 -prune 参数即可解决该问题。
git filter-branch \ --tree-filter 'find . ! \( -path "./terraform*" -o \ -path "./packer*" -o \ -path "./.git*" -o \ -path "." \) \ -prune -exec rm -fr {} +' \ --prune-empty \ HEAD
git代码怎么拉取?
第一步:拉取远程代码
git clone https://github.com/…/PrettyGirls.git
第二步:查看本地分支和远程分支
1、cd PrettyGirls 到工程目录下;
2、git branch -al 查看本地和远程的所有分支。
这里成功看到了所有的分支:其中master是本地分支,前面的星号*表示正在使用的分支
前面带有remotes的分支都是远程分支。
第三步、将远程分支与本地分支进行关联
1、git pull origin master
(如果你想拉到本地的dev分支上,首先git checkout -b dev,然后使用git pull origin dev,这样就将本地dev分支与远程origin/dev相绑定了)
这个命令是将本地分支与远程分支进行关联,并且将远程分支origin拉到本地分支master下
如果远程分支origin下还有子分支1.0.0.1,则使用git pull origin/1.0.0.1 master 这样就是将本地的master分支与远程的origin/1.0.0.1进行了绑定
2、git branch -vv
可以看到master后面蓝色部分origin/master,说明master分支已经与origin/master绑定在一起了。
3、已经关联好了的代码,直接输入git pull 就可以同步了
第四步、上传本地代码到远程分支上
1、git add ./abc.txt
加入你已经修改本地文件acb.txt这里是相对路径
2、git commit
使用git commit 就是将这个txt文件上传到本地分支上
3、git push
这个命令的结果就是将本地分支master中commit的数据abc.txt上传到了远程绑定的master分支上了。
这里我创建了新的文件abc.txt,然后add,commit 添加备注 “abc”。
然后我使用git push 命令将其发送到远程master上
现在查看下我现在的分支
注意:这里如果没有master绑定到远程的分支,就必须使用git push origin master :master
git push <远程主机名> <本地分支名>:<远程分支名>
第五步、看下远程代码
可以看到已经存在abc.txt了
Git能够根据不同的开发目的,创建分支,修改代码以及拉取代码,作为程序员一定要学会使用git相关操作!最后大家如果想要了解更多其他工具教程知识,敬请关注奇Q工具网。
推荐阅读: