(点击上方快速关注并设置为星标,一起学Python)
转自:掘金 - 前端布吉岛
https://juejin.cn/post/6891146425590087693
写在前面
你使用过 Git 吗?或许你还未接触过Git,或许你已经使用了一段时间,但它或许仍然令你困惑。
本文主要讲解自己学习Git的方法以及解决自己遇见的各种Git问题。
如果大家还想对Git有更深一步的研究可以访问
Git-book。
https://git-scm.com/book/zh/v2
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^ 回到某个commit
git 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 st
git config --global alias.ci commit git commit ==> git ci
git config --global alias.co checkout git checkout ==> git co
git config --global alias.br branch git branch ==> git br
git config --global alias.sh stash git stash ==> git sh
git 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
弹出自己最近保存的内容
查看对应文件 解决冲突
Snipaste_2020-07-13_09-40-27.png
然后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
原因二解决办法——连接网络
-
-
-
撤销对文件的修改
描述
修改了一个复杂的index.vue文件,修改之后觉得自己写得乱糟糟的,没有一丝头绪,但这个修改文件
未提交
,我想恢复到它最开始的样子。
解决办法
运行命令
git status
获取到我们这个文件的路径
image.png
git checkout \-- 文件完整路径
(好像不加--这两个横线也能使)
image.png
然后关闭这个文件在打开就好了 在提醒你是否保存修改
切记不要保存
这是一个非常危险的命令,执行此操作后git会用最近的commit覆盖掉整个文件。
除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。
自己的代码被pull下来的代码覆盖
描述
自己的代码刚刚提交,同事然后把我的代码拉下来之后也提交了,然后我再次把代码重新pull下来,发现自己刚刚写的代码全没了(备注:我合同事写的同一个文件)
解决办法(一)
git log
找到最近一次提交的commit编码
git reset \--hard 复制的commit编码
然后关闭这个文件在打开就好了 在提醒你是否保存修改
切记不要保存
解决办法(二)
ctrl + z
使用这个办法是必须要知道,自己改动过哪些文件,并且编辑器未被关闭过(我当时编辑器刚好卡了,然后重启了一下编辑器.....)
只想拉取远端代码 不想commit
描述
自己的代码只写了一丁点,旁边的同事说他提交了,叫我pull一下,因为没写什么东西,所以不想commit