1

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

 1 week ago
source link: https://www.51cto.com/article/785739.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

作者:一安 2024-04-09 14:06:06
什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。什么是分布式版本控制系统分布式版本控制系统( Distributed Version Control System,简称 DVCS )。

1、了解版本控制

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

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

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

2、Git常用命令

git-系统配置

git config -l

git-global配置

git config --global --list
# 可以设全局公用识别的 邮箱和用户名
git config --global user.name 'xxxxxx'
git config --global user.email '[email protected]'

项目单独git配置

# 查看
git config --list
# 为项目设置单独的user.name和user.email
git config user.name 'xxxxxx'
git config user.email '[email protected]'

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。
责任编辑:武晓燕 来源: 一安未来

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK