前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工作效率翻倍:Git实用命令集锦

工作效率翻倍:Git实用命令集锦

原创
作者头像
星辰大海的精灵
发布2024-04-10 11:31:22
760
发布2024-04-10 11:31:22
举报
文章被收录于专栏:开发工具开发工具

1、了解版本控制

什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

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

在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜 像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份

2、Git常用命令

git-系统配置

arduino

git config -l

git-global配置

csharp

git config --global--list# 可以设全局公用识别的 邮箱和用户名git config --globaluser.name'xxxxxx'git config --globaluser.email'xxxxx@xxx.com'1.2.3.4.

项目单独git配置

lua

# 查看gitconfig--list# 为项目设置单独的user.name和user.emailgitconfiguser.name'xxxxxx'gitconfiguser.email'xxxxx@xxx.com'1.2.3.4.5.

Git初始化

本地初始化

csharp

gitinit

远程拉取

bash

gitclone远程仓库地址

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

bash

# 本地-建立关联-远程git remote add origin 远程仓库地址# 本地-取消关联-远程git remotermorigin1.2.3.4.

Git保存和提交

查看状态

lua

gitstatus

查看所有文件修改详情

git diff HEAD

查看指定文件的修改详情

git diff HEAD ./README.md

添加保存

".": 所有修改文件

csharp

gitadd.或gitadd./home.vue1.2.3.

添加保存说明(提交到本地仓库)

sql

gitcommit-m'对这次保存添加说明描述'

拉取代码

多人协作开发的时候,提交之前先拉取下代码,解决可能未来的冲突

git pull origin 分支名

提交代码

perl

gitpushorigin 分支名

Git提交日志

查看提交记录

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

ini

git log--pretty=oneline

控制显示条数

ini

git log -30--pretty=oneline

图形化展示查看当前分支的版本演变信息

lua

gitlog--graph

按作者名字查看提交记录

ini

git log--author="John"

搜索提交历史,根据关键词

bash

gitlog-S 关键词

按日期

ini

git log--after="2023-2-1"

搜索过滤合并提交

lua

gitlog--no-merges orgitlog--merges1.2.3.

按提交信息

比如说,你的团队规范要求在提交信息中包括相关的issue编号,你可以用下面这个命令来显示这个 issue 相关的所有提交

ini

git log--grep="JRA-224:"

查看当前 版本标志位

git reflog是Git操作的一道安全保障,它能够记录几乎所有本地仓库的改变,包括所有分支的commit提交,以及已经被删除的commit

git reflog

Git回退到某个版本

回退到上一个版本

perl

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

HEAD 说明:

HEAD 表示当前版本

HEAD^ 上一个版本

HEAD^^ 上上一个版本

HEAD^^^ 上上上一个版本

以此类推...

可以使用 ~数字表示

HEAD~0 表示当前版本

HEAD~1 上一个版本

HEAD^2 上上一个版本

HEAD^3 上上上一个版本

以此类推...

Git分支指令

查看素有分支

css

git branch -a

切换分支

git checkout 分支名

创建本地分支

bash

git branch 新分支名# 创建并切换到新分支git checkout -b 新分支名1.2.3.

根据指定版本号创建分支

css

git checkout -b分支名 提交ID

推送本地分支到远程仓库

perl

gitpushorigin 新分支名

删除本地某个分支

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

git branch -d 分支名

强制删除本地某个分支

即使它有未合并的更改。如果想永久丢弃与特定开发线相关的所有提交,则可以使用此命令

git branch -D 分支名

删除远程仓库的某个分支

css

git push origin--delelte分支名

显示所有远程仓库

查看仓库源名称

git remote -v

更新远程分支列表

scss

git remote updateorigin(仓库源名称)--prune

推送所有分支到远程仓库

scss

git pushorigin(仓库源名称)--all

强行推送当前分支到远程仓库,即使有冲突

scss

git pushorigin(仓库源名称)--force

Git合并分支

想将develop分支合并到master分支

perl

git checkout master# 首先切换到master分支上git pull origin master# 如果是多人开发的话 需要把远程master上的代码pull下来git merge --no-ff develop# 然后我们把develop分支的代码合并到master上1.2.3.

关于 git merge develop 和 git merge --no-ff develop 的区别

css

git merge develop==== >  结果就会变成A---B---Cdevelop        /        masterD---E---F1.2.3.4.5.6.7.

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

而如果执行了 git merge --no-ff feature 的话,是下面的结果:

css

git merge--no-ffdevelop==== >  结果就会变成A---B---Cdevelop        /        \D---E---F-----------Gmaster由于--no-ff禁止了快进,所以会生成一个新的提交,master 指向 G。1.2.3.4.5.6.7.8.9.

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

Git标签

查看tag列表

git tag -l

本地添加tag

arduino

git tag -a 标签名 -m'版本说明'

查看tag信息

sql

gitshow标签名

本地删除某个tag

erlang

git tag -D 标签名orgit tag -d 标签名1.2.3.

推送本地tag到远程仓库

perl

gitpushorigin 标签名

删除远程仓库tag

perl

gitpushorigin --delete标签名

小记

cmd中使用log命令,不会自动退出,需要手动按下英文状态下的q退出

Git常见错误

1、修改最后一次提交消息 - 提交消息写错了

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

sql

gitcommit--amend #该命令将打开编辑器,并允许更改最后一次提交消息

2、Git 撤回 commit,但未 push 的内容

perl

gitloggitresete102c05227bca7517554777f589f130305b69427#保留提交之前的更改到工作区1.2.

3、让单个文件回退到指定版本

bash

gitlogvue.config.js#拿到文件提交记录IDgit checkout e102c05227bca7517554777f589f130305b69427(commitID) vue.config.js#将文件还原到你想要还原的版本1.2.

4、解决冲突

只要所有开发者都遵守这个规则,那么解决冲突是一件非常容易的事情

例如我的分支叫做dev分支。我把代码修改完成了,现在不知道有没有冲突。

在 dev 分支里面,执行命令git merge origin/master,把远程的master分支合并到当前dev分支中。如果没有任何报错,那么直接转到第5步。

如果有冲突,根据提示,把冲突解决,保存文件。然后执行命令git add xxx把你修改的文件添加到缓存区。然后执行命令git commit -m "xxx"添加 commit 信息。

执行如下命令,切换到 master 分支:git checkout master。

执行命令git pull确保当前 master 分支是最新代码。

把dev分支的代码合并回 master 分支:git merge dev。

提交代码:git push。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档