乐趣区

关于git:十年开发Git操作总结应该很全面了

写在后面

你应用过 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^                         回到某个 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 barnch ==> 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    弹出本人最近保留的内容
查看对应文件 解决抵触

而后 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

起因二解决办法——连贯网络

  1. 网线松动
  2. 掉出公司内网,须要从新登录
  3. 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 一起探讨。

退出移动版