Git
git是一个用于帮助用户实现版本控制的软件
第一阶段:在美国进修的日子
1.命令:
git init
git status 查看当前文件夹的状态 全部红色
git add+文件名 对指定文件进行版本控制 当前文件名变绿色
git add . 对指定文件夹下的所有文件及子目录进行版本控制 所有变绿
git commit -m ‘详细的描述信息‘ 创建提交记录
git log 查看所有提交记录 当前版本之前上一个版本的信息,之后的就没有
git reflog 提交版本的信息更详细一点
git reset --hard 提交记录(版本号)
第二阶段:在开发游戏杀SX的功能,开发的过程中临时需要修复已上线项目的bug问题或者新功能到来时
方式一:
git stash 全部暂存到神奇的地方(拿走)
git stash pop 从神奇的地方取回来再进行开发新的功能
git stash 只保存那些红色的文件,表示那些没有被add commit那些文件
注意:当拿走这些文件的时候,又在本地修改再加新东西的时候,在pop回来默认它要合并,这时候要产生冲突,解决冲突手动解决就行了。
git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash list 查看“某个地方”存储的所有记录
git stash clear 清空“某个地方”
git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop 编号,删除指定编号的记录
方式二:
git branch -m+分支 创建并切换到指定分支
git branch 查看有那些分支
git branch dev 创建dev分支,表示在当前分支copy一份代码到dev分支
git branch bug 创建bug分支
git branch -d bug 删除bug分支
git checkout dev 当前分支切换到dev分支
想合并的时候,首先要切换(跳)到自己想合并的分支比如说跳到master分支
git merge dev 把dev分支合并到master了 将指定分支合并到当前分支
如果两个分支同时修改同一行代码,这时候可能会发生冲突,手动解决。
如果代码出现问题?
1.新创建一个bug分支,然后进行bug处理,处理完毕之后,合并到master分支。
2.删除bug分支
3.回到之前分支继续开发
第三阶段:在家开发写了一段代码存在.git文件下也就是本地,我自己开的公司在香格里拉酒店租了一层楼。第二天去上班,又不想带家里边的电脑。
需要一个代码托管的网站:github/Bitbucket/码云
自己搭建创建代码托管的网站:gitlab
在家操作:
1.在github上建立仓库:仓库名最好要和本地项目名称一样
2.git remote add origin https://github.com/......./...git (origin代表的就是建立github仓库名的地址)
3.git push origin master 把本地master分支推到别名叫origin地址上 (看.git下叫config文件有对应关系)
1)在仓库上只有master分支
2)在家有两分支git branch dev和master
3)我在家是在dev分支上开发的,所以我也要把dev分支也要推到github仓库上去
4)在家在这里最好切换到dev分支上再推,git checkout dev git push origin dev 这时候在github仓库上就有两分支了master和dev
在公司香格里拉大酒店操作:
1.克隆git clone https://github.com/......./...git
2.在这里要进入文件夹 cd 进去
3.在香格里拉本地再创建一个dev分支 git branch dev
4.再切换到dev分支, git checkout dev 在这里copy的是master分支的代码
5.git pull origin dev 拉github仓库的dev分支的代码
如果在公司没提交代码到github仓库上?1.py
到了家之后?git pull origin dev 发现没有1.py,在家继续开发2.py功能git push origin dev
第二天到了公司?git pull origin dev---->要出现Merge合并记录
在公司继续开发,添加3.py, git push origin dev
回家拉代码 git fetch origin dev 但是1.py 3.py 没拉下来,还没在本地这时候在版本库
git merge origin/dev 这时候本地就有1.py 2.py 3.py文件
如果不想分叉:使用git fetch origin dev + git rebase origin/dev
git rebase的作用?
如果在公司写的代码忘记提交了,回家继续开发新的功能,第二天到公司用git pull 或者 git fetch+git merge可能会出现分叉,如果想保持提交记录的整洁,就用git fetch + git rebase 最终的作用就是保持提交记录的整洁。
第四阶段:多人协同开发
1.允许他人操作代码
a.合作者模式
b.创建组织模式
2.分支
-master
-dev
-开发者1的分支
-开发者2的分支
3.规则
一起合并
合并间隔时间 1-2天合并一次
遇到的问题:别人在之前提交过,我再去提交要报错,在这个时候就要先把别人提交的代码拉下来,可能产生冲突。发生冲突自己修改,修改完再push提交上去
4.做codereview 从新看下代码
a.组长
b.组长之下稍微可以的人
创建review分支:符合业务组长去审查,如果逻辑没问题,用工具检测只是跑性能,语法有没有问题,pep8遵从
第五阶段:给别人代码贡献力量
先Fork
再pull request
其它:
a.不用反复输入用户名密码登录
https:
git remote add origin https://用户名:密码@github.com/......./...git
ssh:
[email protected]:*****/*****.git
生成一对公钥私钥:
ssh-key命令:下有两个ssh-keygen.exe ssh-keyscan.exe文件
再执行ssh-keygen.exe 记住保存的位置一直回车下去
找到公钥放在github settings中即可
b.忽略文件
vim .gitignore 中可以写忽略的文件,比如:*.sql,*.pyc
忽略文件也要提交到仓库中,方便其它人拉取下来再做提交操作
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
各种忽略https://github.com/github/gitignore/blob/master/Python.gitignore
c.版本
git tag -a v1.0 -m ‘版本介绍‘ 本地创建Tag
git show v1.0 查看
git tags -n 查看本地Tag
git tag -l ‘v1.4.2.*‘ 查看本地Tag,模糊匹配
git tag -d v1.0 删除Tag
git push origin :refs/tags/v0.2 更新远程tag
git checkout v.1.1 切换tag
git fetch origin tag V1.2
git push origin --tags
git pull origin --tags
git clone -b v1.0 [email protected]:*****/*****.git
原文地址:https://www.cnblogs.com/Alexephor/p/11311331.html