Git手把手0基础最全使用教程(常见的Git基本操作)(Git的安装)(Gitee的使用)(远程仓库)(分支管理)(标签管理)(简单的Linux命令)(Git常用命令)

本文的编写主要参考了以下几位优秀开发工作者的文档及书籍
教程:廖雪峰Git教程
B站:狂神说Git
电子书:GitHub入门与实践【密码:7aik】
CSDN博主:mukes

1.Git简介

1.1.什么是Git

Git是目前世界上最先进的分布式版本控制系统;Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目

1.2.版本控制

版本控制系统(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是更容易协同开发

1.3.版本控制优点

  1. 实现跨区域多人协同开发
  2. 追踪和记载一个或者多个文件的历史记录
  3. 组织和保护你的源代码和文档
  4. 统计工作量
  5. 并行开发、提高开发效率
  6. 跟踪记录整个软件的开发过程
  7. 减轻开发人员的负担,节省时间,同时降低人为错误

1.4.Git和SVN区别

SVN:集中版本管理
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改;如果连不上网用户就看不到历史版本,也不能做出反应;SVN,CVS,VSS

Git:分布式版本管理
每个人拥有全部代码,所有版本信息仓库全部同步到本地的每个用户,这样就可以查看版本历史,可以离线提交,但增加了本地存储
区别
-----------------------------------------------------------------------------------------------------------------------------------------------------------------

2.安装Git(以Windows为例)

2.1.安装

地址:Git-Windows安装官网

点击next

在这里插入图片描述

Additional icons on the Desktop:添加图标到桌面
Windows Git Git 那三行是添加到鼠标右键菜单
Git LFS:大文件支持
ASSociate.git:关联文件
Associate .sh:关联文件
Check:每天检测版本更新
(NEW!):将Git Bash的配置文件添加到windows终端

在这里插入图片描述

下拉可选择默认编辑器

在这里插入图片描述

觉得初始化项目的名称:钩选第一项

在这里插入图片描述

环境变量(勾选第二项)

在这里插入图片描述

选择SSH文件

在这里插入图片描述

选择HTTPS后端传输,普通用户默认选择第一项

在这里插入图片描述

配置行尾符号转换(第一项)

在这里插入图片描述

配置终端模拟器以与 Git Bash 一起使用

在这里插入图片描述

选择默认的 “git pull” 行为

在这里插入图片描述

不选择凭证帮助程序

在这里插入图片描述

额外选项

在这里插入图片描述

实验性选项

在这里插入图片描述

2.2.查看是否安装成功

点击桌面或者Windows键如果有下面图片相当于安装成功
在这里插入图片描述

2.3.安装完成后需要配置git环境

git config --global user.name"xxx"     //配置用户名;可以再修改
git config --global user.email"邮箱"       // 配置邮箱地址,最好用自己的邮箱地址

所有的配置文件都保存在本地,可以删除再修改
可以在任何地方打开Git Bash 输入以下命令就可以获取具体信息
在这里插入图片描述

2.4.创建版本库

版本库又叫仓库;可以把里面所有文件都被Git管理起来,每个文件的修改、删除,Git都能跟踪,以及查询历史

2.4.1.创建文件夹

选择一个合适的地方创建一个文件夹(目录)

$ mkdir xxx   xxx是文件夹名称

2.4.2.将目录变为Git可管理的仓库(初始化Git仓库)

$ git init    完毕后系统会在目录下自动生成git的隐藏文件

2.4.3.编写文件

新创建一个文件(可以使用命令touh xxx)xxx是文件名称

2.4.4.将文件添加到仓库暂存区

$ git add xxx   xxx是刚刚创建好的文件

2.4.3.将文件提交到仓库

$ git commit -m "my Git file"      “”里的内容是描述文件的,可以随便写

到此:这个文件已经被添加到版本库里了

总结(来自廖雪峰)
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
使用命令git add ,注意,可反复多次使用,添加多个文件;
使用命令git commit -m ,完成。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

3.Git神操作

3.1.掌握工作区状态

生活中的常用的文件肯定会被一直修改,下面我们将这个文件修改并保存,现在运行下面命令看看发生了什么

$ git status            会实时掌握仓库的状态

会打印以下效果:

<file>..." to update what will be committed)   (use "git restore
<file>..." to discard changes in working directory)
        modified:   hh.txt

no changes added to commit (use "git add" and/or "git commit -a") ```

hh.txt被修改过了,但还没有准备提交的修改

总结(来自廖雪峰)
要随时掌握工作区的状态,使用git status命令。

—————————————————————————————————————————————————————

3.2.查看修改的内容

如果知道修改了哪些内容就更好了,万能的Git帮我们实现了,输入以下命令

$ git diff hh.txt

会出现以下结果

--- a/hh.txt
+++ b/hh.txt @@ -1 +1,3 @@  1
+2
+ 说我们新添加了一个2 

这时候就都明白了修改的内容,然后就可以提交了,前面说过的命令

$ git add hh.txt

这时候再查看一下状态

$ git status

会打印下面结果

> On branch main Changes to be committed:   (use "git restore --staged
> <file>..." to unstage)
>         modified:   hh.txt 
它告诉我们,将要被提交的修改包括hh.txt,

下一步,就可以放心地提交了

$ git commit -m'2'

总结(来自廖雪峰)
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

—————————————————————————————————————————————————————

3.3.版本回退

如果我们需要多次修改那个文件,每次修改的内容可能都会清楚的记住,这Git也帮我们实现了
多次修改刚才的文件,然后提交到版本库里,并且执行下面命令(这里有两种方式)

$ git log               命令显示从最近到最远的提交日志,我们可以看到3次提交,
$ git log --pretty=oneline         简化历史信息

简化历史信息输出会出现下面情况

0942243b0e8cdf3193cb5aa51538a5edc2ebf7e1 (HEAD -> main) 3
c3fcbb3adc06c5b1c0094583ddc00967003a9097 2
84538242e3abeea94fd355b993e3192a900ce1a7 1
b5dfd98be4735048ab57c4b27b130c5b368e7782 321
不要惊慌,这是Git的commit id 
Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示

如果我想回到上一次修改的文件的地方,应该怎么做,就像穿梭时空一样,使用下面命令

$ git reset --hard HEAD^      退回一次
$ git reset --hard HEAD^^     两次就是HEAD^^

这时候输入$ cat hh.txt就能查看有没有回到上一个版本
那么,怎么样返回现在的版本呢,输入下面命令

$ git reset --hard 094224

注意:094224是上面我查询历史信息弹出的commit id(也就是最新的修改)

当然,你也可以吃后悔药,如果你回退到某个版本忘记回来了,但关闭了程序,看不了上面的历史信息id号,你可以使用下面代码就可以实现重回未来

$ git reflog

总结(来自廖雪峰)
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

—————————————————————————————————————————————————————

3.4.工作区和暂存区和版本库

工作区:就是你在电脑里能看到的目录
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

在这里插入图片描述

总结(来自廖雪峰)
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
使用命令git add ,注意,可反复多次使用,添加多个文件;
使用命令git commit -m ,完成。

—————————————————————————————————————————————————————

3.5.文件的四种状态

在这里插入图片描述
上面所讲的的第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

—————————————————————————————————————————————————————

3.6.管理修改

Git跟踪并管理的是修改,而非文件
为什么这么说,可以进行以下操作
修改一次文件内容,保存在暂存区,再修改一次文件内容,然后提交
你会发现结果是第一次修改的内容
这说明Git是修改式管理,每次修改都会被记录,第一次修改存在暂存区,第二次修改没有存在暂存区,直接入库,会导致记录不到第二次的修改内容
Git每次修改,如果不用git add到暂存区,那就不会加入到commit中。

—————————————————————————————————————————————————————

3.7.撤销修改

如果在编辑文件时发现出错了,可以直接在文件内修改
从Git窗口查看:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   hh.txt

no changes added to commit (use "git add" and/or "git commit -a")

说的很清楚;$ git checkout – hh.txt 可以丢弃工作区的修改:
但是如果存储在了暂存区;可以把暂存区的修改撤销掉(unstage),重新放回工作区

$ git reset HEAD hhtxt

它可以帮你毁尸灭迹,接着丢弃工作区的修改

$ git checkout -- readme.txt

总结(来自廖雪峰)
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。


—————————————————————————————————————————————————————

3.8.删除文件

如果要删除文件可以使用

$ git rm test.txt

接着保存到版本库

但如果误删了且已经入库了,下面代码帮你回到删除前,但只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

$ git checkout -- test.txt

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

4.远程仓库

在主目录:也就是用户目录里打开.ssh文件。看看有没有id_rsa和id_rsa.pub这两个文件
没有的话执行下面操作

$ ssh-keygen -t rsa -C "[email protected]"          //你的邮箱地址

有的话就不需要
等到文件夹里面有id_rsa和id_rsa.pub这两个文件时就可以了打开gitee——点击个人主页——个人设置——安全设置——SSH公钥
将id_rsa.pub文件的内容粘贴到公钥,标题随意,点击确定就ok了

添加远程仓库

要关联一个远程库,使用命令

git remote add origin git@server-name:path/repo-name.git;

关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;

关联后,使用命令

git push -u origin master

第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令

git push origin master

总结:要想把自己本地的代码上传到gitee,可使用下面几步 打开要上传的文件根目录 输入

git add . // 添加所有代码到存储区 
git commit -m"描述语言"  //提交暂存区代码到本地文件  git
remote add origin https://gitee.com/lgh010203/xxxaa.git    //https://这个是你要上传的地址,连接到远程地址
git push -u origin ‘master’  //传输文件 
注意:如果报错可试试将最后一步写为:git push origin main ```

这里有详细步骤

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

5.分支管理

5.1.创建与合并分支

查看分支:

git branch

创建分支:

git branch <name>

切换分支:

git checkout <name>或者git switch <name>

创建+切换分支:

git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:

git merge <name>

删除分支:

git branch -d <name>

5.2.解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

git log --graph命令可以看到分支合并图。

5.3.分支管理策略

master分支应该是非常稳定的,适合发布新版本
分支不太稳定,版本迭代时,把分支合并到master上
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

5.4.Bug分支

当接到修复bug的任务时,想创建分支修复,但是正在dev进行工作还未提交怎么办
使用stash功能
首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git checkout -b issue-101
Switched to a new branch 'issue-101'

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

$ git switch master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git merge --no-ff -m "merged bug fix 101" issue-101
Merge made by the 'recursive' strategy.
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了:
再用git stash list查看,就看不到任何stash内容了:

$ git stash list

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{
    
    0}

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 工作区是干净的,刚才的工作现场存到哪去了?用git stash
list命令看看: 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,
修复后,再git stash pop,回到工作现场; 在master分支上修复的bug,
想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

5.5.Feature分支

刚开发了功能,还没来得及合并,要紧急删除
可以通过git branch -D <name>强行删除。

5.6.多人协作

首先,可以试图用git push origin <branch-name>推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

查看远程库信息,使用git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的;

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

在本地创建和远程分支对应的分支,使用git checkout -b branch-name
origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name
origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。### 5.7.Rebase

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

6.标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。————廖雪峰

6.1.创建标签

新建标签

git tag xxx

查看所有标签

git tag

历史标签

$ git log --pretty=oneline --abbrev-commit

展示标签信息

git show<tagname>

6.2.操作标签

推送本地标签

git push origin <tagname>

推送全部未推送过的本地标签

git push origin --tags

删除一个本地标签

git tag -d <tagname>

删除一个远程标签

git push origin :refs/tags/<tagname>

7.常用的git命令

在这里插入图片描述

里面好多东西都是理解后搬运的,一小部分是自己的总结,但是也足足写了一周,有什么错误请谅解,评论区告诉我
更多精彩点击这里

猜你喜欢

转载自blog.csdn.net/weixin_51992868/article/details/124097412