前言
这篇文章用来记录一些要用的 git 方法 , 将会持续更新 , 不过 , 我可能可能及时更新 , 因为我要工作 , 还有其他比较重要的文章需要写🤡
算是先占个坑~
如何修改提交信息
修改git commit -m ""
引号中的内容可以根据提交是否已经推送到远程仓库来采用不同的方法,以下为你详细介绍:
提交未推送到远程仓库
如果提交还没有推送到远程仓库,你可以使用git commit --amend
命令来修改最近一次提交的提交信息。
操作步骤如下:
- 执行以下命令开始修改提交信息:
bash
git commit --amend
- 执行该命令后,会打开一个文本编辑器(通常是 Vim),其中显示当前的提交信息。你可以直接修改这个信息。
- 修改完成后,保存并关闭编辑器。这样,最近一次提交的提交信息就被更新了。
如果你想直接在命令行中修改而不打开编辑器,可以使用以下命令:
bash
git commit --amend -m "新的提交信息"
提交已推送到远程仓库
若提交已经推送到了远程仓库,你需要先按照上述未推送时的方法修改本地的提交信息,然后使用git push -f
强制推送到远程仓库。不过,这种方法会重写远程仓库的提交历史,在多人协作的项目中使用时需要谨慎,因为这可能会给其他协作者带来麻烦。
操作步骤如下:
- 修改本地提交信息:
bash
git commit --amend -m "新的提交信息"
- 强制推送到远程仓库:
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,并删除工作区和暂存区中与该提交相关的所有更改,将代码恢复到上一个提交时的状态。
- 撤回最近的commit但保留更改 :使用
使用GitHub图形界面
登录GitHub账户,打开相关的仓库,转到"Commits"标签,找到要撤回的刚刚的commit,点击commit旁边的"Revert"按钮,GitHub将自动为你创建一个新的撤回commit,然后将新的commit推送到远程仓库即可完成撤回操作。
远程与本地冲突
遇到了一个常见的 Git 错误,这是因为本地对 README.md
和 doc/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