git代码怎么分开?git代码怎么拉取?

阳光 2021-12-03 18:16:56 java常见问答 8022

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

git代码怎么分开?git代码怎么拉取?.jpg

第二步:查看本地分支和远程分支

1、cd PrettyGirls 到工程目录下;

2、git branch -al 查看本地和远程的所有分支。

1.jpg

这里成功看到了所有的分支:其中master是本地分支,前面的星号*表示正在使用的分支

前面带有remotes的分支都是远程分支。

第三步、将远程分支与本地分支进行关联

1、git pull origin master

(如果你想拉到本地的dev分支上,首先git checkout -b dev,然后使用git pull origin dev,这样就将本地dev分支与远程origin/dev相绑定了)

2.jpg

这个命令是将本地分支与远程分支进行关联,并且将远程分支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分支上了。

3.jpg

这里我创建了新的文件abc.txt,然后add,commit 添加备注 “abc”。

然后我使用git push 命令将其发送到远程master上

现在查看下我现在的分支

4.jpg

注意:这里如果没有master绑定到远程的分支,就必须使用git push origin master :master

git push <远程主机名> <本地分支名>:<远程分支名>

第五步、看下远程代码

5.jpg

可以看到已经存在abc.txt了

Git能够根据不同的开发目的,创建分支,修改代码以及拉取代码,作为程序员一定要学会使用git相关操作!最后大家如果想要了解更多其他工具教程知识,敬请关注奇Q工具网。

推荐阅读:

java技术的架构主要包含几方面?Java框架有哪些?

json如何进行解析?json解析的几种方式

jvm调优工具哪个最好用?调优的目的是什么?