Git 使用 Tips

Git 使用 Tips

一些 Git 技巧。

Git Diff

  • 将自己的分支和其他分支进行对比

    1
    git diff branch1 branch
  • 对比暂存区和当前的 HEAD

    1
    git diff --cached
    • 普通的git diff命令默认对比的是没有加到索引中的文件。

恢复暂存区

如果已经将一些文件添加到暂存区后又后悔了,Git 提供了多个命令来实现这个功能,具体需要根据当时情况而定。

1
git rm path/to/file --cached
  • 这个命令将文件从暂存区索引中删除,但是仍然会将文件保留在工作目录。这比直接使用完全删除文件会安全一点。
    1
    git rm file -f

Git Reset

  • 恢复已经提交的改动

    1
    git reset
    • 这个命令可以完成许多不同的行为,因此需要按照实际场景进行使用。
  • 去除所有修改,包括索引中的内容和工作目录中的修改

    1
    git reset --hard
  • 重置索引

    1
    git reset --mixed
    • 这也是git reset命令的默认行为。混合的重置会保留当前工作目录中的改动。
  • 仅仅修改分支的 HEAD

    1
    git reset --soft
  • 恢复到指定的提交版本。

    1
    git reset --hard COMMIT_ID

Git Stash

  • 临时保存未追踪的文件
    ``sh
    git stash –include-untracked
    1
    2
    3
    - 列出临时储藏区中的内容
    ```sh
    git stash list

历史记录

  • 查看项目以及特定文件的变更情况
    ``sh
    git log –graph –decorate –oneline

    1
    2
    3
    4
    5
    6
    7
    - 它可以用于展示经过修饰的提交历史。

    ---
    - git log 命令可以显示 HEAD、所有提交的 ID 以及分支信息。有了这些信息之后
    - 显示更详细的信息
    ```sh
    git show COMMIT_ID/HEAD/BRANCH
  • 查看谁对一个文件做了哪些改动

    1
    git blame path/to/file
  • 对比当前 HEAD 和前两个提交
    1
    git diff HEAD HEAD~2
  • 展示每个提交中更详细的更新信息,可以使用

    1
    git log --patch
  • 查看包含关键字“apple”的提交

    1
    git log --grep apples --oneline
  • 查看历史提交记录中两个点之间的提交历史

    1
    git log HEAD~5..HEAD^ --oneline
  • 对于分支可以使用

    1
    git log branch_name..master --oneline

修复错误提交

  • 删除前一次提交,并创建一个新的提交记录以替代之前的提交

    1
    git commit --amend
  • 恢复一个有问题的提交

    1
    git revert COMMIT_ID
    • 会创建一个新的提交,让当前项目状态恢复到指定提交之前。
    • 如果我们在修复问题时出现了误操作,例如不小心删除了不应该删除的文件。我们还是可以从版本库中恢复回来,因为 git 保存了所有修改的版本,包括被移除的提交。git reflog命令就是用来实现这个功能的。

提交之前撤销 git add

  • 移除一个文件

    1
    git reset <文件名>
  • 所有文件

  • 从暂存区移除所有没有提交的修改

    1
    git reset

撤销最近一次代码提交

  • 提交了错误的文件或一开始就遗漏了某些东西。下面这三步操作可以帮助你解决这个问题。

    1
    git reset --soft HEAD~1
  • 对工作文件进行必要的更改

    1
    2
    git add -A .
    git commit -c ORIG_HEAD
  • 你执行第一个命令时,Git会将HEAD指针(pointer)后移到此前的一次提交,之后你才能移动文件或作必要的修改。

  • 然后你就可以添加所有的修改,而且当你执行最后的命令时,Git会打开你的默认文本编辑器,其中会包含上一次提交时的信息。如果愿意的话,你可以修改提交信息,或者你也可以在最后的命令中使用-C而不是-c,来跳过这一步。

其他

  • 修改已经提交的作者和邮箱

    1
    git commit --amend --author="vitan <[email protected]>" --no-edit
  • 修改错误的提交信息

    • 必须确保没有对当前的代码库(working copy)做修改,否则这些修改也会随之一起提交。
      1
      git commit --amend -m ”YOUR-NEW-COMMIT-MESSAGE”
  • 假如你已经将代码提交(git commit)推送(git push)到了远程分支,那么你需要通过下面的命令强制推送这次的代码提交。

    1
    git push <remote> <branch> --force

Via


  GitGithub

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×