个人git学习笔记(凌乱版):
Git本地仓库,Gitee,Github是远程托管仓库
Git本地仓库结构:
工作区
缓存区
本地区
创建用户:
git config --global user.name "**"
git config --global user.email "**"
git init
查看当前用户:
git config user.name
git config user.email
删除本地仓库:
可直接手动删除.git文件
工作区-->暂存区:git add 文件名
暂存区-->本地库:git commit -m "注释" 文件名
-m参数指的是指定一个参数,做一个注释
不放在git仓库下的文件是不能够管理,即使是手动放在git仓库的文件git也是
不管理的,必须通过add和commit命令才受git管理
git status 查看当前暂存区、工作区的状态
git log 查看修改历史记录
如果log记录太多,用空格向下查看,用b向前查看,q退出查看
更多简洁的展示方式:
git log
git log --pretty=oneline
git log --oneline
git reflog
前进后者后退到某个版本,即调整HEAD指针位置,依据key锁定
git reset --hard ******* [*代表id]
结果显示使用hard参数时,本地库改变时,暂存区和工作区都会重置
git reset --mixed *******
结果显示使用hard参数时,本地库改变时,暂存区重置工作区不动
git reset --soft *******
结果显示使用hard参数时,本地库改变时,暂存区和工作区都不会重置
【使用最多的是hard参数】
删除文件
rm demo2.txt 删除工作区的文件
将删除操作同步到暂存区
git add demo2.txt
将删除操作同步到本地区
git commit -m "删除demo2.txt" demo2.txt
比对工作区和暂存区的内容是否一致
git diff test3.txt 内容"啊啊啊",添加"aaa"后工作区与暂存区不一致,使用diff比对
git是按照行为单位来管理数据的,先删除 "啊啊啊" 再增加"啊啊啊aaa"
多个文件的比对
git diff 比对工作区与暂存区所有的文件差异
比对暂存区和比地区的文件差异
git diff ***或者当前指针HEAD test3.txt
[总结:因为本地区的文件都有id或者称为key所以暂存区与本地区比对时需要添加id]
---------------------------------------------------------------------------
分支:branch
适用版本控制过程中,使用多条线同时推进多个任务,这里的多条线指的就是分支
多个分支可以并行开发,互不耽误,如果一个分支开发失败,直接干掉就行,不会影响
其它分支
查看分支
git branch [* master *代表所在分支]
git branch -v
创建分支
git branch 新文件名
切换分支
git checkout 分支名
合并分支到主分支
先切换到主分支git checkout master
然后合并git merge 分支名
期间发生了冲突:因为在文件的同一行做了修改,如何解决冲突:认为决定在文件中删除操作即可
git commit -m "注释" [后面不要加任何文件名] 否则会出错
小试牛刀:
1.创建本地库
2.初始化
3.创建远程库
4.获取远程库地址(git对远程地址起别名)
5.git remote -v
git remote add 别名 https://github.com/....
(fetch可以取东西,push推送)
git push 别名/远程地址 push的分支
exceeds 超过
abundant足额的 超大的
克隆:
clone操作:
在某个盘符打开git bash,执行git clone 远程库地址即可
加入团队的push操作
如果在一台笔记本上执行push到其它团队的仓库,因为git有本地缓存,得先清理缓存
打开电脑,打开管理凭据删除缓存,然后push发现没有加入团队,让其他人邀请,在
github的仓库中打开settings设置manage access
拉取操作pull
相当于fetch+merge(谨慎起见)
操作:
1.git fetch 远程库地址 分支(读操作,相当于下载远程库的东西,但没有在自己的库中)
抓取后可查看远程库内容(git checkout 远程库/分支)
2.git merge 远程库/分支,合并之前应该切换到要合并到的分支
也可直接操作:git pull 远程库 分支
团队协同:
别人将修改的文件push后,你也修改了文件的情况下,双方不可知的,你自己再推送,
会发生冲突,这个时候解决冲突的方式是先pull下来,人为解决冲突,然后提交,再推送
远程库之间是fork操作,从远程到本地是clone操作
跨团队协作:
fork初创团队创建的库,clone到本地,你自己做了修改后,push到你自己fork的库,然后创建
一个pull request请求。初创团队审核request,审核完之后,由初创团队merge操作
SSH免密登录,不需要每次使用git push时验证:
1.cd ~进入到用户主目录
2.ssh-keygen -t rsa -C 个人用户邮箱
两步操作后会在用户目录创建.ssh目录,打开id_rad.pub复制里面的内容
然后进入到github,进入settings打开SSH and GPG keys添加ssh key
3.可以对远程地址起别名,git remote add 别名 远程库地址
查看别名 git remote -v
4.后续操作...
使用IDEA:
拉取:git pull 远程库 分支 --allow-unrelated-histories
推送: git push -u 远程库 分支 -f
例: git push -u 远程库 master -f
一般在开发中先pull拉取操作,再进行push操作
怎么解决冲突:
1.团队开发中避免在一个文件中改代码,分工明确
2.在修改一个文件时,先pull拉取修改,再push
其实就是怎么拉取,怎么提交,怎么解决冲突