git 学习笔记(一)

    xiaoxiao2025-01-30  6

    git clone 取到所需的文件,文件不在master分支上,有如下三种方法 1) git clone remote-repository git checkout -b branchA git clone会取下远程版本库的所有分支的代码,并在本地默认创建master分支,所以clone 下来后要切分支到文件对应的分支上去才可以看到所需的文件

    2) git clone -b branchA remote-repository -b参数会在克隆拉下所有分支代码后,本地代码切到branchA分支上。

    3) 如果想用git 仅拉下某一个单独的文件,而不要拉下自己不想要的文件,在git 1.7.0之前是不能实现的,这也是违背git 保持本地库与远程库一致性的原则。git版本控制方式是以快照的形式,既版本库整体状态的记录,而SVN是基于文件方式的集中存储。(没有用过SVN,一直在用git,对SVN的理解参考这篇文章http://blog.csdn.net/xuyaqun/article/details/49275477)在git 1.7.0之后,用 sparse clone的方式可以实现对某个文件的单独克隆。具体方法如下

    git init #初始化一个空库 git remote add -f origin remote-repository #添加远程仓库别名,并同时fetch代码到本地 git clone core.sparsecheckout true #开启sparse clone echo “dirname” >> .git/info/sparse-checkout #设置需要pull的目录,!表示匹配相反的。 git pull origin branchA #开始pull代码。 这样就可以只获取目标文件,不用拉下所有的文件。

    彻底删除git库中的大文件 有时候会不小心在代码库中加入了很大的文件比如2个G的包,占用很大的磁盘空间,想删掉。git rm ,git commit后在本地和代码库文件列表中看不到这个文件了,但是查看磁盘空间,所占用的空间仍然没有释放。由git 文件存储的方式可以推导出来,git 存储的是文件的快照,而不是以文件为基础,git 所有的增删修改都是以一种patch的形式打上去的,在文件目录中看不到这个文件,但是git库中这个大文件仍然是以patch形式存在的,不然版本回退到git rm前,这个文件怎么会又存在呢。如果要彻底在库中删除这个文件,既释放其所占的磁盘空间,要用git 的 filter-branch命令,,同时重写所有分支的历史,在历史中删掉才算彻底删除,这样一来,就算回退到之前的版本,这个大文件也是永远找不回来了。不过这是一个非常危险的命令,与git的初衷是相违背的,并且重写历史后,所有commit的id都会改变,且永远找不回来。在对这个命令不是熟练的情况下不要用,如果实在不行的话,重建一个库。参考博客http://www.tuicool.com/articles/vAVVZrA 寻找并删除Git记录中的大文件。

    转载请注明原文地址: https://ju.6miu.com/read-1295923.html
    最新回复(0)