Git 使用场景速查¶
我想要撤销刚才的一个提交¶
此时如果未push到远程,撤回提交用¶
git reset --soft HEAD~1
此时如果已经push到远程¶
先撤回推送到远程的提交:
git reset --soft <commit ID>然后撤回本地的提交:
git reset --soft HEAD~1再强制推送到远程:
git push origin main --force
我想要合并时接受所有远程的修改,不保留所有本地更改¶
确保你在正确的分支。
git checkout <branch name>拉取远程更改。
git fetch origin.重置到远程分支。
git reset --hard origin/<branch name>
误将最新的一个提交撤回了,此时本地还有未提交的更改,如何解决?¶
查看
git reflog。使用
git stash保存当前更改。git stash push -m <stash message>。此时会将所有更改保存到给 git 的 stash 中。执行
git cherry-pick <你想要恢复的commit id>。还原提交到 stash 中的更改。
git stash pop
Note
选择一个commit 应用到当前分支。git cherry-pick <cimmit id>。
我想用dev分支的a.c文件覆盖main分支的a.c文件,如何做?¶
切换到 main 分支。
git checkout main。替换
git restore --source=dev a.c
我想比较main分支和dev分支有多少文件差异¶
输入
git diff main dev --stat
输出
1396@work03 xs9933.sdk]$ git diff main dev --stat
.gitignore | 1 +
build/Makefile | 16 +-
include/ni_comm_mci.h | 8 +-
include/sdk_mci.h | 17 +-
sample/build/Makefile | 3 +-
sample/include/cmd.h | 1 +
sample/include/sample_comm_mci.h | 2 +-
sample/include/sample_reg_cfg.h | 5 +-
sample/src/i2c_rw.c | 94 +++---
sample/src/sample_comm_mci.c | 339 +++++++++++++++-----
sample/src/sample_main.c | 125 ++++++--
src/mci.c | 264 +++++++++++-----
src/mci.h | 102 ++++--
src/mci_data.c | 1257 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
src/mci_data.h | 62 +++-
src/mci_drv.c | 2821 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
src/mci_drv.h | 26 +-
17 files changed, 4237 insertions(+), 906 deletions(-)
[1396@work03 xs9933.sdk]$
我想要快速查看远程是否更新¶
git fetch origin
# 查看当前分支是否领先/落后远程(粗略查看)
git status
# 查看远程新增了哪些提交(详细查看)
git log HEAD..origin/main --oneline