[Git] 本地代码库和远程同步

article/2025/1/9 23:25:23

一 前言

这本来不是一个很严重的问题, 有很多办法可以处理, 但是对于Git新手来说, 会觉得非常可怕, 因为不知道怎么恢复之前的状态, 不知道当前状态上传上去会造成什么影响, 最怕的是影响到master之类的主分支, 然后把别人的工作搞丢, 那就完蛋了.

我刚开始接触Git的时候, 上级给了一份详细的文档让我按照步骤上传代码, 前面的更新本地master, 创建分支都没有什么问题, 但是好死不死我在修改本地分支内容之前忘记先把本地状态push到远端了, 因为本地需要rebase master, 然后通过push和远端同步, 如果不做这一步, 分支就会混乱, 于是我想把本地更新的东西移除掉, 然后再push. 由于不知道做了哪些更改, 就直接用了reset指令恢复之前的状态, 结果越搞越乱, 最后本地分支的log乱七八糟的, 我只好跟上级说, 能不能帮我解决这个问题, 上级过来看了以后, 一通上下翻飞操作就给我解决了, 我看了非常羡慕, 暗暗下决心我也要拥有这项技术.

二 Git上的各种恢复方式

我还是使用自己的代码仓库gitee来举例.

2.1 丢弃本地分支,从远端同步

这个部分就是解决我之前说的问题, 就是我本地什么都不要了, 只要和远程完全一致就可以, 最狠的办法是重新找一个文件夹, 然后用git clone拉一次, 这样你的本地和远程就绝对完全一致了, 但是这个方法代价太大, 而且完整的git仓库动辄几个G甚至十几个G, 耗时太长, 以下有一些简单的方法可以参考.

2.1.1 丢弃在本地的所有改动和提交, 获取服务器上的最新版本

指令一 切换到你的分支
git checkout your_branch
在这里插入图片描述

指令二 从远程拉取所有数据
git fetch origin
在这里插入图片描述

指令三 以远程分支为范本, 强制恢复本地分支
git reset --hard origin/remoteBranchName
在这里插入图片描述

2.1.2 仅删除本地分支, 然后拉取远程分支

指令1 切换到master:
git checkout master
在这里插入图片描述

指令2 删除本地分支:
git branch -D 本地分支
在这里插入图片描述

指令3 创建基于远程分支的本地分支
git checkout -b 本地分支 origin/远程分支
在这里插入图片描述

其中, 本地分支和远程分支不一定要同名,使用
git branch -vv
来对比本地分支和远程分支的对应关系
在这里插入图片描述

其中左边的是本地分支名, 右边的origin/之后的就是远程分支名

使用
git log -1
查看commit ID和远程是否一致,一致则没有问题
本地ID:
在这里插入图片描述

远程ID:
在这里插入图片描述

前7位一致即可.

git branch -r
查看远端分支有哪些
在这里插入图片描述

2.2 如果commit了后悔

因为git是以commit ID为核心的版本管理工具, 所以commit操作就显得非常重要, 我们在判断一个版本是否最新时, 也会按照commit ID去确认, 然后如果操作有问题, 也需要通过commit ID去恢复, 所以补充一下这一块的内容.

参考
https://blog.csdn.net/qq_34238798/article/details/108003838

2.2.1 回退版本

git reset --hard HEAD
回退/撤销。回退到最近一次的COMMIT版本上(即 【当前版本/撤销到倒数第1个COMMIT版本】);将工作区、暂存区和HEAD保持一致。

git reset --hard HEAD~1
或 git reset --hard HEAD^
回退/撤销。回退到上一次的COMMIT版本上(即 【上一版本/撤销到倒数第2个COMMIT版本】);将工作区、暂存区和HEAD保持一致。

git reset --hard HEAD~2
或 git reset --hard HEAD^^
回退/撤销。回退到上上次的COMMIT版本上(即 【上上版本/撤销到倒数第3个COMMIT版本】);将工作区、暂存区和HEAD保持一致。

git reset --hard HEAD~99
或 git reset --hard HEAD(99个’^’)
回退/撤销。回退到上上次的COMMIT版本上(即 【撤销到倒数第100个COMMIT版本】);将工作区、暂存区和HEAD保持一致。

–hard删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就恢复到了上一次的commit状态。
这一步操作可以代替撤销本地修改,不管有没有commit,都可以用它恢复到老版本

git reset --soft HEAD~1
–soft 不删除工作空间改动代码,撤销commit,不撤销git add .
用soft,然后把原文件放回去,再add一次

–mixed 意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

这些问题不大, 自己试试即可, 懒得截图了.

撤销add
git reset HEAD .

撤销文件修改
git checkout .

2.3 如果reset后悔

reset虽然是一条很好用的指令, 但是随意reset也会导致一些麻烦的问题, 比如我一开始说的, 我用reset回退了太多版本, 导致找不到后面的版本了, 于是搞乱了本地, 如果这时候上传代码, 很可能会把别人的工作也弄丢, 所以如果想恢复reset的操作, 可以参考下面的代码.

git reflog -5
可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid
在这里插入图片描述

git reset --hard xxxxxx
选择一条你想恢复的即可
在这里插入图片描述

2.4 master回退版本(慎用!慎用!慎用!)

在master执行相同的reset命令即可
git reset --hard XXXXX
git push -f

不多解释了, 希望大家不要有机会用上这个命令.


http://chatgpt.dhexx.cn/article/jUtu0DXl.shtml

相关文章

git操作之同步代码到仓库

1、先创建一个仓库,然后把创建的空仓库克隆到本地;2、把程序拷贝到本地的仓库中,然后再进行下列操作;(1)git add . 保存全部内容(2)git commit -m "项目描述"(3) git pu…

如何将git服务器同步到本地文件夹,使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境...

最近由于需要对正在运行的系统进行新功能添加,本来是可以通过github进行代码维护,但是由于这个项目涉及一些问题,目前还不能开源,所以只能是手动覆盖bug文件,生产环境上的代码反而是最新的了。 之前有个思路&#xff0…

git 项目代码上传到服务器上,git 上传代码到服务器

一、建立本地git仓库 1、cd到你项目根目录下 git init 二、将本地所有文件添加到暂存区 git add . . 表示所有文件 如果想添加项目中的指定文件,那就把.改为指定文件名或者目录即可,多个目录用空格隔开 三、将暂存区的文件提交到本地仓库 git commit -m 注释 四、在码云上创建…

git如何拉去开发的 最新代码_git拉取代码到本地

git拉取代码到本地的方法是:首先打开git命令窗口,输入命令【git clone github仓库地址】;然后回车即可拉取代码到本地仓库。 第一步:拉取远程代码git clone https://github.com/…/PrettyGirls.git 第二步:查看本地分支和远程分支1、cd PrettyGirls 到工程目录下; 2、git…

git配置及同步项目代码到本地

长久不用git发现自己都忘记了。。。在此记录下git配置,以便日后查看。 git配置 配置本地仓库账号和邮箱 git config --global user.name "YourName" git config --global user.email "your-emailexample.com"生成ssh密钥 ssh-keygen -t rsa -…

Git克隆仓库代码至本地

目录 1、本地新建文件夹: 2、文件夹右击,点击:Git Bash Here 3、本地仓库初始化,输入:git init 4、复制仓库代码地址 5、代码克隆,输入:git clone 复制的地址 6、打开文件夹,…

Git代码拉取与同步

1、git clone [email protected]:xxx/xxx.git 2、git checkout -b dev origin/dev 创建本地dev分支 并与远程dev分支关联 3、git remote add upstream 远程公库地址 关联到远程的公库 4、git pull upstream dev 从远程公库拉取dev分支代码 远程公库新建了bug分支&#xff…

在WebStorm里面搜索文件中出现的中文字符

ctrfF或者ctflshiftF 搜索[\u0100-\uffff]

处理webStorm中文字体样式大小不一,难看的问题

修改前样式: 修改后样式: 具体操作设置如下: File→Settings→Appearance & Behavior→Appearance,Theme 选择Darcula(主题可自行选择) File→Settings→Editor→Font, Font 选择Consolas&#xff…

WebStorm安装教程【2022年新版图解】

对于入门JavaScript 开发的者,最重要的就是安装WebStorm软件,一款非常优秀的JavaScript工具,在互联网上查询目前还没有一篇写得比较详细的WebStorm教程。今天我将使用WebStorm最新2022年版本,从下载到安装以及创建项目带大家完整的…

关于webstorm中TS如何设置中文提示

如下图所示,默认提示为英文 如果需要切换为中文提示,可按如下操作: 在选项中输入参数:--locale zh-CN,然后重启webstorm。 让我们来看看效果: 大功告成!✌️

NodeJS + WebStorm 中文显示乱码

当使用 WebStorm 运行 NodeJS 代码时, 使用 response.write 有中文的时候,会显示乱码,如下图: server.on(request,function (request, response) {console.log(收到客户端的请求了,请求路径是: request.u…

webstorm的中文教程和技巧分享

webstorm是一款前端javascript开发编辑的神器,此文介绍webstorm的中文教程和技巧分享。webstorm8.0.3中文汉化版下载:百度网盘下载:http://pan.baidu.com/s/1pJI9PMVWebStorm为前端javascript开发而生,专门为 javascript开发做了很…

IDEA-goland-pychar-phpstorm-webstorm设置中文版

以前都是需要手动安装破解包 , 达到中文的效果,但是设置等操作是不可用的 现在只需要(ctrlalts)打开设置 在plugin中输入chiness , 然后重启idea即可

Webstorm中文乱码的问题

2019独角兽企业重金招聘Python工程师标准>>> Webstorm中文乱码的问题 1、设置中文字体 2、设置文件编码集(1) 3、设置文件编码集(2) 转载于:https://my.oschina.net/u/2441766/blog/856200

php代码丑,解决webstorm显示中文难看、丑的问题

相信用过sublime、atom 类的编辑器的童鞋,装完webstorm对这款编辑器的第一印象是没啥好感的。一个很重要的原因就因为第一眼看上去这款IDE默认主题界面不好看,最不能忍的是中文显示太难看,中文显示的有粗有细,有些中文显示会有锯齿…

webstorm中文乱码问题

步骤: 1、ctrlshifts 2、选择Editor----->File Encoding 3、

Webstorm的介绍

WebStorm 是什么?? WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。被广大中国JS开发者誉为“Web前端开发神器”、 “最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分…

【webstorm】webstorm官网中文破解版

转载地址:https://blog.csdn.net/vchen_hao/article/details/77248053 1.下载webstorm软件。 1.官网下载 https://www.jetbrains.com/webstorm/ 2.百度云盘下载 链接:链接: https://pan.baidu.com/s/1kXimplP 密码: av6g 2.安装。 1、运行“WebStorm-20…

WebStorm设置中文,没有显示安装官方插件来这

一、直接访问 Versions: Chinese (Simplified) Language Pack / 中文语言包 - IntelliJ IDEs Plugin | Marketplace (jetbrains.com) 下载 二、使用步骤 1.选择WebStorm 2.打开WebStrom 就会提示你是否下载中文包了 总结 这是在webstorm里面没有搜到中文包的步骤&#xff0c…