克隆仓库 -- git clone
-- 克隆远端仓库到本地
git clone <git url>
-- 克隆远端仓库的指定分支到本地
git clone <git url> -b branchName
-- 克隆远端仓库到本地指定文件夹中
git clone <git url> flieName
提交到暂存区 -- git add
-- 将所有修改的文件都提交到暂存区
git add .
-- 将修改文件中指定的文件test.kt提交到暂存区
git add . ./test.kt
-- 将对应文件(text)下修改的内容提交到暂存区
git add ./test
提交到本地仓库 -- git commit
-- 将工作区内容提交到本地仓库,并添加提交信息:Exception repair
git commit -m "Exception repair"
-- 将工作区内容提交到本地仓库并覆盖上一次commit记录
## 如先执行 git commit -m "commit1" 提交了文件a,提交sha为hash1;再执行 git commit -m "commit2" --amend 提交文件b,提交sha为hash2。则a,b文件的最终commit 信息都是 "commit2",sha都是hash2
git commit -m "commit message" --amend
-- 将工作区内容提交到本地仓库并不填写commit内容
git commit --amend --no-edit
-- 跳过校验直接提交
git commit --no-verify -m "commit message"
-- 一次性将新增和修改提交到本地仓库(相当于 git add . + git commit -m "message")
git commit -am
提交到远程仓库 -- git push
-- 将本地当前分支推送到远程分支
git push
-- 将本地新建分支推送到远程并建立与远程上游的跟踪
git push --set-upstream origin branchName
-- 强制提交
## 一般用在代码回滚后
git push -f
拉取远程仓库 -- git pull
-- 拉取远程仓库并合并到本地仓库
## 相当于执行 `git fetch` + `git merge`
git pull
-- 使用 rebase 进行合并
git pull --rebase
切换分支 -- git checkout
-- 切换到已有本地分支
git checkout branchName
-- 切换到远程分支
git checkout origin/branchName
-- 基于当前本地分支创建新分支
git checkout -b branchName
-- 基于远程分支branch1创建新分支branch2并切换到branch2
git checkout origin/branch1 -b branch2
## 因当前创建的branch2关联的上游分支是 origin/branch1,所以在push时需要关联到远程branch2
git push --set-upstream origin branch2
-- 撤销工作区 test 的内容修改
## 危险操作,谨慎使用
git checkout -- <test>
-- 撤销工作区所有的内容修改
## 危险操作,谨慎使用
git checkout .
取消缓存 -- git restore
git restore 用于将改动从暂存区退回工作区
-- 将test.kt文件取消缓存,不会改变文件内容
git restore --staged test.kt
-- 将所有文件取消缓存
git restore --staged .
回滚代码 -- git reset
-- 撤销最近一次git add操作,不会改变文件内容
git reset HARD
-- 将某个commit从本地仓库退回到工作区(取消commit和add操作,不改变文件内容)
git reset --mixed <commit_sha>
-- 将某个commit从本地仓库退回到缓存区(取消commit操作,不取消add,不改变文件内容)
git reset --soft <commit_sha>
-- 取消某次commit的记录(取消commit和add,且改变文件内容)
git reset --hard <commit_sha>
查看工作区状态 -- git status
-- 查看当前工作区暂存区变动
git status
-- 以概要形式查看工作区暂存区变动
git status -s
-- 查询工作区中是否有 stash 缓存
git status --show-stash
查看commit日志 -- git log
-- 显示 commit 日志
git log
-- 以简要模式显示 commit 日志
git log --oneline
-- 显示最近 n 次的 commit 日志
git log -n
-- 显示 commit 及分支的图形化变更
git log --graph --decorate
分支管理 -- git log
-- 删除分支
git branch -D <branchName>
-- 重命名分支
git branch -M <老分支名> <新分支名>
-- 将本地分支与远程分支关联
git branch --set-upstream-to=origin/branchName
-- # 取消本地分支与远程分支的关联
git branch --unset-upstream-to=origin/branchName
其它常用命令
-- 初始化仓库
git init
-- 关联本地 git init 到远程仓库
git remote add origin <git url>
-- 新增其他上游仓库
git remote add <git url>
-- 移除与远程仓库的管理
git remote remove <git url>
-- 修改推送源
git remote set-url origin <git url>
-- 取消某次commit内容,但是保留commit记录
git revert <commit_sha>
-- 将所有文件取消缓存
git restore --staged .
-- 将本地某分支合并至当前分支
git merge <branchName>
-- 将远程某分支合并至当前分支
git merge <远程主机名> <branchName>
##使用 rebase 代替 merge
-- 将本地某分支合并至当前分支
git rebase <branchName>
-- 将远程某分支合并至当前分支
git rebase <远程主机名> <branchName>
-- 获取远程仓库特定分支的更新
git fetch <远程主机名> <分支名>
-- 获取远程仓库所有分支的更新
git fetch --all
##git cherry-pick可以选择某次 commit 的内容合并到当前分支
-- 将commit-sha1的变动合并至当前分支
git cherry-pick commit-sha1
-- 将多次commit变动合并至当前分支
git cherry-pick commit-sha1 commit-sha2
-- 将 commit-sha1 到 commit-sha5 中间所有变动合并至当前分支,中间使用..
git cherry-pick commit-sha1..commit-sha5
-- pick 时解决冲突后继续
pick git cherry-pick --continue:
-- 多次 pick 时跳过本次 commit 的 pick 进入下一个 commit 的 pick
git cherry-pick --skip
-- 完全放弃 pick,恢复 pick 之前的状态
git cherry-pick --abort
-- 未冲突的 commit 自动变更,冲突的不要,退出这次 pick
git cherry-pick --quit