Git暂存区——git stash,基本用法:解决冲突

411 阅读2分钟

假设你正在一个分支上工作,但你需要合并同事的分支代码,而你的本地修改还没有提交。如果直接合并,很可能会遇到冲突。在这种情况下,git stash 可以帮助你暂存本地修改,解决冲突后再恢复这些修改。

使用步骤

  1. 查看当前状态

    bash
    复制代码
    git status
    

    这样你可以了解哪些文件已经被修改。

  2. 暂存当前工作

    bash
    复制代码
    git stash
    

    这会将所有未提交的修改(包括已暂存和未暂存的修改)存储到栈中,并恢复工作目录到最后一次提交的状态。

  3. 查看当前状态

    bash
    复制代码
    git status
    

    此时你的工作目录应该是干净的。

  4. 拉取同事的代码或切换到同事的分支

    bash
    复制代码
    git pull origin branch-name
    

    或者

    bash
    复制代码
    git checkout branch-name
    
  5. 解决合并冲突: 如果在拉取或合并过程中出现冲突,Git 会提示你哪些文件有冲突。你需要手动编辑这些文件,解决冲突。

  6. 标记冲突已解决并提交

    bash   它应该是
    复制代码
    git add resolved-file.txt
    git commit -m "Resolve merge conflict"
    
  7. 切换回你原来的分支(如果需要)

    bash
    复制代码
    git checkout your-branch
    
  8. 恢复之前的工作

    bash
    复制代码
    git stash pop
    

    这会将之前暂存的修改应用到当前工作目录,并从栈中移除这次暂存。如果再次遇到冲突,你需要手动解决这些冲突。

  9. 解决恢复时的冲突: 如果在应用 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"

注意事项

  • 频繁提交:尽量频繁地提交工作,以减少在这种情况下的复杂性。
  • 命名清晰的提交信息:使用清晰的提交信息有助于在解决冲突时理解每个提交的目的。
  • 保持冷静:在遇到冲突时,仔细阅读冲突提示并小心编辑文件,不要急于解决冲突以免引入新的问题。