git常用命令及概念对比

查看日志

git config --list 查看git的配置

git status 查看暂存区和工作区的变化内容(查看工作区和暂存区有哪些修改)

git log 查看当前分支的commit 记录

git log -p commitID详细查看commitID的具体内容

git log -L :funcName:fileName 查看fileName文件中funcName函数的修改历史

git log --pretty=oneline 简易的查看commit 记录(直接用git log --oneline更方便一些)

git log --graph --pretty=oneline --abbrev-commit 查看分支合并图

git diff file.txt 比较工作区和暂存区内file.txt 的区别

git diff HEAD -- file.txt 比较查看版本库和工作区中的file.txt的区别

git diff --cached file.txt 比较暂存区和本地仓库

git reflog 用在回退时的场景, 当发生版本回退时,git log只能看到HEAD指针的祖先。而git reflog可以看到左右commit 记录

git show commitID 查看commitID这次提交的详细内容

本地仓库

git add file.txt 添加文件file.txt到暂存区 (也可以用git add . 将当前文件夹中所有修改都添加到暂存区)

git commit -m "xxx" 提交暂存区的内容到本地仓库 ,并添加评论"xxx", m是message的缩写

git commit --amend 上一次commit 被reviewer拒了后,做出修改后提交,要加--amend 参数

拉取远程仓库内容

git pull 用远程分支更新本地分支内容(类似于SVN中的update操作)

git pull origin master:dev 将远程库origin中的master 分支内容,更新到本地的dev分支上(如果是使用git pull origin master, 是将远程库origin中的master 分支内容,更新到当前分支上)

git clone与git pull的区别:git clone是复制一个远程库到本地,生成一个本地仓库。git pull是拉取远程库中的分支,合并到本地库中,git pull = git fetch +git merge

推送

git push -u origin master 将本地的当前分支master推送到远程(将本地库的内容推送到远程)(第一次运行,由于远程库是空的,要加-u参数,后续不用加该参数)

git push origin master 将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。

git push origin v1.0 将v1.0这个标签推送到远程

git push origin --tags 将本地的标签一次性全部推送到远程

git push origin :ref/tags/v0.9 删除远程上的标签v0.9

git clone git@github.com:someoneAccount/repoName 克隆远程库repoName到本地

分支

git branch 查看本地所有分支

git branch -a 查看远程和本地的所有分支

git branch -d dev 删除dev分支

git branch -D 分支名 用-D参数来删除一个没有被合并过的分支

git checkout -- file.txt 用暂存区内的file.txt替换到工作区内的file.txt(如果暂存区是空的,就用版本库中file.txt替换掉工作区的file.txt)

git checkout xxx 切换到xxx分支

git checkout -b dev 创建一个新分支dev,并切换到该分支(该命令相当于两个命令:git branch dev和git checkout dev)

存贮

git stash 将当前分支的工作现场储藏起来,等以后回复现场后继续工作

git stash list查看当前分支保存起来的工作现场

git stash pop 恢复工作现场(相当于两个命令:git stash apply 和git stash drop)

git stash apply stash@{0} 恢复0号工作现场

git clean 清除untracked files

标签

git tag v1.0 给当前分支打上标签v1.0

git tag 查看所有标签

git tag v1.0 commitId 给commitId这个提交打上标签v1.0

git show v1.0 查看v1.0这个标签内容

git tag -d v0.1 删除v0.1这个本地的标签

合并

git rebase master

将当前分支的修改,在master分支上重新实现一下(rebase叫做变基, 就是把当前分子的根基改变一下)

git rebase master

git merge master

将master分支合并到当前分支,合并的步骤是将master 的多次提交合并成一次新的提交,然后再将这个新的提交实现在当前分支上。

git merge master

git merge dev 将dev分支合并到当前分支

git merge --no-ff -m "comments xxxx" dev 以no-ff的形式合并dev分支到当前分支

复制一个特定的提交到当前分支

用途:修复bug用:在某一个分支上已经修复了bug,将该提交内容commitId应用到当前的分支

git cherry-pick commitId

撤销操作

git restore

git restore --staged file 撤销git add操作,就是把文件从缓存区移动到工作区.(针对暂存区的操作)

git rm

git rm file.txt 然后git commit 从版本库中删除file.txt(本地工作区内删除,直接用rm file.txt即可)

git reset

回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f

git reset HEAD file.txt 清空暂存区(适用情况:写了一些胡话,已经提交到暂存区,要撤销), 其实是拉去本地仓库中最近一次提交(HEAD指针指向)到暂存区,工作区内容没有改变。

git reset --hard HEAD^ 回退到上一个版本(撤销git commit,同时也撤销git add和 工作区内容)

git reset --soft HEAD^ 撤销git commit,但不撤销git add (工作区内容依旧保持)

git revert

是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了

git revert commit_id

更换仓库

git remote -v 查看远程库信息(也可以用git remote 查看简易的远程库信息)

git remote rm origin 删除远程库

git remote add origin git@github.com:yourAccount/repoName 将远程仓库repoName与本地仓库相关联,并将远程仓库命名为origin

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
Winlifes3 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师3 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端