当前位置:   article > 正文

git pull 强制覆盖本地_十年开发Git操作总结,应该是很全面了

git pull强行覆盖所有分支

写在前面

你使用过 Git 吗?或许你还未接触过Git,或许你已经使用了一段时间,但它或许仍然令你困惑。
本文主要讲解自己学习Git的方法以及解决自己遇见的各种Git问题。
首先强烈给大家推荐掘金小册 Git 原理详解及实用指南。(不是托 )

  • 如果你是新人,读了这本小册并且跟着实际操作,你会对Git有一个大致的了解。
  • 如果你已经使用过一段时间Git,读了该小册之后,会让你有一种醍醐灌顶的感觉。
  • 该小册建议建议反复阅读(我觉得至少三次),每次阅读之后你都会有不一样的收获。

Git常用命令

git四连

  1. git add . 将所有改动放进暂存区
  2. git commit -m "描述" 提交并附带概要信息
  3. git pull 从远程仓库拉去代码
  4. git push 推送代码到远程仓库(master分支)

其余常用命令

  1. git log 查看日志
  2. git log -p 查看详细历史
  3. git log --stat 查看简要统计
  4. git status 查看工作区状态
  5. git branch 名称 创建分支
  6. git checkout 名称 切换分支
  7. git checkout -b 名称 创建并切换到新分支
  8. git branch -d 名称 删除该分支(不能删除当前所在的分支,不能删除没有合并到master上的分支)
  9. git branch -D 名称 删除该分支(可以删除没有合并到master上的分支)
  10. git commit --amend 对最新的一条commit进行修正
  11. git reset --hard HEAD^ 丢弃最新提交(未提交的内容会被擦掉)
  12. git reset --soft HEAD^ 丢弃最新提交(未提交的内容不会被擦掉)
  13. git revert HEAD^ 回到某个commit
  14. git rebase 目标基础点 重新设置基础点
  15. git merge 名称 将分支合并到head指向的分支
  16. git push origin localbranch 将代码推送到远程仓库的指定分支
  17. git push -d origin branchName 删除远程分支
  18. git stash 暂存代码
  19. git stash pop 弹出暂存代码

配置别名

对常用的一些命令进行别名配置,提升自己的工作效率

  1. git config --global alias.st status git status ==> git st
  2. git config --global alias.ci commit git commit ==> git ci
  3. git config --global alias.co checkout git checkout ==> git co
  4. git config --global alias.br branch git barnch ==> git br
  5. git config --global alias.sh stash git stash ==> git sh
  6. git config --global alias.pop "stash pop" git stash pop ==> git pop

常见问题以及解决办法

git clone失败

报错提示

  1. Could not read from remote repository.
  2. 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 弹出自己最近保存的内容
查看对应文件 解决冲突

32cab7f1f7906822807671da9f73d229.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失败

报错提示

  1. fatal: Could not read from remote repository.
  2. Please make sure you have the correct access rights

报错原因

原因一:github上没有添加最新的公钥 原因二:网络未连接

原因一解决办法——配置公钥

1.找到公钥打开,并复制其内容

9101c356cd660c9743a8098b90df7eb2.png

2.添加公钥到github

5dbb7153e0d6f317f6ba88e39cb41d0d.png

0670477eaf6b7cdc9fe8fa4bb17943b8.png

说一下为什么会这样,因为github和gitlab是共用同一个公钥和私钥,在做公司项目的时候,我clone失败(上面第一个错误)时,重新配置了公钥和私钥,所以此时我的github上没有我最新的公钥,导致我无法push

原因二解决办法——连接网络

  1. 网线松动
  2. 掉出公司内网,需要重新登录
  3. WiFi没网

撤销对文件的修改

描述

修改了一个复杂的index.vue文件,修改之后觉得自己写得乱糟糟的,没有一丝头绪,但这个修改文件未提交,我想恢复到它最开始的样子。

解决办法

运行命令 git status 获取到我们这个文件的路径

f90c4448e2b52f84a6a4632c6fad432c.png

git checkout -- 文件完整路径(好像不加--这两个横线也能使)

8b26338e3bc5ab981cc2c6995833db4b.png

然后关闭这个文件在打开就好了 在提醒你是否保存修改切记不要保存

这是一个非常危险的命令,执行此操作后git会用最近的commit覆盖掉整个文件。

除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。

自己的代码被pull下来的代码覆盖

描述

自己的代码刚刚提交,同事然后把我的代码拉下来之后也提交了,然后我再次把代码重新pull下来,发现自己刚刚写的代码全没了(备注:我合同事写的同一个文件)

解决办法(一)

git log 找到最近一次提交的commit编码

803922f5d478315e3952a1350a8197ec.png

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一起探讨。

8907826a235e7f13a322870df5f72637.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/531047
推荐阅读
相关标签
  

闽ICP备14008679号