config信息配置
git查看一些配置
git config --list
git config -l
git查看全局配置
git config --global --list
git config --global --l
通过添加具体项查看具体配置,如下:
git 查看全局用户名
git config --global user.name
git 查看全局用户邮箱
git config --global user.email
git 修改全局用户名
<userName>
是新的用户名
git config --global user.name <userName>
git 修改全局邮箱
<userEmail>
是新邮箱地址
git config --global user.email <userEmail>
克隆项目
git克隆远端项目
<projectUrl>
是项目地址
git clone <projectUrl>
分支操作
git查看本地分支
git branch
git查看所有分支
git branch -a
git创建分支
<branchName>
是分支名字,下同。
git branch <branchName>
git切换分支
git checkout <branchName>
git switch <branchName>
git创建并切换分支
git checkout -b <branchName>
git switch -c <branchName>
git推送本地分支到远端
git push origin <branchName>
git push --set-upstream origin <branchName>
git检出远端分支到本地
git checkout -b <localBName> <remoteBName>
git删除本地分支
不可在当前分支上删除当前分支
git branch -d <branchName>
git删除远端分支
git push origin --delete <branchName>
文件操作
git查看文件状态
git status
git丢弃工作区所有修改
git checkout .
git restore .
git将工作区所有修改提交到暂存区
git add .
git add --all
git 将暂存区所有修改恢复到工作区
git reset HEAD
git提交暂存区文件到本地仓库
git commit -m <注释>
git查看提交详情
<commitId>
是该次提交的id,可在提交日志中查到,见下文代码日志。
git show <commitId>
git推送本地仓库到远端
git push
git 拉取远端代码
git fetch
git合并分支
合并<branchName>
分支代码到当前分支
git merge <branchName>
git拉取远端代码到本地并执行merge
git pull
git pull = git fetch + git merge
当在master分支执行git pull
的时候,相当于在master分支执行git fetch
然后执行git merge origin/master
代码日志
git打印操作记录
可以查看所有分支的所有操作记录,包括commit和reset的操作,包括已经被删除的commit记录。
git reflog
git打印提交记录
git log
git log --oneline // 将log信息简化为一行
如图1所示,第一行id是1fd5003
,存在于本地仓库,还未提交到远程;第二行id是 92196d3
已经提交到远程仓库。下文用<commitId>
代表该次提交id
代码回退
git soft回退
回退代码到的那次提交,将该commitId
之后提交的代码恢复到暂存区。
git reset --soft <commitId>
所以可以使用命令 git reset --soft 92196d3
来恢复92196d3
之后的代码到暂存区,使得代码回退到 92196d3
那次的提交状态。
git mixed回退
回退代码到<commitId>
的那次提交,将该<commitId>
之后提交的代码恢复到工作区,
git reset --mixed <commitId>
git hard 回退
退代码到<commitId>
的那次提交,丢弃<commitId>
之后的所有提交代码。
git reset --hard <commitId>
在开发过程中,如果提交了本地仓库还未push,需要撤销本地仓库的提交,如图 1状态所示,可以省去git log
查找<commitId>
的时间,直接使用远端分支名回退本地仓库代码到暂存区或工作区,或者直接丢弃和远端分支保持一致。
git reset --soft origin/master
git reset --mixed origin/master
git reset --hard origin/master
当前分支应用指定提交
git cherry-pick合并指定提交代码
相比于git merge
将一个分支的所有变动,合并到另一个分支,cherry-pick
可以将一个分支的某一个或几个提交合并到另一个分支上。
git cherry-pick <commitId>
假如有俩种场景:
场景1:俩个不同的功能分支,第二个分支需要用到第一个分支的某次提交,就可以在第一个分支使用git log
查询到需要应用到第二个分支上的<commitId>
,再切换到第二个分支,使用cherry-pick
该 <commitId>
实现第一个分支的这次提交应用到第二个分支上。
场景2:假如在这一个分支上开发完了功能,准备提交,发现开发错分支了,应该是在另一个分支上开发,这时候只需要将这个分支的修改代码commit但是不push,git log
记录下此次提交的,切换到另一个分支上,使用cherry-pick
实现该合并到本分支,再切回开发错的分支丢弃掉开发的代码,就可以实现代码的转移了。
保存进度
git保存当前工作进度
保存当前工作进度,会把暂存区和工作区的改动保存起来,执行完这个命令后,当前工作区变成一个干净的工作区,没有任何改动。
git stash
git显示保存进度的列表
git stash list
git 恢复最新的进度到工作区
默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop //会删除已恢复的进度
git stash apply //不会删除已恢复的进度
git恢复最新的进度到工作区和暂存区
尝试将原来暂存区的改动还恢复到暂存区
git stash pop --index //会删除已恢复的进度
git stash apply --index //不会删除已恢复的进度
git恢复指定的进度到工作区
<stashId>
是通过git stash list
命令得到的,如图2所示,0和1都是<stashId>
git stash pop <stashId> //会删除已恢复的进度
git stash apply <stashId> //不会删除已恢复的进度
git删除存储进度
git stash drop //删除最新的存储进度
git stash drop <stashId> //删除指定的存储进度
git stash clear // 删除所有存储的进度。
使用场景:假如正在一个分支开发代码,需要临时切换分支处理问题,希望处理完另一个分支的问题提交后,再切回原来的开发分支继续进行开发。
多分支同步开发
如果需要同时运行俩个分支的代码,之前的办法是克隆多个仓库,现在 git worktree
可以解决这个问题,实现一个 git 仓库连接多个工作目录,进行同步开发。
基于<branch>
分支新建一个路径是 <path>
的目录
git worktree add <path> <branch>
列出当前仓库已经存在的所有 worktree
的详细情况
git worktree list
清除 worktree 的信息
使用完直接删除关联目录就好,在删除 worktree 的关联目录之后,清除 worktree 的信息。从而使一个 worktree 完整的删除。
git worktree prune