Git 使用方法
1. 比较两个版本之间的区别
1 2 3 4 5 6 7 8
| 1. 查看当前没有 add 的内容修改 git diff 2. 查看已经 add 但没有 commit 的改动 git diff --cached 3. 查看任意两个版本之间的改动 git diff 版本1 版本2 4. 查看两个版本的 src 文件夹的区别 git diff 版本1 版本2 src
|
2. 提交
1 2 3 4 5
| 1. 查看commit内容 git show commit_id
2. 查看最近n次提交的修改,指定n为1则可以查看最近一次修改的内容 git log -p -n
|
3. 子项目
1 2 3 4 5 6 7 8 9 10
| # 在 clone 的时候就拉取子模块 git clone --recurse-submodules xxx git clone --recursive xxx
# 子项目初始化 git submodule update --init --recursive
# 子项目更新 git submodule foreach --recursive git checkout master git submodule foreach git pull
|
4. 分支
1 2 3 4 5 6
| # git 分支重命名 git branch -m old_branch_name new_branch_name
# 合并 dev 分支上的某一个 commit 到 master git checkout master git cherry-pick commit-id
|
5. 删除具体某个 commit 方法
1 2 3 4
| 1. git log # 获取 commit 信息 2. git rebase -i <commit-id> # commit-id 是要删除的 commit 的之前的那个 commit-id 3. 编辑文件,将要删除的 commit 之前的单词改为 drop 4. 保存文件即可
|
6. 合并多个 commit
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 第一种方法 # 从 HEAD 版本开始往过去数 3 个版本 git rebase -i HEAD~3
# 第二种方法 # 指定要合并的 commit 之前的 commit(不参与合并) git rebase -i <commit-id> 执行完会弹出一个窗口,将需要合并的 commit 前的 pick 改为 squash 或者 s。之后保存关闭即可。 pick 3ca6ec3 '注释**********' s 1b40566 '注释*********' s 53f244a '注释**********'
然后会出现编辑窗口,需要编辑提交信息,编辑完保存退出即可。
|
如果想放弃这次压缩,可以执行:git rebase --abort
7. 删除 git 暂存区的文件
1 2
| git rm -r --cached 文件名 git reset HEAD 文件名 # 回退到最近一次 push 后的状态并清空暂存区,但是工作区修改的内容ye hui
|
8. 将本地分支关联到远程分支
1 2 3 4
| # 设置 remote git remote add origin git@... # 将本地分支关联到远程分支 git branch --set-upstream-to=origin/dev dev
|
9. 比较两次 commit 之间的差异文件
1 2 3 4
| # 查看 hash1 和 hash2 两次 commit 之间的差异 git diff hash1 hash2 --stat # 查看 hash1 和 hash2 两次 commit 中 file_name 的差异 git diff hash1 hash2 file_name
|
10. 只 cherry-pick 一个 commit 中某几个文件而不是全部
1 2 3 4 5 6 7 8
| # -n,--no-commit 不自动提交 git cherry-pick -n commit_id
# 如果 commit 里面有多个文件,执行此命令后需要先 unstage 并恢复不想要改动的文件 git reset HEAD <file_name> git checkout -- <file_name>
# 这种方法会丢弃原作者及其相关的 commit message
|
11. revert 操作
1 2 3 4
| # 撤销指定的提交 git revert <commit> # 这是一个 前开后闭 区间,即不包括 commit-1,但包括 commit-2 git revert --no-commit <commit-1>..<commit-2>
|