-------------------------------------------------------概念
git 分布式,存储了历史版本和最新版本,极致压缩
svn只存储每个版本和上一个版本的差异
git存的是所有版本索引
工作区
↓
git add
↓
暂存区
↓
git commit
↓
本地仓库
-------------------------------------------------命令行管理git
(1)查看git版本【git --version】
(2)清屏幕【clear】
(3)设置签名:
设置用户名【git config --global user.name “zhaoss”】
设置邮箱【git config --global user.email “[email protected]”】
(4)本地仓库的【初始化】操作
【cd d:/】
【cd GitResp】
【git init】
或者进入目录,右键git bash here
查看当前目录列表【ll -la】
.git目录是隐藏的,可以调出来查看
(5)
将文件提交到暂存区:
【git add demo.txt】
将暂存区的文件提交到本地库
【git commit -m “刚刚改了,优化了下,这是一个注释” “demo.txt”】
查看工作区和暂存区的状态
【git status】
历史记录----------------------
c009d9e337c82f0ff34a5be25cf7d32dcb0d51db是当前历史记录对应的唯一索引号
a.由近到远【git log】【空格】下一页,【B】前一页,【q】退出
b. 一行内展示【git log --pretty=oneline】
c. 【git log --oneline】
d. 显示head@{数字},指针回到当前历史版本,需要走多少步【git reflog】
reset回退-------前进或者后退历史对应版本---------------------------------------------------
–hard 参数是工作区和暂存区全部更改重置了【用的多】
–mixed 参数是暂存区动,工作区不动【不常用】
–soft 参数是本地库移动的时候,暂存区和工作区都不动
回到对应的指针【git reset --hard 67c8975】,67c8975就是reflog前面的7位数字索引
恢复暂存区数据,也用–hard 参数是
回到当前的head暂存内容【git reset --hard head】
比对工作区和暂存区是否一致:所有差异【git diff】单个差异【git diff demo.txt】
比对暂存区和本地库是否一致:当前版本【git diff HEAD demo.txt】跟对应的索引去比【git diff b0d51db demo.txt】
-----------------------新的独立功能,就开个新分支-----------------------------------------------
branch01和branch02不影响
branch01将master复制,然后再开发出多个版
branch02将master复制,然后再开发出多个版
分支的好处:同时多个分支互不影响,删除都行,提高开发效率
查看分支【git branch -v】*表示你在哪个分支上
创建分支【git branch branch01】
切换到分支01【git checkout branch01】
解决冲突问题------------------
合并分支1【git merge branch01】
如果遇见冲突conflict,就解决:
人为决定留下想要的即可,然后重新:add 和 commit
【git commit -m “解决了冲突问题”】commit的时候不带文件名,且不是合并状态
-----------------------------github---------------------------------------------------------------------------------------
远程库地址很长,每次复制比较麻烦 https://gitee.com/yudeze/goapp.git
在git本地将地址保存,通过别名
查看别名【git remote -v】
取别名叫做origin,可以随便取【git remote add origin https://gitee.com/yudeze/goapp.git】
推送,本地内容推送到云端【git put origin master】,弹出账户密码需要输入
克隆,把外网的内容下拉到本地【git clone https://gitee.com/yudeze/goapp.git】
克隆操可以完成3件事:
1.初始化本地库
2.将远程库的内容完整克隆到本地
3.替我们创建远程库的别名
更新本地库信息,【push内容到远程库】中去
发现可以直接push进去,并没有输入账户密码,原因是git使用的时候有缓存,管理你的凭据可删除缓存
必须加入团队,登录项目经理账户,邀请普通成员
1.拉取操作pull操作,相当于fetch+merge,项目经理先确认远程库的内容是否更新了,然后进行拉取
只是下载fetch到本地,工作区还是不变的【git fetch origin master】
切换到远程分支查看内容是覅正确【git checkout origin/master】
切换回来自己的分支
确认操作都正确,进行合并【git merge origin/master】
代码简单,可以一键操作直接拉取,相当于fetch+merge【git pull origin/master】
团队冲突怎么解决?------------------------------------------------------------------------------------
更改了同一行,推送失败,说明冲突了
先拉取下来,然后人为修改冲突,再推送到服务器,解决冲突后,add-commit后向服务器推送
如果不是window10凭据帮你保存了,需要用ssh免密码登录-,不然每次都要输入账户密码-------------------------
1.进入用户的主目录中【cd ~】
2.执行命令,生成一个.ssh的目录【ssh-keygen -t rsa -C [email protected]】
【git pull origin master --allow-unrelated-histories】
【git push -u origin master -f】
避免在一个文件中改代码,在修改文件之前,先pull操作拉取就行