0%
git
介绍与安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 0 git,github,gitee,gitlab -git:版本管理软件 -github:网站,全球开源代码,放在上面,我们可以看到,并下载--》本质是一个git的远程仓库 -gitee:中国版的github,公有,私有(中小型公司的代码放在私有仓库中) -gitlab:公司内部的(公司内部的github) 1 git:软件,实现 版本控制:协同开发(多人合作开发),合并代码
2 下载:https://git-scm.com/download/win 一路下一步
3 装完后,任意位置,鼠标右键,多出 git gui here:图形化界面 git bash here:命令行 4 git和svn -git的版本管理不需要服务端(远程仓库) -svn要进行版本管理,必须有服务端
|
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 1 工作区 2 暂存区 3 版本库
git init git add . git status git reset . git commit -m '注释' git config --global user.email "306334678@qq.com" git config --global user.name "liuqingzheng" git config user.email "33@qq.com" git config user.name "egon" git log git reflog git reset --hard 74c071f922
|
git过滤文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 在仓库目录下新建.gitignore 文件,在文件中写入要忽略的文件,文件夹,模糊匹配
''' 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤 /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
eg: a.txt:项目中所有a.txt文件和文件夹都会被过滤 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
eg: .idea scripts *.pyc __pycache__ '''
pycharm软件 -绿色:在暂存区,没有提交到版本库 -红色:在工作区新增,没有提交到暂存区 -蓝色:在工作区修改的,没有提交到暂存区 -黄色:忽略的 -白色:已经被git管理的
|
git分支操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| git branch 分支名 git checkout -b 分支名
git checkout dev
git branch
git branch -d 分支名
git merge 分支名
|
git远程仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 1 在远程仓库中新建空仓库
2 git init git add . git commit -m '注释' git remote add 名字 远程仓库地址 git push 远程仓库名字 分支名字 3 远程仓库操作 增加 git remote add 名字 远程仓库地址 查看 git remote 删除 git remote remove origin 提交到远程仓库 git push origin master
|
采用ssh协议连接远程仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 1 https方式:用户名+密码认证方式
2 ssh方式:公钥私钥方式 本地生成公钥私钥 ssh-keygen -t rsa -C "1965617308@qq.com" 生成的公钥私钥在用户家路径的.ssh文件夹下 id_rsa id_rsa.pub 把'公钥'配置到远程仓库上 以后再提交代码就不用输入用户名密码 ps:重新配置远程仓库 git remote add origin git@gitee.com:chi-jintao/luffy_api.git git push origin master
|
项目创始者与项目开发者
1 2 3 4 5 6
| 需要把代码clone到本地
1 git clone https://gitee.com/liuqingzheng/luffy_api.git 2 修改代码 3 提交到远程 4 git push origin master
|
协同开发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 1 管理员、开发者(10开发者以上需要充值~) 能提交代码(增删改查) 2 有一个开发者提交了代码
3 另一个开发者,在提交之前,必须先拉取代码(让本地保持最新) (有事没事pull一下)
4 冲突解决(多人在同一个分支开发,导致冲突)
""" <<<<<<< HEAD # 冲突的开始 # 自己的代码 ======= # 分割线 # 别人的代码 >>>>>>> b63c408abd05b87fc492d40523240561999dba50 # 冲突的结束(版本) """
1 该同样的功能出现的冲突,保留好代码,删掉其中一个即可 2 改不同功能出现冲突,两者都留
|
线上分支合并
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 1 本地和远端分支 本地建立分支,同步到远端 git branch dev git push origin dev 远端建立分支,同步到本地 远端建立分支 git pull origin dev git branch git checkout dev 2 提一个pr:pull request(分支合并的请求)
3 审核通过、测试通过后,合并分支/扁平化合并 git 变基(git rebase) ---> 扁平化合并(不保留分支的各个提交的小版本)(结果好看,但有冲突比较麻烦) 合并分支 合并分支(保留分支的各个提交的小版本)(结果乱,有冲突比较好解决) 4 远端:dev分支代码和master分支代码完全一致
|
本地分支合并推送到远程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 1 由于dev分支和master分支合并时,有冲突,就不能自动合并了,我们需要本地合并完,解决冲突,再提交
2 把dev合并到master git checkout master git merge dev 有冲突,解决冲突 再提交 3 本地的分支提交到远端分支(如果名字不一样) git push origin dev111:dev222 ps: 1 git操作出没出冲突,如何解决 -第一:多人在同一分支开发 -第二:分支合并出冲突 2 git 变基 3 git fetch 和 git pull的区别 4 git add . 与git add xxx
|