分享到: 分享到QQ  分享到Twitter

作者: BigLoser    访问次数: 194 创建时间: 2022-08-31 19:38:20 更新时间: 2024-03-29 07:22:19

前言

  Git 作为目前世界上最先进的分布式版本控制系统,在国内外备受欢迎,基本上科技公司的项目都或多或少使用到 Git 进行版本管理,然而,Git 命令繁多,许多使用者在使用命令过程中会遇到一些问题 ,本文就日常开发工作中常用的 Git 命令以及相关问题做了整理,给 Git 使用者进行参考。

 


 

本地项目推送到 Github、Gitlab

 

  场景:许多时候我们在本地搭建好的项目想跟远端仓库的项目关联并推送到远端仓库中,这时候就需要使用 Git 的相关命令来实现。

 

  实现步骤:

 

  • 进入到项目所在的目录下,打开 Git 命令窗口,执行: git init 命令将项目初始化为 git 项目

  • 执行【git add . 】将代码添加到暂存区

  • 执行【git commit -m ‘提交注释’ . 】将代码提交到本地仓库

  • 在远端仓库如 Gitlab、Github 上复制项目的 url,使用命令:【git remote add origin 仓库地址】,将本地仓库和远端仓库建立关联

  • 执行【git pull origin 远端仓库分支名称】命令拉取远端仓库上的文件到本地

  • 如果有拉取到新文件则重新执行 git commit 命令将新文件添加到本地仓库

  • 执行【git push --set-upstream origin 远端分支名称】将本地代码推送到远端仓库

 


使用该命令常遇到的问题

  问题 1、 Git push:unable to access Could not resolve host

 

  主要原因是没有推送到远端仓库的权限,需要找管理员开权限,然后重新执行 Git push 命令进行推送即可。

 

  问题 2、 执行 git push --set-upstream origin master 或者 Git push 出现: The project you were looking for could not be found

 

  解决:在执行 git clone 或者 git push 添加上用户名即可,如:git clone https://用户名 @github.com/it-learning-diary/it-wheels-king.git

 

  查看当前 Git 的用户名和邮箱的命令:git config user.name/email

 

  问题 3、 如果已经使用了 git remote add origin 命令关联远程仓库后发现 Url 错了或者出现问题 2 需要在 url 加上用户名,想重新关联时出现: fatal: remote origin already exists

 

  解决:使用 git remote rm origin(删除关联的 origin 的远程库)

 

  问题 4、 git push 时出现 remote: XX: Incorrect username or password (access token)

 

  解决:将提交的 git 的名称修改成和 github 或者 Gitlab 仓库中名称一样的,修改命令:git config user.name "用户名称"

 

  问题 5、 拉取远端推送时出现:Git :fatal: refusing to merge unrelated histories 解决

 

  原因:是因为本地仓库和远端仓库两个分支是两个不同的版本,具有不同的提交历史,需要将他们合并并解决冲突。

 

  解决:git pull origin 分支名称如 master --allow-unrelated-histories

 

 


 

创建本地分支并推送到远端

 

  场景:许多时候,我们可能需要根据远端某一分支创建新的分支进行开发,此时就需要进行分支创建并推送操作。

 

  方式、使用 git checkout 命令创建,步骤如下:

 

  步骤 1、以远端某一个分支为参照物,创建一个本地分支且切换到该本地分支,命令:git checkout -b 本地分支名称 origin/远端分支名称

 

  步骤 2、将新创建的本地分支推送到远端仓库(此时会在远端仓库创建对应的分支),命令:git push origin 远端分支的名称

 

  步骤 3、将本地分支和远端分支绑定,方便后续 push 代码,命令:git push --set-upsteam origin 远端需要绑定的分支名称

 

 

  相关命令

 

  • 查看本地分支名称:git branch

  • 查看本地和远端所有分支名称: git branch -a

 


 

删除分支

 

  场景:有些时候,我们需要删除本地或者远端仓库中一些已经不必要或者无用的分支,此时则使用到了 git branch 命令。

 

  删除本地分支:git branch -d 分支名称

 

  删除未合并的本地分支:git branch -D 分支名称

 

  删除远端仓库分支:git branch origin -d 远端分支名称

 

 


 

打标签

 

  场景:在开发好新功能或者修复了紧急 bug 后,我们需要将最新的代码进行发布,通常的方式就是在测试好的分支上进行 tag 打包并发布,具体步骤如下:

 

  • 查看项目的 tag 版本:git tag

  • 打新的 tag 包:git tag -a tab 版本名(如 V-1.0.0.prod.202206012211) -m '备注'

  • 推送指定名称 tag 包到仓库:git push origin tag 包名称

  • 推送所有 tag 到仓库:git push origin -tags

 

 

  Tag 和 Branch 的区别

 

  • tag 可以看做是版本库中的一个标记,指向某一 commit 的指针,主要用于发布版本的管理,它指向的 commit 是固定的,无法移动。

  • branch 则是由一系列的 commit 组成,由的多个点连成的一个提交线,通过 HEAD 指针进行 commit 点移动。

  • tag 通常用于版本发布,branch 通常用于业务开发

 


 

存储/更改缓存

 

  场景:你有没有遇到过这样一个情况,功能开发或 bug 修复到一半时,临时来了一个紧急需求需要处理,此时的代码无法提交,否则其他人拉取可能会出现问题,此时你就需要 git stash 的帮忙了。

 

  git stash 命令允许你将当前进度(工作区和暂存区)的内容保存起来,方便切换到其他分支处理紧急事情,后续可以再回复当前进度,具体用法如下。

 

  1、存储工作区和缓冲区

 

  • git stash 或者 git stash save '缓冲区名称'

 

  2、查询缓存列表

 

  • git stash list

 

  3、恢复缓冲区内容

 

  • git stash pop [stash_id]:默认恢复最新缓存进度,同时删除该缓存

  • git stash apply [stash_id]:恢复指定缓存版本内容,并不删除堆栈中的内容

 

  4、删除缓存进度

 

  • git stash drop [stash_id]:删除指定的缓存进度,如果不指定 stashId,则默认删除最新的存储进度

 

  5、清空整个堆栈

 

  • git stash clear

 

  6、查看缓存进度和当前目录差异

 

  • git stash show [stash_id],如:git stash show stash@{1}

 

  7、以最新缓存进度为依照,创建最新分支

 

  • git stash branch 分支名称

 

 


 

查看当前相同同步的远程库列表

 

  场景:有时候,一个项目可能多同时同步多个远程库如 gitlab、github 等,此时可以借助 remote 命令查看仓库同步的列表

 

  • git remote -v

 

 


 

写在最后

 

  虽然现在市面上有图形化的 Git 操作工具,但是更多时候通过命令行的方式是一种更好的方式,一个是在出现问题时能够尽快定位,很多图形化工具操作差异,导致出现问题时不好排查,另外一个是面试中也会有遇到 Git 相关的题目,可以更好为面试做准备。

季度最有价值文章

月度最有价值文章

投票统计

是否原创: 0 %

0 % Complete (success)

是否有价值: 0 %

0% Complete

是否有素质: 0 %

0% Complete (warning)

是否合法: 0 %

0% Complete

   群组工具

   外部链接