git
提交本地仓库
git init
git remote add origin git@xxx.git
git add .
git commit -m "xxx"
git push -u origin master
管理分支
# 查看本地git分支
git branch
# 删除本地分支
git checkout 本地其他某个分支
git branch -d <BranchName>
# 删除远程分支
git push origin -d 远程分支名
# 查看本地分支关联的远程分支
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 merge origin/master
# 本地删除远程不存在的分支
git remote prune origin
commit
修改已提交的commit注释
# 数字2指倒数第2次以内,把需要修改的注释前面的pick换成edit
git rebase -i HEAD~2,保存后退出
# 再次修改注释
git commit --amend
# 确认修改注释完成
git rebase --continue
git push -f
把多次commit合并成一个
# 查看提交历史
git log --oneline
# 合并最近的5个commit
# 5次提交的commit倒序排列,最下面的是最近一次提交
# 修改第2-5行的第一个单词pick为s,保存退出
git rebase -i HEAD~5
# 修改最上面这条commit信息,删除下面的注释内容
git push -f
打tag
git tag -a v1.0 -m "xxx"
git push origin v1.0
git show v1.0
4个阶段的撤销更改
3个步骤
1. git add xxx把所有改动放入暂存区(已暂存)
2. git commit -m "comment"把所有改动从暂存区提交到本地仓库(已提交)
3. git push把所有改动从本地仓库推送到远程仓库(已推送)
查看差异
# 已修改,检查工作区和暂存区的差异
git diff
# 已暂存,检查暂存区和本地仓库的差异
git diff --cached
# 已提交,检查本地仓库和远程仓库的差异
git diff origin/master master
单步撤销修改
# 已修改,单独撤销本地修改
git reset --hard
# 已暂存,单独撤销commit+add
git reset --mixed
# 已提交,单独撤销commit
git reset --soft HEAD~1
# 已推送,回退到最开始
git reset --hard HEAD~1
git push -f
单个文件撤销修改
# 已修改,单独撤销本地修改
git checkout -- 文件名
合并单个commit到当前分支
git cherry-pick commit-id
# 解决冲突之后
git cherry-pick --continue
git push
更新fork的代码
# clone fork项目
git clone git@远程git仓
# 增加被fork的项目到远程分支列表中,命名为upstream
git remote add upstream git@远程git仓
# 核实远程分支列表
git remote -v
# 删除用git remote remove name
# 其中,name是远程分支的命名
git remote remove upstream
# 更新本地分支并强推到fork项目
# 1 拉取最新代码并合并
git fetch
git pull --rebase upstream master
# 2 查看冲突文件
git status
# 3 解决冲突后
git rebase --continue
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
保存用户名和密码
设置cache模式,默认15分钟
git config --global credential.helper cache
cache自定义超时时间30分钟
git config --global credential.helper 1800
删除设置
git config --global --unset credential.helper