git版本管理

起因

最近做项目的时候,代码量很多,而且经常要对代码进行修改,更纠结的是因为考虑到之前的代码可能还会有用,所以必须保存原先的代码,这样一个代码目录里就有好多版本不一样的代码,弄得很乱,到最后都不知道哪个代码对应哪个功能。
之前想过解决的办法,就是利用linux的符号连接,然后再代码目录里写出必要的README文件,但是当要运行之前的版本的时候,就必须一各个更改对应的符号文件,而且如果README记载的不是很详细,就不知道之前的版本到底应该对应哪个文件。所以这个时候就迫切需要版本管理的工具了。

git

以前听说过git版本管理,但是以前以为都是在github上做,但是后来偶然看到廖雪峰的博客关于git的教程,才知道原来git是可以做本地的版本控制的,而且功能很是强大。
关于git的使用这里就不再重复介绍了,廖雪峰的博客里都有详细介绍,这里主要说一下git在实际应用中可能遇到的问题。

怎么在git目录外部访问不同版本的文件

经常我们会遇到这样一个问题,我们只是把代码放在git中进行不同版本的管理,而我们经常在目录外部调用这些代码文件,那么该怎么实现版本1的外部程序使用的对应是版本1的代码呢,版本2使用的是版本2的代码。
很简单,当我们需要用到版本1的代码时,我们进入git管理的目录,输入如下命令:

git checkout branch_version1

然后git目录展示的就是对应version1的代码。
当我们需要版本2的代码时,我们同样进入git管理的代码目录,输入:

git checkout branch_version2

这样就可以解决问题了。

Bug修复

我们可能会遇到这样一种情况,就是我们可能正在编辑某个版本version1,但是由于临时要更改version2存在的bug,但是这个时候version1没法立即提交,因为还没有完成,这个时候切换到version2中新建bug分支,那么在version1中还没有提交的文件也会出现在你version2中,这个时候我们要到version1中使用

git stash

version1未提交的文件暂时放到别处,这个时候再去version2中新建bug分支,解决bug。
解决完bug之后,我们要重新编辑version1,这个就切换到version1里面使用

git stash pop

把先前为提交的文件返回来重新编辑。

删除大文件

有些时候我们会误提交一些大文件,同时又没有在.gitignore里面限制忽略这些大文件,所以即使我们在某一个支路里删除对应的大文件,在.git/objects/目录下的对应的历史纪录的大文件也不会被删除掉,这里我们就需要彻底删除历史纪录里的大文件

# find big file
git verify-pack -v .git/objects/*.idx | sort -k 3 -n | tail -3
git rev-list --objects --all | grep ****

# delete the file
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch /path/to/big-file' --prune-empty --tag-name-filter cat -- --all

rm -rd .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=new

# check space
du ./ -d 1 -h

重要的是下次创建git的时候,记得在一开始就创建.gitignore文件,这样省得在以后做这样的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值