Skip to content

工作中用到的git命令总结 #10

@Turing724

Description

@Turing724

git stash

将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录

  1. git stash: 保存当前工作进度,将工作区和暂存区恢复到修改之前

  2. git stash save 'xxx' : 作用同上 可添加备注

  3. git stash list: 查看所有保存的记录列表

  4. git stash show: 查看当前工作进度哪些文件做了改动
    image.png

  5. git stash show -p: 查看文件内改动的详情
    image.png

  6. git stash pop stash@{num}: 恢复工作进度到工作区,此命令的stash@{num}是可选项,在多个工作进度中可以选择恢复,不带此项则默认恢复最近的一次进度相当于git stash pop stash@{0}

  7. git stash apply stash@{num}: 恢复工作进度到工作区且该工作进度可重复恢复,此命令的stash@{num}是可选项,在多个工作进度中可以选择恢复,不带此项则默认恢复最近的一次进度相当于git stash apply stash@{0}

  8. git stash drop stash@{num}: 删除一条保存的工作进度,此命令的stash@{num}是可选项,在多个工作进度中可以选择删除,不带此项则默认删除最近的一次进度相当于git stash drop stash@{0}

  9. git stash clear: 删除所有保存的工作进度。

  10. git stash branch: 从最新的stash创建分支。
    应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
    发生冲突时,需手动解决冲突。

git cherry-pick

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见的需求。

分两种情况:

  • 需要另一个分支的所有代码变动,那么就采用合并(git merge).
  • 只需要部分代码变动(某几个提交),这时可以采用 Cherry-pick。
  1. git cherry-pick: 将指定的提交(commit)应用于其他分支。
// 将指定的提交 commitHash ,应用于其他分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样
$ git cherry-pick <commitHash>

git cherry-pick命令的参数,不一定是提交哈希值,分支名也是可以的,表示转移该分支的 最新提交

$ git cherry-pick master // 将 master 分支的最近一次提交,转移到当前分支
  1. git cherry-pick : 一次转移多个提交至当前分支
  2. git cherry-pick A..D: 将从A到D的提交哈希值批量转移至当前分支

git branch

  1. git branch : 查看当前分支
  2. git branch -v : 查看本地分支
  3. git branch -r : 查看远端分支
  4. git branch -a : 查看所有分支
  5. git branch -m xxxxx : 修改分支名称
  6. git branch -vv : 查看本地分支是否关联远端
  7. git branch --set-upstream-to=origin/<分支名> : 关联远端分支 可简写为 git branch -u origin/<分支名>

git clean

  1. git clean -fd: 删除当前目录下没有被track过的文件和文件夹

git push

  1. git push --force: 表示将目前自己本机的代码库推送到远端,并覆盖 可简写为git push -f (慎重使用!!!!)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions