Git
本地库初始化
git init
在新建的项目文件夹下打开git base
进行本地库的初始化,
配置用户信息
###1. 项目用户信息配置
git config user.name '用户名'
git config user.email '邮箱'
//邮箱名是不会验证的,只是作为一个名字用于在日后能够看到是谁提交的
###2. 全局用户配置
git config --global user.name '用户名'
git config --global user.email '邮箱地址'
两种配置的优先级,
项目配置 > 全局用户配置
常用命令
###1.查看状态
git status
###2. 添加到到暂存区
.表示将当前路径中的所有修改 或新增文件全部添加到暂存区
git add . / 文件名
###3.提交
git commit
回车以后会进入到vim编辑器中,需要输入这次提交的日志
git commit -m '这次提交的日志'
回车以后直接提交,不会进入到vim编辑器
4.查看历史记录
git log
查看所有的提交信息,包含提交时间,提交者,和提交日志,
如果一屏展示不下,可以使用键盘操作翻页,使用esc,ctrl +c都是无法退出的,需要使用q来退出
git log --pretty = oneline
以一行的形式来列出历史提交记录
git log --oneline
以一行的形式来列出历史提交记录。但是commitid比上一条展示的id要更短
git log -<num>
列出最近的num条提交日志
git relog
列出最近git的所有相关操作,版本回退时可以参考
###5.版本回退与前进
·版本回退的本质
就是一个head指针的操作
commit Id也就是上方查看提交记录上展示的id
基于commit的操作
git reset --hard <commit id>
基于 ^ 的操作
回退到当前版本的上一个版本HEAD表示当前版本,只能回退
git reset --hard HEAD^
基于 ~ 的操作
git reset --hard HEAD~<num>
回退到当前版本的上 num 个版本 只能回退
###6. 撤销修改
工作区的修改
git checkout --<filename>
暂存区的修改
`1. git reset HEAD <filename>` 撤销暂存区的修改,将原本提交到暂存区的文件放回到工作区
`2. git checkout --<filename>` 撤销暂存区的修改
###7. 删除文件并找回
找回文件的前提条件,要找回的文件已经被git跟踪管理了
使用版本回退进行相关处理
8. 缓存 暂时保存
git stash save "保存的提示信息记录"
使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码commit
提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用git stash
就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply
将以前一半的工作应用回来。
重新应用缓存的stash
git stash pop stash@{num}
恢复之前缓存的工作目录,num
是可选项,通过git stash list
可查看具体值。只能恢复一次
git stash list
查看所有保存的记录列表
git stash apply stash@{num}
恢复,num
是可选项,通过git stash list
可查看具体值。可回复多次
git stash drop stash@{num}
删除某个保存,num
是可选项,通过git stash list
可查看具体值
git stash clear
删除所有保存
分支管理
###1. 查看分支
查看本地仓库的分支情况
git branch
查看远程仓库的分支情况
git branch -r
查看本地仓库和远程仓库的分支情况
git branch -a
###2. 创建分支
git branch <分支名字>
只是创建分支
git checkout -b <分支名字>
创建分支并切换到新创建的这个分支上
###3. 切换分支
git checkout <分支名字>
注意:如果本地不存在这个分支,就会去远程上找,如果远程上也没有这个分支就会报错
###4. 合并分支
先切换到被合并的分支上,使用
git merge <需要合并的分支>
比如要将auto分支合并到main分支上,切换到main分支上使用 git merge auto
即可
###5. 合并时解决冲突
原因:两个分支在同一个文件的某一个位置做了修改,这些git在合并时不知道应该听谁的
解决办法:
1.在git窗口查看有冲突的文件
2.打开文件,查看并将文件中的特殊标记删除, <<<<
和=====
隔起来的代码块就是当前分支上的代 码,>>>>>
号的就是另一个分支上的代码
3.如果两者代码有冲突,业务只要保存一个其中一份代码,就去找到该分支的提交者或者找组长什么的…保留后再add
和 commit
4.如果两者的代码都需要保留,将特殊标记删除后保留需要的 代码再
执行/add
commit
###6. 删除分支
git branch -d <分支名字>
以及合并过的分支可以这样去删除
git branch -D <分支名字>
没有合并过的分支,但是里面有代码修改,使用 -d 删除,是删除不了的。 确定要删除,就是用 -D
远程库
1. 连接远程库
远程库拥有https和ssh链接地址
git remote add <远程连接别名,一般使用origin> <远程仓库的https地址或者ssh地址>
2.查看以及删除本地库和远程库的关联信息
git remote -v
git remote remove <连接别名>
3.克隆远程库
git clone <https或ssh地址>
克隆指定分支
git clone -b 分支名 http://(git@github.comXXXX.git)
4.推送push
在没有权限的情况下会有一个报错信息
remote: you do not have failed for "....地址"
添加权限即可推送
git push <连接别名 一般为origin > <分支名>
5.抓取fetch
git fetch <远程仓库连接别名> < 远程仓库分支名>
6.合并merge
将合并冲突解决完以后进行merge合并操作
7.拉取pull
pull = fetch + merge
git pull <别名><分支>
跨团队协作开发
对某个开源代码感兴趣
1 将这个开源的项目 fork 一份到我的远程仓库
2 clone 我 fork 的这个项目到本地
3 写好代码推送到自己的远程
4 创建 pull request
ssh免登录
1 需要先查看本地电脑是否有 ssh 相关的东西 (用户目录下是否有 .ssh 的文件夹)。有就先删除吧。
2 创建 ssh key
ssh-keygen -t rsa -C "邮箱地址"
3 接着在 用户目录下找到 .ssh 文件夹中的 id_rsa.pub 这个文件
4 复制 id_rsa.pub 中的内容
5 去远程托管平台上添加 ssh
1 这时克隆项目时就可以直接选择使用 ssh 的方式
2 先将本地的https的连接方式给删除,换成 ssh 的连接方式