一些 Git 技巧。
Git Diff
- 普通的git diff命令默认对比的是没有加到索引中的文件。
恢复暂存区
如果已经将一些文件添加到暂存区后又后悔了,Git 提供了多个命令来实现这个功能,具体需要根据当时情况而定。
1
| git rm path/to/file --cached
|
- 这个命令将文件从暂存区索引中删除,但是仍然会将文件保留在工作目录。这比直接使用完全删除文件会安全一点。
Git Reset
1
| git reset --hard COMMIT_ID
|
Git Stash
``sh
git stash –include-untracked
1 2 3 4
| - 列出临时储藏区中的内容
```sh git stash list
|
历史记录
1
| git log --graph --decorate --oneline
|
: ```sh
git diff HEAD HEAD~2
1 2 3 4
| - 展示每个提交中更详细的更新信息,可以使用
```sh git log --patch
|
1
| git log --grep apples --oneline
|
1
| git log HEAD~5..HEAD^ --oneline
|
1
| git log branch_name..master --oneline
|
修复错误提交
- 删除前一次提交,并创建一个新的提交记录以替代之前的提交
- 会创建一个新的提交,让当前项目状态恢复到指定提交之前。
- 如果我们在修复问题时出现了误操作,例如不小心删除了不应该删除的文件。我们还是可以从版本库中恢复回来,因为 git 保存了所有修改的版本,包括被移除的提交。git reflog命令就是用来实现这个功能的。
提交之前撤销 git add
撤销最近一次代码提交
- 提交了错误的文件或一开始就遗漏了某些东西。下面这三步操作可以帮助你解决这个问题。
1 2
| git add -A . git commit -c ORIG_HEAD
|
- 你执行第一个命令时,Git会将HEAD指针(pointer)后移到此前的一次提交,之后你才能移动文件或作必要的修改。
- 然后你就可以添加所有的修改,而且当你执行最后的命令时,Git会打开你的默认文本编辑器,其中会包含上一次提交时的信息。如果愿意的话,你可以修改提交信息,或者你也可以在最后的命令中使用-C而不是-c,来跳过这一步。
其他
1
| git commit --amend --author="vitan <ivitan95@gmail.com>" --no-edit
|
- 修改错误的提交信息
- 必须确保没有对当前的代码库(working copy)做修改,否则这些修改也会随之一起提交。
1
| git commit --amend -m ”YOUR-NEW-COMMIT-MESSAGE”
|
- 假如你已经将代码提交(git commit)推送(git push)到了远程分支,那么你需要通过下面的命令强制推送这次的代码提交。
1
| git push <remote> <branch> --force
|
Via