【Git】git快速入门,一文学会使用git常用命令与使用步骤

目录

一、git介绍

(一)Git工作区、暂存区、版本库/本地仓库和远程仓库的概念

(二)远程仓库介绍

(三)git 分支介绍

二、git使用

(一)git使用流程

(二)git远程仓库使用

三、git分支管理

(一)分支管理命令

四、git代码冲突

(一)冲突情况说明

(二)冲突解决方式

五、git 常用命令解释

(一)本地仓库git 命令

(二)远程仓库git 命令

(三)分支管理git 命令


一、git介绍

(一)Git工作区、暂存区、版本库/本地仓库和远程仓库的概念

图片来自菜鸟教程

  • 工作区(workpace):就是本地项目目录
  • 暂存区(staging area):又称为索引区(index),它是工作区与本地仓库之间的一个过渡。执行命令git add就是将代码改动提交到暂存区
  • 版本库/本地仓库(local repository):工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。记录了代码各版本的状态,在需要时可以恢复代码状态到工作区。git commit就是将暂存区代码变动提交到本地仓库
  • 远程仓库(remote repository):当你需要备份或者与其他人员共同管理项目时,则需要将项目pull到远程仓库

(二)远程仓库介绍

git在本地环境运行,如果你想通过 Git 分享你的代码或者与其他开发人员合作,则需要将数据放在一个大家都能访问的服务器上。例如:GitHub、Gitee(码云)就是公共远程仓库。

1、GitHub官网https://github.com/https://github.com/

 2、Gitee(码云)官网Gitee - 基于 Git 的代码托管和研发协作平台https://gitee.com/

当然我们也可以自己搭建私有的git远程仓库。例如:GitLab。至于还有哪些开源的git仓库管理系统,以及如何搭建,不在本文范围内,以后可能会写一篇文章来介绍。 

(三)git 分支介绍

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

 有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。 理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。

二、git使用

介于当初学习git的时候,网上很少讲到git使用的整个流程,碰了不少坑。这里将会记录常用的使用步骤,并且淡化分支管理概念,先不管分支管理的使用。

这里补充一下git bash的很多命令和linux使用相同,例如cd、ls、mkdir等操作,在linux中进行文件操作就不用退出git

(一)git使用流程

当我们有一个项目需要用git来进行版本控制(按下面步骤,将代码提交到本地仓库,才是正常操作,否则会出现问题提示或者没有正确提交代码)

1、使用git init:初始化一个仓库

# 在项目根目录
git init

2、使用git add:当我们要提交第一个版本时,需要先将整个项目添加到暂存区

git add [file/dir/.]

# 示例:git add .
# . :代表项目根路径所有文件
# 也可以是单个文件,git add [文件1] [文件2] [文件..]
# 也可以是子目录,git add [目录1] [目录2] [目录..]

3、使用git commit:将暂存区的代码变化提交到 本地仓库

第一次git commit时,会提示我们需要设置提交的用户信息,包括用户名和邮箱,我们可以在提交前先设置。

git config  user.name 'xxx'
git config  user.email 'xxx@xxx.xxx'

# --global(可选):对所有仓库生效

然后再提交代码(第一次提交时默认会创建master分支,并提交至master分支)

git commit [option] 

# 示例:git commit -m '代码提交'
# -m (必选): 提交说明
# -a (可选): 如果觉得在提交之前还需要add太繁琐,使用该参数可跳过,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked 状态

# 可以提交暂缓区的单个文件,git commit -m [option] [文件1] [文件2] [文件..]

工作区/暂存区没新变更时,commit会提示

(二)git远程仓库使用

  • 代码版本上传到远程仓库

1、使用git remote add:如果本地没有配置远程仓库地址,需要设置远程仓库地址,才可以将代码pull上该仓库

注:在配置和上传前,需要手动到远程仓库管理系统创建一个项目仓库,得到远程仓库地址。例如GitHub中的一个仓库


配置远程地址

git remote add 仓库别名 远程仓库地址

# 示例:git remote add rigin https://gitHub.com/xxx/xxx.git
# 仓库别名:自行命名,不能与已有仓库配置重名

2、使用git push:配置了远程仓库,将本地仓库(即本地最后git commit了的代码版本)代码上传到该远程仓库并合并(这里先不讨论合并冲突所导致的合并失败,文章后面会专门进行说明)

git push 仓库别名 本地分支名:远程分支名

# 示例:git push origin master
# 如果本地分支名与远程分支名相同,则可以省略冒号

push时,本地没新变更会提示

  • 远程代码下载

有下面两种方式

1、使用git clone:将远程代码拷贝到本地。用于第一次代码下载到本地,后续用git pull将远程代码更新到本地

git clone 远程仓库地址

# 示例:git clone https://github.com/xxx/xxx.git

2、使用git pull获取远程代码并合并到本地(这里先不讨论合并冲突所导致的合并失败,文章后面会专门进行说明)

# 没有配置远程仓库的话,需要先git remote add 添加远程仓库
git pull 远程仓库名 远程分支名:本地分支名

# 示例:git pull origin main:master
# 如果远程分支和本地分支名一样,可省略冒号后面的部分
# git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写

>>>使用git fetch和git merge合并分支,和git pull效果一样

# 先获取远程仓库代码,示例:git fetch origin
git fetch 远程仓库名

#将远程代码合并到本地当前分支,示例:git merge origin/master
git merge 远程仓库名/远程分支名 

pull,远程没新变更会提示

三、git分支管理

本章节介绍分支管理。

(一)分支管理命令

1、使用git branch查询和新增分区。

git branch #查询此本地仓库所有分支
git branch 分支名 #添加分支

2、使用git checkout切换当前分区:切换不同分区,git会还原你的工作目录到该分区最后git commit的状态

git checkout 分支名

不git commit当前版本新修改就无法切换分支

 3、使用git merge合并分区:将分区b合并到当前分区

git merge 分支b

四、git代码冲突

(一)冲突情况说明

注:版本就是git commit次数,版本针对的是文件,只要一个文件出现任何不同修改就会中断操作。

1、本地拉取/推送

    本地拉取

  • 当远端有更新,本地库没有有变化,拉取操作远端会覆盖本地库(远端版本高于本地)
  • 当远端修改,本地库也有修改,拉取操作会产生冲突文件(远端版本和本地版本冲突)

  • 当本地库修改,而远端没有变化,拉取不会产生变化(本地版本高于远端版本)

    本地推送

  • 当本地库版本低于远端版本,则无法推送,必须先拉取在操作,否则报错

2、分支合并

  • 当资源分支版本高于目标分支时,合并,资源分支同名文件会覆盖目标分支;
  • 当目标分支版本高于资源分支时,合并,提示Already up-to-date.(已经更新),目标分支内容不会变化;
  • 当目标分支和资源分支同名文件都有改动时,会报冲突,需手动解决; 

(二)冲突解决方式

事先预防

本地拉取/推送:为了不产生冲突,最简单的方案就是修改文件前,先git pull获取远程最新的代码,同步完成后再对代码进行修改,保证远程代码的版本低于本地版本

分支合并:平时开发不要在master或者develop分支做提交,要保证目标分支版本始终是最低的(提交次数最少),这样才能保证每次提交的版本都高于目标分支。如果目标分支(例如master)被保护起来,其他分支只能通过发起merge合并请求来合并的话,目标分支的版本始终是低于资源支的,也就不会产生冲突文件了。

解决冲突

不管本地push/pull还是本地分支merge,冲突本质就是git在合并操作时,对同一文件(只要对文件有修改且git commit了的都算不同版本)出现不同修改

即冲突处理方案是一样的,git会标记冲突文件,在本地解决冲突文件。再git commit提交本地仓库,根据需要git push远程即可。

例子1:merge分支合并冲突

 master分支,test.txt文件

bate分支,test.txt文件

 master分支是项目确定主分支,将bete合并到master,出现冲突提示

可以使用git diff查看冲突地方,我这里直接查看文件

本地master分支上会出现 (master|MERGING)标志

手动将文件里的该保留的保留,该删除的删除,

<<<<<<< HEAD"到”======="之间是当前分支(master)之前的修改

=======”到“>>>>>>> beta”是beta分支上的修改,根据需要进行保留或者删除


最终想要修改成这样,

修改文件,保存文件,再git add 和 git commit操作,冲突解决!

 


例子2:本地推送冲突

远程仓库master分支的test.txt

本地master分支的test.txt

 

 本地推送,出现冲突提示

 

可以使用git diff查看冲突地方

 本地master分支上会出现 (master|MERGING)标志

手动将文件里的该保留的保留,该删除的删除,

<<<<<<< HEAD"到”======="之间是当前分支(master)之前的修改

=======”到“>>>>>>> beta”是beta分支上的修改,根据需要进行保留或者删除

最终想要修改成这样,

修改文件,保存文件,再git add 和 git commit操作,最后push,冲突解决!


 例子3:本地拉取冲突

这里只展示冲突提示,解决方案同上面两个例子,不再举例说明

五、git 常用命令解释

(一)本地仓库git 命令

git init #初始化本地仓库

git add . #将工作区所有内容添加到暂存区

git add 文件1 #将文件1添加到暂存区

git add /目录1 #将子目录1添加到暂存区

git commit -m "" #将暂存区内容提交到本地仓库

git commti -am "" #跳过add步骤将工作区变更提交到本地仓库

git status #显示暂存区修改,即查看在你上次提交之后是否有对文件进行再次修改

git merge 分区b #合并分区b到对当前分区

(二)远程仓库git 命令

git remote add 远程仓库别名 远程仓库地址 #添加远程仓库配置

git remote -v #查看远程仓库配置
 
git remote rm 远程仓库名 #删除远程仓库配置

git remote rename 旧仓库名 新仓库名 #修改远程仓库名

git push 远程仓库名 本地分支:远程分支 #本地推送至远程

git pull 远程仓库名 远程分支名:本地分支名 #远程拉取至本地

git fetch 远程仓库名 #远程拉取本地

git merge 远程仓库名/远程分支名 #将远程合并到本地当前分支

(三)分支管理git 命令

git branch #查看分支
 
git branch 分支名 #新建分支

git checkout 分支名 #切换分支

git merge 分支A #将分支A合并到当前分支 

git diff #查看冲突差异

最终编辑2022-8-25

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值