目录
git reset --hard [索引]:前进或者后退历史版本
git diff 文件名:将工作区中的文件和暂存区中的文件进行比较
安装
git下载地址Git - Downloading Package
下载过程会比较慢
安装
鼠标右击Git bash here 打开终端
查看git版本号
设置签名
git config --global user.name"josie"
设置邮箱
git config --global user.email"josie@163.com"
本地仓库的初始化
先创建本地仓库
默认是没有.git目录的
执行git init生成.git目录
常用命令
添加文件add,提交文件commit
先创建一个文件demo.txt
git add将文件提交到暂存区
git commit 将暂存区文件提交到本地库
碰到不能识别时可以去config文件里添加user
git status 查看状态
demo2.txt并没有提交所以是红色的
提交后再次查看状态
修改demo2.txt中的内容然后查看状态,提示文件被改动
git log查看日志
当历史记录过多时,下一页:空格,上一页:b,到尾页显示END
git log --pretty=oneline
git relog
git reset --hard [索引]:前进或者后退历史版本
通过指针进行移动,本地库的指针移动的同时,重置暂存区,重置工作区
git reset --mixed [索引]
本地库指针移动的同时,重置暂存区,工作区不动
git reset --soft [索引]
本地库指针移动的时候,暂存区和工作区不动
rm删除
先删除工作区中的文件
再同步到暂存区,再同步到本地库
文件已经被删除
找回本地库删除文件,进行版本回退
git diff 文件名:将工作区中的文件和暂存区中的文件进行比较
$ git diff 51c973b test3.txt 通过索引比较
$ git diff HEAD test3.txt 通过HEAD比较
分支
git branch -v 查看分支
在哪个分支上是通过*来显示
git branch branch01创建分支
git checkout 切换分支
branch01中修改内容后版本号发生改变
将branch01中的内容合并到主分支
先进入主分支,再merge
出现冲突
解决冲突
不带文件名commit
可以看到(master|MERGING)变成了(master)
github创建远程库
https://github.com/josielucky/josierepository1.git
远程库地址比较长,可以起别名通过别名访问
$ git remote add origin https://github.com/josielucky/josierepository1.git
推送时弹出GitHub账号登录
查看远程库
git clone克隆
远程库内容已经到了本地
另一个用户提交时需要重新添加账户信息
git push 推送
git fetch抓取
将远程库内容下载到本地,但是工作区的文件并没有更新
合并
切换去远程master,查看文件后没问题就就切回本地master,然后苯丙
git
git fetch是为了保险起见,先去查看,git pull是直接拉取
制造冲突
Josie提交test5.txt
josie2拉取
操作同一个文件的同一个位置,会造成冲突
Josie2首先更新test5.txt文件内容,然后push
josie也改动test5.txt中的内容并push
推送失败
解决冲突
先拉取修改冲突,然后推送
找到冲突
删除不要的内容
再次提交并推送
SSH免密登录
执行命令生成.ssh目录
ssh-keygen -t rsa -C xxxxxxx@126.com
本地生成.ssh目录,找到id_rsa.pub文件复制
打开GitHub->settings->SSH and GPG keys->New SSH key,将复制到的字符粘贴到key中
设置ssh别名
将github中的ssh复制并执行
$ git remote add origin_ssh git@github.com:josielucky/josierepository1.git
$ git remote -v
使用ssh别名push
Idea集成Git
完成本地的库的初始化操作
生成了.git目录
创建类会提示是否提交到git
add之后会变成绿色,添加到了暂存区
commit提交到工作区
此时跟新代码,前面会出现绿色说明跟工作区出现不同
再次提交
从远程库拉取
$ git pull git@github.com:josielucky/webauto.git master --allow-unrelated-histories
推送去远程库
$ git push -u git@github.com:josielucky/webauto.git master -f
到这里远程库和本地库就可以进行交互了
idea中进行推送
添加一个类add-commit-push
一般情况下要先进行pull操作再进行push
从远程库克隆项目
在idea中制造冲突并解决
先在本地某一个工作区修改提交代码
idea中修改并push
push时有冲突遇到合并提示
解决冲突
merge之后查看不同的地方,拖拽需要的代码
apply之后
增加的内容已经跟新了
再次push
避免冲突:
团队中避免在同一个文件中修改代码
在修改文件前,push之前先进行pull操作