管理分支
# 查看本地git分支
git branch
# 删除本地分支
git checkout 本地其他某个分支
git branch -d <BranchName>
# 删除远程分支
git push origin --delete 远程分支名
# 查看本地分支关联的远程分支
git branch -vv
# 如果本地分支名称与远程分支相同时,直接git checkout分支名即可
例如git checkout release-1.15
# 查看本地和远程仓库的所有分支并根据指定条件搜索
git branch -a | grep xxx
# 基于当前分支来创建一个本地分支,推送到远程并关联
git checkout -b test
git push origin test
git branch --set-upstream-to=origin/test test
# 拉取master远程主干分支的代码并合并到当前分支
git pull origin master
commit
修改已提交的commit注释
1 # 数字2指倒数第2次以内,把需要修改的注释前面的pick换成edit
2 git rebase -i HEAD~2,保存后退出
3 # 再次修改注释
4 git commit --amend
5 # 确认修改注释完成
6 git rebase --continue
7 git push -f
把多次commit合并成一个
1 # 查看提交历史
2 git log --oneline
3 # 合并最近的5个commit
4 # 5次提交的commit倒序排列,最下面的是最近一次提交
5 # 修改第2-5行的第一个单词pick为s,保存退出
6 git rebase -i HEAD~5
7 # 修改最上面这条commit信息,删除下面的注释内容
8 git push -f
4个阶段的撤销更改
3个步骤
1. git add xxx把所有改动放入暂存区(已暂存)
2. git commit -m "comment"把所有改动从暂存区提交到本地仓库(已提交)
3. git push把所有改动从本地仓库推送到远程仓库(已推送)
查看差异
1 # 已修改,检查工作区和暂存区的差异
2 git diff
3 # 已暂存,检查暂存区和本地仓库的差异
4 git diff --cached
5 # 已提交,检查本地仓库和远程仓库的差异
6 git diff origin/master master
单步撤销修改
1 # 已修改,单独撤销本地修改
2 git reset --hard
3 # 已暂存,单独撤销commit+add
4 git reset --mixed
5 # 已提交,单独撤销commit
6 git reset --soft HEAD~1
7 # 已推送,回退到最开始
8 单独撤销commit -> 单独撤销commit+add -> 单独撤销本地修改 -> git push -f
合并单个commit到当前分支
1 git cherry-pick commit-id
2 # 解决冲突之后
3 git cherry-pick --continue
4 git push
更新fork的代码
1 # clone fork项目
2 git clone git@远程git仓
3
4 # 增加被fork的项目到远程分支列表中,命名为upstream
5 git remote add upstream git@远程git仓
6
7 # 核实远程分支列表
8 git remote -v
9
10 # 删除用git remote remove name
11 # 其中,name是远程分支的命名
12 git remote remove upstream
13
14 # 更新本地分支并强推到fork项目
15 # 1 拉取最新代码并合并
16 git fetch
17 git pull --rebase upstream master
18 # 2 查看冲突文件
19 git status
20 # 3 解决冲突后
21 git rebase --continue
22 git push -f
Patch
作用
把修改的地方保存到Patch文件中,需要时可以打上Patch,从而修改文件。
操作说明
通过git diff或者git format-patch生成的.patch文件有所不同。
通过git diff生成的文件不含有commit信息,可以指定文件生成patch,也可以指定单个commit或者多个commit生成。
指定文件:git diff Test.java > test.patch
所有文件:git diff > test.patch
指定 commit id 生成 patch:git diff 【commit sha1 id】 【commit sha1 id】 > 【diff文件名】
通过git format-patch生成的.patch文件含有commmit信息。一个commit对应一个patch文件。
当前分支所有超前master的提交:git format-patch -M master
某次提交以后的所有提交(不包括当前提交):git format-patch [commit id]
单次提交:git format-patch -1 07fe
git format-patch 生成的补丁文件默认从1开始顺序编号,并使用对应提交信息中的第一行作为文件名。如果使用了-- numbered-files选项,则文件名只有编号,不包含提交信息;如果指定了–stdout选项,可指定输出位置,如当所有patch输出到一个文件;可指定 -o指定patch的存放目录。
应用patch
git format-patch对应git am xx.patch
git diff对应git apply xx.patch