git常用命令汇总

246 阅读8分钟

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打印操作记录

可以查看所有分支的所有操作记录,包括commitreset的操作,包括已经被删除的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但是不pushgit 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 : 对构建流程或辅助工具和依赖库 (如文档生成等)的更改。