git 解决冲突 —— git stash 当前修改

如果修改了本地的内容后,直接 git pull 提示合并冲突信息 error: Your local changes to the following files would be overwritten by merge. Please commit your changes or stash them before you merge.

此时可以先使用 git commitgit stash来将当前的修改保存起来,也就是对应的 git commit之前和之后的修复冲突。

在文件合并发送冲突时,需要合并一些代码,且不想将此时的修改进行提交,可以使用 git stash 来对当前的修改进行暂存,具体操作过程如下。


1、暂存当前工作目录的修改

git stash

git stash会将当前工作目录的所有修改进行暂存,并将工作目录恢复到未修改之前的状态,即最后一次提交的状态,此时再进行 git pull 操作(这个命令其实相当于先将有冲突的文件进行备份后,然后再将其revert)。

2、拉取远程代码仓内容

git pull

3、恢复暂存区的修改

git stash pop

该命令会将暂存区中的修改弹出,并合并到当前工作目中,此时会出现冲突信息以及标识和提示,需要进行手动的修改冲突文件。

可以使用文本编辑器打开冲突的文件进行修改,也可以使用 TortoiseGit 来编辑修改冲突文件。在此使用 vimdiff 打开冲突文件,并解决冲突

依次对所有冲突的文件进行修改编辑,合并其中的内容。此时相当于先将远程仓库的内容拉取到本地后,再将本地的修改添加进去。

4、标记冲突已解决

git add <fixedFile>

解决完对应文件冲突后,需要使用以上的命令来标记该文件的冲突已解决。然后可以继续进行编辑或直接提交,这种方式是没有额外的 Merge 提交信息。

5、查看当前工作目录状态

git status

查看工作目录的状态,是否有未解决的冲突文件,或未提交的修改等。

6、提交本地修改

git commit -m "Message for this change"

提交本地的修改


【总结】

  • git stash list :显示所有的暂存数据
  • git stash clear:清除所有的暂存数据,在解决冲突后默认是不会清理对应的暂存数据,可以是用该命令进行清除。
  • git stash show:显示默认的暂存做了哪些修改,默认是第一个,如果有多个,也可以在后面加上具体的索引,如显示第二个,即可以在 show 后面加上: stash@{1}
  • git stash drop stash@{$index}:会将暂存列表中索引为 index 的暂存丢弃掉
  • git stash操作只是对已被 git 追踪的文件起作用,如果有的文件还没有 Versioned 将不会起作用。
posted @ 2024-11-06 11:59  Jeffxue  阅读(98)  评论(0编辑  收藏  举报