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克隆远端项目
git clone <projectUrl>
git clone <projectUrl> <folderName>
git 克隆远程指定分支到本地
git clone -b <branchName> <projectUrl> <folderName>
分支操作
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推送本地分支到远端
带上-u (--set-upstream)参数其实就相当于记录了push到远端分支的默认值,这样当下次我们还想要继续push的这个远端分支的时候推送命令就可以简写成git push即可, 相当于建立了链接,就不用再指定远程分支了。
git push origin <branchName> (不会关联)
git push --set-upstream origin <branchName> (会关联)
git push -u origin <branchName> (会关联,简写)
git检出远端分支到本地,并切换到该分支
git checkout -b <localBName> <remoteBName>
git删除本地分支 不可在当前分支上删除当前分支
git branch -d <branchName>
git删除远端分支
git push origin --delete <branchName>
git更新远端分支列表
git remote update origin --prune
git remote update origin --p
查看所有未合并的分支
git branch --no-merged
文件操作
git查看文件状态
-s或--short查看简短的文件状态
git status
git丢弃工作区修改
git checkout .
git restore .
git checkout <fileName>
git restore <fileName>
git将工作区修改提交到暂存区
git add .
git add --all
git add <fileName>
git 将暂存区修改恢复到工作区
git reset HEAD
git restore --staged .
git reset HEAD <fileName>
git restore --staged <fileName>
git提交暂存区文件到本地仓库
git commit -m <注释>
git查看提交详情 <commitId>是该次提交的id,可在提交日志中查到,见下文代码日志。
git show <commitId>
git推送本地到远端
git push (分支已关联)
git push origin <branchName> (分支未关联)
git push --set-upstream origin <branchName> (第一次关联)
git push -u origin <branchName> (第一次关联,简写)
git将远程最新拉取到本地
git fetch
git fetch origin branchName
git合并分支 合并<branchName>分支代码到当前分支
git merge <branchName>
git拉取远端代码到本地并执行merge
git pull
git pull origin <branchName>
(`当在master分支执行`git pull`的时候,相当于在master分支执行`git fetch` 然后执行`git merge origin/master)
git移除文件
git rm <fimeName>
git重置文件名
git mv <oldFimeName> <newFileName>
代码日志
git打印操作记录
可以查看所有分支的所有操作记录,包括commit和reset的操作,包括已经被删除的commit记录。
git reflog
git打印提交记录
git log
git log --oneline // 将log信息简化为一行
git log filename 查看某个文件的commit记录
git log -p filename 查看文件每次提交的diff
git log --pretty=oneline filename 列出文件的所有改动历史
git show 提交生成的一次哈希值 filename 只查看某次提交的文件变化
如图1所示,第一行id是1fd5003,存在于本地仓库,还未提交到远程;第二行id是92196d3,已推送到远程仓库。
比较文件修改前后的差异
git diff 查看尚未暂存的文件更新了哪些部分
git diff <fileName> 查看尚未暂存的某个文件更新了哪些
git diff –cached 查看已经暂存起来的文件和上次提交的版本之间的差异
git diff –cached <fileName> 查看已经暂存起来的某个文件和上次提交的版本之间的差异
git diff <commitId> <commitId> 查看某两个版本之间的差异
git diff <commitId> :<fileName> <commitId> :<fileName> 查看某两个版本的某个文件之间的差异
代码回退
reset
如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
soft回退
回退代码到的那次提交,将该commitId之后提交的代码恢复到暂存区。
所以可以使用命令 git reset --soft 92196d3 来恢复92196d3之后的代码到暂存区,使得代码回退到 92196d3那次的提交状态。
git reset --soft <commitId>
mixed回退 回退代码到<commitId>的那次提交,将该<commitId>之后提交的代码恢复到工作区,
git reset --mixed <commitId>
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
revert
git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。 原文链接:blog.csdn.net/yxlshk/arti…
git revert -n <commitId>
当前分支应用指定提交
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 //不会删除已恢复的进度
<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
git代码提交规范
- feat : 提交新功能。
- fix : 修复了bug。
- docs : 只修改了文档。
- style : 格式化、 (比如修改空格、 调整代码格式, 未修改代码逻辑,缺少分号等)
- refactor : 代码重构, 既没修复bug也没有添加新功能。
- perf : 性能优化,提高性能的代码更改。
- test : 添加或修改代码测试。
- chore : 对构建流程或辅助工具和依赖库 (如文档生成等)的更改。