写在后面
你应用过 Git 吗?或者你还未接触过Git,或者你曾经应用了一段时间,但它或者依然令你困惑。
本文次要解说本人学习Git的办法以及解决本人遇见的各种Git问题。
首先强烈给大家举荐掘金小册 Git 原理详解及实用指南。(不是托????)
- 如果你是新人,读了这本小册并且跟着实际操作,你会对Git有一个大抵的理解。
- 如果你曾经应用过一段时间Git,读了该小册之后,会让你有一种醍醐灌顶的感觉。
- 该小册倡议倡议重复浏览(我感觉至多三次),每次浏览之后你都会有不一样的播种。
- *
Git常用命令
git四连
git add . 将所有改变放进暂存区git commit -m "形容" 提交并附带概要信息git pull 从近程仓库拉去代码git push 推送代码到近程仓库(master分支)
其余常用命令
git log 查看日志git log -p 查看具体历史git log --stat 查看简要统计git status 查看工作区状态git branch 名称 创立分支git checkout 名称 切换分支git checkout -b 名称 创立并切换到新分支git branch -d 名称 删除该分支(不能删除以后所在的分支,不能删除没有合并到master上的分支)git branch -D 名称 删除该分支(能够删除没有合并到master上的分支)git commit --amend 对最新的一条commit进行修改git reset --hard HEAD^ 抛弃最新提交(未提交的内容会被擦掉)git reset --soft HEAD^ 抛弃最新提交(未提交的内容不会被擦掉)git revert HEAD^ 回到某个commitgit rebase 指标根底点 从新设置根底点git merge 名称 将分支合并到head指向的分支git push origin localbranch 将代码推送到近程仓库的指定分支git push -d origin branchName 删除近程分支git stash 暂存代码git stash pop 弹出暂存代码
配置别名
对罕用的一些命令进行别名配置,晋升本人的工作效率
git config --global alias.st status git status ==> git stgit config --global alias.ci commit git commit ==> git cigit config --global alias.co checkout git checkout ==> git cogit config --global alias.br branch git barnch ==> git brgit config --global alias.sh stash git stash ==> git shgit config --global alias.pop "stash pop" git stash pop ==> git pop
常见问题以及解决办法
git clone失败
报错提醒
Could not read from remote repository.Please make sure you have the correct access rights
报错起因
SSH key生效 或者 本人没有权限
解决办法(一)——从新增加SSH key
1.ssh-keygen -t rsa -C "username" (注:username为你git上的用户名)
2.Generating public/private rsa key pair.
Enter file in which to save the key (C:Users灏忛┈/.ssh/id_rsa): 间接回车
3.C:Users灏忛┈/.ssh/id_rsa already exists.
Overwrite (y/n)? y 输出y
4.Enter same passphrase again: 间接回车
5.Your identification has been saved in C:Users灏忛┈/.ssh/id_rsa. 私钥保留的地址
Your public key has been saved in C:Users灏忛┈/.ssh/id_rsa.pub. 公钥保留地址
6.依据门路找到公钥,将公钥增加到Git上
解决办法(二)—— 应用http的地址进行克隆
应用这种形式的话须要输出本人的账号以及明码,有点麻烦,不倡议应用
git pull失败(一)
报错提醒
Your local changes to the following files would be overwritten by merge:
报错起因
其他人批改了该文件提交到版本库中,而我本地也批改了该文件,以致拉去代码的时候发生冲突
解决办法——储存更改
顺次进行如下操作git stash
将工作区复原到上次提交的内容,同时备份本地所做的修git pull
拉取git stash pop
弹出本人最近保留的内容
查看对应文件 解决抵触
而后git 三连提交本人的代码
git pull失败(二)
报错提醒
Pulling is not possible because you have unmerged files.
报错起因
批改的文件未提交
这个谬误其实是这样子的——其实我之前曾经pull过代码了,而后呈现了抵触,解决抵触之后,我想再pull一下时报的错,起初我才晓得,解决掉抵触之后是须要再次commit的
解决办法——提交到本地
git add .
嗯是的,这里 commit 前也须要先 add 一下 git commit -m "获取新的代码"
git pull
git push失败
报错提醒
fatal: Could not read from remote repository.Please make sure you have the correct access rights
报错起因
起因一:github上没有增加最新的公钥 起因二:网络未连贯
起因一解决办法——配置公钥
1.找到公钥关上,并复制其内容
2.增加公钥到github
说一下为什么会这样,因为github和gitlab是共用同一个公钥和私钥,在做公司我的项目的时候,我clone失败(下面第一个谬误)时,重新配置了公钥和私钥,所以此时我的github上没有我最新的公钥,导致我无奈push
起因二解决办法——连贯网络
- 网线松动
- 掉出公司内网,须要从新登录
- WiFi没网
撤销对文件的批改
形容
批改了一个简单的index.vue文件,批改之后感觉本人写得乱哄哄的,没有一丝脉络,但这个批改文件未提交,我想复原到它最开始的样子。
解决办法
运行命令 git status
获取到咱们这个文件的门路
git checkout -- 文件残缺门路
(如同不加--这两个横线也能使)
而后敞开这个文件在关上就好了 在揭示你是否保留批改切记不要保留
这是一个十分危险的命令,执行此操作后git会用最近的commit笼罩掉整个文件。
除非你的确分明不想要对那个文件的本地批改了,否则请不要应用这个命令。
本人的代码被pull下来的代码笼罩
形容
本人的代码刚刚提交,共事而后把我的代码拉下来之后也提交了,而后我再次把代码从新pull下来,发现自己刚刚写的代码全没了(备注:我合同事写的同一个文件)
解决办法(一)
git log
找到最近一次提交的commit编码git reset --hard 复制的commit编码
而后敞开这个文件在关上就好了 在揭示你是否保留批改切记不要保留
解决办法(二)
ctrl + z
应用这个方法是必须要晓得,本人改变过哪些文件,并且编辑器未被敞开过(我过后编辑器刚好卡了,而后重启了一下编辑器.....)
只想拉取远端代码 不想commit
形容
本人的代码只写了一丁点,旁边的共事说他提交了,叫我pull一下,因为没写什么货色,所以不想commit
胡思乱想的尝试
过后我就想,可不可以间接pull,后果当然是不行啦,git会给你报如下的谬误
our local changes to the following files would be overwritten by merge:
解决办法
git stash
暂存本人的打码git pull
拉取代码git stash pop
弹出暂存
想要回到pull之前的状态
问题形容
commit之后,把代码pull下来,呈现很多抵触,而后想回到pull之前的状态,将代码格式化之后再pull
解决办法
git merge --abort
回到抵触之前的状态
git merge --abort将会摈弃合并过程并且尝试重建合并前的状态。然而,当合并开始时如果存在未commit的文件,git merge --abort在某些状况下将无奈重现合并前的状态。(特地是这些未commit的文件在合并的过程中将会被批改时)
查看本人的commit记录
形容
公司要求写日志,想通过查看一下本人的commit记录来写日志,
解决办法
git log
此办法有缺点,只能展现最近一次push时的commit记录 最初,只有在GitLab上的历史看了
最初
不倡议大家应用Git的第三方可视化工具,首先有的口试或者面试是要考查Git的,其次感觉应用git可视化工具之后,就没有那味儿了。
本文继续更新,有趣味的能够关注一下,有问题大家也能够进群973961276一起探讨。