我的远程实习(二) | git 持续更新版

前言

这篇文章用来记录一些要用的 git 方法 , 将会持续更新 , 不过 , 我可能可能及时更新 , 因为我要工作 , 还有其他比较重要的文章需要写🤡

算是先占个坑~

如何修改提交信息

修改git commit -m ""引号中的内容可以根据提交是否已经推送到远程仓库来采用不同的方法,以下为你详细介绍:

提交未推送到远程仓库

如果提交还没有推送到远程仓库,你可以使用git commit --amend命令来修改最近一次提交的提交信息。

操作步骤如下:

  1. 执行以下命令开始修改提交信息:
bash 复制代码
git commit --amend
  1. 执行该命令后,会打开一个文本编辑器(通常是 Vim),其中显示当前的提交信息。你可以直接修改这个信息。
  2. 修改完成后,保存并关闭编辑器。这样,最近一次提交的提交信息就被更新了。

如果你想直接在命令行中修改而不打开编辑器,可以使用以下命令:

bash 复制代码
git commit --amend -m "新的提交信息"

提交已推送到远程仓库

若提交已经推送到了远程仓库,你需要先按照上述未推送时的方法修改本地的提交信息,然后使用git push -f强制推送到远程仓库。不过,这种方法会重写远程仓库的提交历史,在多人协作的项目中使用时需要谨慎,因为这可能会给其他协作者带来麻烦。

操作步骤如下:

  1. 修改本地提交信息:
bash 复制代码
git commit --amend -m "新的提交信息"
  1. 强制推送到远程仓库:
bash 复制代码
git push -f origin 分支名

以下是总结操作过程的示例代码:

bash 复制代码
# 若提交未推送到远程仓库,直接修改
git commit --amend -m "新的提交信息"

# 若提交已推送到远程仓库
git commit --amend -m "新的提交信息"
git push -f origin 分支名

在多人协作的项目中,建议你在强制推送之前先与团队成员沟通,避免影响他人的工作。

撤回刚刚的 GitHub 提交

要撤回刚刚的GitHub提交,有以下几种方法:

使用命令行

  • 使用 git revert命令 :该命令会创建一个新的提交来撤消之前的更改,不会改变历史记录,适用于多人协作场景。具体步骤如下:
    • 首先使用git log命令找到要撤回的提交的哈希值。
    • 然后执行git revert <commit_sha>命令,其中<commit_sha>为要撤回的提交的哈希值。执行该命令后,会生成一个新的提交,用于撤销指定提交的更改。
    • 最后将新的提交推送到远程仓库:git push origin <branch_name>,其中<branch_name>为当前所在分支。
  • 使用 git reset命令 :该命令可以直接删除提交,但会改变历史记录,使用时需谨慎。
    • 撤回最近的commit但保留更改 :使用git reset --soft HEAD~1命令,该命令会将HEAD指向前一个commit,但保留工作目录中的更改,即代码仍在工作区,且处于暂存状态,可以继续修改后重新提交。
    • 撤回最近的commit并丢弃更改 :如果希望完全丢弃最近的commit和更改,可使用git reset --hard HEAD~1命令。此命令会将HEAD指向前一个commit,并删除工作区和暂存区中与该提交相关的所有更改,将代码恢复到上一个提交时的状态。

使用GitHub图形界面

登录GitHub账户,打开相关的仓库,转到"Commits"标签,找到要撤回的刚刚的commit,点击commit旁边的"Revert"按钮,GitHub将自动为你创建一个新的撤回commit,然后将新的commit推送到远程仓库即可完成撤回操作。

远程与本地冲突

遇到了一个常见的 Git 错误,这是因为本地对 README.mddoc/Josn_prompt.md 文件进行了修改,而远程仓库中这些文件也有更新。Git 无法自动合并这些更改,因为可能会覆盖本地修改。

解决方案

有以下几种选择:

1. 提交本地更改

bash 复制代码
git add README.md doc/Josn_prompt.md
git commit -m "我的本地修改"
git pull --tags origin main

2. 暂存本地更改

bash 复制代码
git stash
git pull --tags origin main
git stash pop

如果 git stash pop 后出现冲突,你需要手动解决这些冲突。

3. 放弃本地更改

如果你的本地修改不重要:

bash 复制代码
git checkout -- README.md doc/Josn_prompt.md
git pull --tags origin main

。。。

相关推荐
程序员黑豆16 小时前
Java包装类:基本类型与对象的桥梁
java·前端·ai编程
bugcome_com18 小时前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json
To_OC19 小时前
写了三天 Next.js,我的 React 世界观被拆了又装回去
前端·全栈·next.js
独泪了无痕19 小时前
viewer.js 安装与配置指南:实现图片预览功能
前端·vue.js
Fluxart.ai21 小时前
电商商品图审核怎么自动化?规则引擎、人工复核与发布门禁
java·前端·自动化
why技术21 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端
愚公搬代码21 小时前
【愚公系列】《Android应用案例开发大全》016-LBS类应用掌上杭州(辅助工具类的开发)
android·前端
CodeSheep21 小时前
又一个华为天才少年,离职了!
前端·后端·程序员
kyriewen1 天前
面试官说"打开你的AI工具"——我才发现,他考的根本不是写代码
前端·人工智能·面试
IT_陈寒1 天前
Vue的双向绑定把我坑惨了,原来这个场景不能用
前端·人工智能·后端