参考书目
复杂需求
1.git log获取commit信息
2.git rebase -i (commit-id)
3.编辑文件,将要删除的commit之前的单词改为drop
4.保存文件退出大功告成
5.git log查看
git merge commit-id
对于多分支的代码库,将特定的几个提交移到另一个分支是常见需求
git cherry-pick <commitHash> 将指定的提交commitHash,应用于当前分支
git cherry-pick feature 表示将feature分支的最近一次提交,转移到当前分支
git cherry-pick <HashA> <HashB> 转移多个commit
git cherry-pick A..B 转移从 A 到 B 的所有提交. 注意不包含提交 A 如果要包含提交 A使用git cherry-pick A^..B
- 直接将head 定位到某个commit,放弃其他修改
git reset --hard <提交的哈希值>
git blame path-to-file
git archive --format <format> --output <filename> <ref>
<ref>可以是一个分支、commit hash 或者一个标签。查看详情
可以使用不同格式(zip或tar)来压缩特定引用的跟踪文件
git add -p
命令后 加 -n/--dry-run
commit 为 --no-verify
git commit --amend -m "<new commit message>"
git commit --amend --author="newName <newEmail>"
git rebase 或者 git filter-branch
# git rebase 模式
git rebase -i -p 76892625a7b126f4772f8d7e331ada3552c11ce1
# 弹出编辑器,在需要修改的 commit 处 由 picked 改变为 edit ,然后 wq 退出 vim;
git commit --amend --author 'newName <newEmail>'
# 执行后即变更了相应的 author 和 email
git rebase --continue
git show <commitHash>:<file>
git submodule add https:
1.会将该仓库拉下来,重命名为 dir/subdir_rename
2.会改变如下文件
.gitmodules
dir/subdir_rename
本地切到子目录下,git pull
然后在 顶层目录下 git add ,git commit , git push
其本质是做了如下修改
diff --git a/dir/subdir_rename b/dir/subdir_rename
index 3cddb5f..7c81677 160000
--- a/dir/subdir_rename
+++ b/dir/subdir_rename
@@ -1 +1 @@
-Subproject commit 3cddb5f9ac9fa71d393352f130dbc2294e8a4099
+Subproject commit 7c816774822aaf0659beac10346184ef8a3c8dcc
默认不拉子仓库,然后用下面的命令在顶层运行,拉取子仓库
git submodule update --init