假设你正在一个分支上工作,但你需要合并同事的分支代码,而你的本地修改还没有提交。如果直接合并,很可能会遇到冲突。在这种情况下,git stash 可以帮助你暂存本地修改,解决冲突后再恢复这些修改。
使用步骤
-
查看当前状态:
bash 复制代码 git status这样你可以了解哪些文件已经被修改。
-
暂存当前工作:
bash 复制代码 git stash这会将所有未提交的修改(包括已暂存和未暂存的修改)存储到栈中,并恢复工作目录到最后一次提交的状态。
-
查看当前状态:
bash 复制代码 git status此时你的工作目录应该是干净的。
-
拉取同事的代码或切换到同事的分支:
bash 复制代码 git pull origin branch-name或者
bash 复制代码 git checkout branch-name -
解决合并冲突: 如果在拉取或合并过程中出现冲突,Git 会提示你哪些文件有冲突。你需要手动编辑这些文件,解决冲突。
-
标记冲突已解决并提交:
bash 它应该是 复制代码 git add resolved-file.txt git commit -m "Resolve merge conflict" -
切换回你原来的分支(如果需要) :
bash 复制代码 git checkout your-branch -
恢复之前的工作:
bash 复制代码 git stash pop这会将之前暂存的修改应用到当前工作目录,并从栈中移除这次暂存。如果再次遇到冲突,你需要手动解决这些冲突。
-
解决恢复时的冲突: 如果在应用
git stash pop时遇到冲突,编辑相应的文件解决冲突,然后标记冲突已解决并提交。
具体示例
复制代码
# 查看当前状态
git status
# 暂存当前工作
git stash
# 查看当前状态(应该是干净的)
git status
# 拉取同事的代码
git pull origin branch-name
# 解决任何冲突(手动编辑冲突文件)
# 标记冲突已解决并提交
git add resolved-file.txt
git commit -m "Resolve merge conflict"
# 恢复之前的工作
git stash pop
# 解决恢复时的冲突(如果有)
# 手动编辑冲突文件
# 标记冲突已解决并提交
git add resolved-file.txt
git commit -m "Resolve stash conflict"
注意事项
- 频繁提交:尽量频繁地提交工作,以减少在这种情况下的复杂性。
- 命名清晰的提交信息:使用清晰的提交信息有助于在解决冲突时理解每个提交的目的。
- 保持冷静:在遇到冲突时,仔细阅读冲突提示并小心编辑文件,不要急于解决冲突以免引入新的问题。