乐趣区

关于前端:工作中常用的git命令

明天加班,顺便写下 Git 根底配置以及罕用的命令,亲自尝试

Git 配置

理解版本控制

什么是版本控制? 我真的须要吗? 版本控制是一种记录若干文件内容变动,以便未来查阅特定版本订正状况的零碎。

什么是分布式版本控制系统分布式版本控制系统(Distributed Version Control System,简称 DVCS)。

在这类零碎中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库残缺地镜像下来。这么一来,任何一处协同工作用的服务器产生故障,预先都能够用任何一个镜
像进去的本地仓库复原。因为每一次的提取操作,实际上都是一次对代码仓库的残缺备份

Git 常用命令

git- 系统配置
git config -l
git-global 配置
git config --global --list
# 能够设全局专用辨认的 邮箱和用户名
git config --global user.name 'xxxxxx'
git config --global user.email 'xxxxx@xxx.com'
我的项目独自 git 配置
# 查看
git config --list
# 为我的项目设置独自的 user.name 和 user.email
git config user.name 'xxxxxx'
git config user.email 'xxxxx@xxx.com'

Git 初始化

本地初始化
git init
近程拉取
git clone 近程仓库地址

本地仓库与近程仓库的关联

# 本地 - 建设关联 - 近程
git remote add origin 近程仓库地址
# 本地 - 勾销关联 - 近程
git remote rm origin

Git 保留和提交

查看状态
git status
查看所有文件批改详情
git diff HEAD
查看指定文件的批改详情
git diff HEAD ./README.md
增加保留

“.”: 所有批改文件

git add .
或
git add ./home.vue
增加保留阐明(提交到本地仓库)
git commit -m '对这次保留增加阐明形容'
拉取代码

多人合作开发的时候,提交之前先拉取下代码,解决可能将来的抵触

git pull origin 分支名
提交代码
git push origin 分支名

Git 提交日志

查看提交记录

查看已经的提交记录
能够显示所有提交过的版本信息,不包含曾经被删除的 commit 记录和 reset 的操作

git log --pretty=oneline
管制显示条数
git log -30 --pretty=oneline
图形化展现查看以后分支的版本演变信息
git log --graph
按作者名字查看提交记录
git log --author="John"
搜寻提交历史,依据关键词
git log -S 关键词
按日期
git log --after="2023-2-1"
搜寻过滤合并提交
git log --no-merges
or
git log --merges
按提交信息

比如说,你的团队标准要求在提交信息中包含相干的 issue 编号,你能够用上面这个命令来显示这个 issue 相干的所有提交

git log --grep="JRA-224:"
查看以后 版本标记位

git reflog 是 Git 操作的一道平安保障,它可能记录简直所有本地仓库的扭转,包含所有分支的 commit 提交,以及曾经被删除的 commit

git reflog

Git 回退到某个版本

回退到上一个版本
git reset --hard HEAD^ # 回退上一个版本
git reset --hard HEAD~3  # 回退上上上一个版本 
git reset --hard bae128  # 回退到某个版本回退点之前的所有信息。

HEAD 阐明:

  • HEAD 示意以后版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推 …

能够应用 ~数字示意

  • HEAD~0 示意以后版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推 …

Git 分支指令

查看素有分支
git branch -a
切换分支
git checkout 分支名
创立本地分支
git branch 新分支名
# 创立并切换到新分支
git checkout -b 新分支名
依据指定版本号创立分支
git checkout -b 分支名 提交 ID
推送本地分支到近程仓库
git push origin 新分支名
删除本地某个分支

这是一个“平安”操作,因为 Git 会阻止咱们删除具备未合并更改的分支

git branch -d 分支名
强制删除本地某个分支

即便它有未合并的更改。如果想永恒抛弃与特定开发线相干的所有提交,则能够应用此命令

git branch -D 分支名
删除近程仓库的某个分支
git push origin --delelte 分支名
显示所有近程仓库

查看仓库源名称

git remote -v
更新近程分支列表
git remote update origin(仓库源名称) --prune
推送所有分支到近程仓库
git push origin(仓库源名称) --all 
强行推送以后分支到近程仓库,即便有抵触
git push origin(仓库源名称) --force

Git 合并分支

想将 develop 分支合并到 master 分支

git checkout master # 首先切换到 master 分支上
git pull origin master # 如果是多人开发的话 须要把近程 master 上的代码 pull 下来
git merge --no-ff develop # 而后咱们把 develop 分支的代码合并到 master 上

对于 git merge develop 和 git merge –no-ff develop 的区别

git merge develop

==== >  后果就会变成

          A---B---C develop
         /         master
D---E---F 

执行此句话后,因为 develop 就在 master 的上游,所以间接挪动了 master 的指针,master 和 develop 都指向了 C

而如果执行了 git merge –no-ff feature 的话,是上面的后果:

git merge --no-ff develop

==== >  后果就会变成

          A---B---C develop
         /         \
D---E---F-----------G master

因为 --no-ff 禁止了快进,所以会生成一个新的提交,master 指向 G。

从合并后的代码来看,后果其实是一样的,区别就在于 –no-ff 会让 Git 生成一个新的提交对象,通常咱们把 master 作为主分支,下面寄存的都是比较稳定的代码,而 feature
是用来开发个性的,下面会存在许多系统的提交,快进式合并会把 feature 的提交历史混入到 master 中,搅乱 master 的提交历史

Git 标签

查看 tag 列表
git tag -l
本地增加 tag
git tag -a 标签名 -m '版本阐明' 
查看 tag 信息
git show 标签名
本地删除某个 tag
git tag -D 标签名
or
git tag -d 标签名
推送本地 tag 到近程仓库
git push origin 标签名
删除近程仓库 tag
git push origin --delete 标签名 

小记

  • cmd 中应用 log 命令,不会主动退出,须要手动按下英文状态下的 q 退出

Git 常见谬误

1、批改最初一次提交音讯 – 提交音讯写错了

(按 i 进行编辑,编辑后,按 ESC,如果保留退出应用 :wq,只退出输出 :q,如果出错,退出不保留应用 :qa!)

git commit --amend #该命令将关上编辑器,并容许更改最初一次提交音讯
2、Git 撤回 commit,但未 push 的内容
git log
git reset e102c05227bca7517554777f589f130305b69427 #保留提交之前的更改到工作区
3、让单个文件回退到指定版本
git log vue.config.js #拿到文件提交记录 ID
git checkout e102c05227bca7517554777f589f130305b69427(commitID) vue.config.js  #将文件还原到你想要还原的版本
4、解决抵触

只有所有开发者都恪守这个规定,那么解决抵触是一件非常容易的事件

  1. 例如我的分支叫做 dev 分支。我把代码批改实现了,当初不晓得有没有抵触。
  2. 在 dev 分支外面,执行命令 git merge origin/master,把近程的 master 分支合并到以后 dev 分支中。如果没有任何报错,那么间接转到第 5 步。
  3. 如果有抵触,依据提醒,把抵触解决,保留文件。而后执行命令 git add xxx 把你批改的文件增加到缓存区。而后执行命令 git commit -m “xxx” 增加 commit 信息。
  4. 执行如下命令,切换到 master 分支:git checkout master。
  5. 执行命令 git pull 确保以后 master 分支是最新代码。
  6. 把 dev 分支的代码合并回 master 分支:git merge dev。
  7. 提交代码:git push。
退出移动版