日常开发中Git的常用命令

346 阅读4分钟

克隆仓库 -- 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