git的使用总结
参考廖雪峰的git教程https://www.liaoxuefeng.com/wiki/896043488029600
整体的具体使用只需要跟着这个教程进行就可以了,下面就是记录一些注意事项
开始使用git
关于git clone
最开始认识到github就是从git clone开始的,就是拷贝下别人的开源代码,需要注意的是,这个拷贝方法是有多种协议的,最常用的还是SSH和https,SSH协议相对来说传输速度更快,需要注意的是
-
使用SSH的时候需要生成本地公钥,然后向github或者gittee添加本地公钥才能完成clone,同样这个公钥的添加也是接下来push推送代码所必须的
-
SSH的时候一般不加sudo,否则会出现类似错误
-
关于前面说的如何生成公钥,和上传公钥,都可以从廖雪峰教程中找到
开始git管理自己项目
首先创建仓库,有两种方法
- 在github网页上创建一个仓库,之后把它给克隆下来,接下来就可以本地进行和项目的管理了
- 在本地创建一个项目文件夹,网页上也创建一个同名仓库,最后进入该目录中进行远程关联(前提是已经完成公钥的生成并上传)
git remote add origin git@github.com:michaelliao/learngit.git
合理运用分支
合理的运用分支可以让项目的开发思路更清晰
- 在项目中最好是以master分支为最终版本
- 添加新的功能或者修复BUG最好是新建一个分支,开发完成后进行和master分支合并,最好使用禁止快速向前合并的方法,这样可以记录合并历史
- 在每一次master分支更新新的版本的时候,要注意打上标签,这样方便今后的回顾
忽略特殊文件
一般情况下,我们git管理的项目是避免不了编译的,编译就会更改一些文件,这些中间文件是我们不希望上传的,还有等等一些希望忽略的文件也是不希望上传的,但是在git status时就会显示仍然有修改,这时候就需要 .gitignore文件
如何使用直接参考教程https://www.liaoxuefeng.com/wiki/896043488029600/900004590234208
github与gitee
这两个其实操作是差不多的
- 注意这两个的地址是不一样的,前者是github后者是gitee,克隆和关联的时候要注意
- 或许github的速度没有gitee速度快,毕竟后者是国内源
- github免费版是所有人都是可见的,相当于自己的代码 是完全开源的,私密就需要交钱了,gitee如果是个人或者五人及以下团队使用的话,可以免费创建私密仓库
使用过程中的细节总结
- 当正在某一分支上进行工作,但是还没有完成时,这时候因为没有完成工作还不想commit,是不能切换分支的,如果硬要切换,必须先把当前工作保存压栈,git stash
- 使用SSH协议进行clone时,不要使用sudo
- 最好github和gitee远程库名称不要origin,否则在关联或者提交中会出现远程库同名的冲突,解决同名冲突,参考https://www.liaoxuefeng.com/wiki/896043488029600/1163625339727712
合并分支,解决冲突
- 问题一:出现拒绝合并无关的历史的错误
在合并指令后边加入忽略关键字
git merge --no-ff -m "merge with no-ff" dev --allow-unrelated-histories
这样可以强制合并,并且这样可以保存分支历史信息
- 问题二:解决合并冲突
一般情况下分支合并避免不了出现冲突的出现,手动修改效率底,使用工具
先进行工具的安装
apt-get install kdiff3
git mergetool
弹出图像界面,直接在图形界面进行操作更高效,并且有一件修改的功能
最后
$ git add .
$ git commit -m "conflict fixed"
在命令行查看合并图形界面
git log --graph --pretty=oneline --abbrev-commit
- 撤销合并
最好在合并前把本地仓库全部上传,如果执行这个回退,会丢失掉更改
方法一
git checkout 【行merge操作时所在的分支】
git reset --hard 【merge前的版本号】
方法二
git checkout 【行merge操作时所在的分支】
git merge --abort
删除本地分支后再删除远程分支的方法
git push origin :branchname(一定要加:)
git clone 出现访问出错,显示无权限或找不到(链接不到)仓库
fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
密钥已经上传,但是还是会出现该错误
原因:很可能是对该代理进行了限制,特别是在gitlab上,会出现这种问题
公司是通过代理来上网的
这样的话,即便使用git都要通过代理,而git的ssl证书又没有经过第三方证书验证,因此代理不认可,直接失败.
这个时候就需要把git验证ssl证书的功能去掉
解决方法:
git config --global http.sslverify false
已经add 但是需要移除一些不想要的文件夹
- git rm -r --cached的使用,-r是强制删除
删除暂存区文件,但保留工作区的文件,并且将这次删除放入暂存区。直接commit就可以
https://blog.csdn.net/qq_42780289/article/details/98353792
git rm -r --cached .history/
git仓库中存在另一个仓库,push提示中断
错误:
You’ve added another git repository inside your current repository.
# cd 到你的第二个仓库目录中,一般也就是你报错的当前
rm -rf .git && git rm --cache . -f
使用子模块
更新子模块, --progress 显示下载进度
git submodule update --init --recursive --progress