当前位置:   article > 正文

学习Git的保姆级教程_git保姆级教程

git保姆级教程

前言

目前git是世界最先进的分布式版本控制系统

一、git安装

官方英文网站:https://git-scm.com傻瓜式安装

二、本地仓库操作

----桌面右键打开 git bash here
打开git方法

2.1创建账户

代码如下:(第一行创建第二行验证账户)

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ git config --global user.name "houwang"

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ git config --global user.name
houwang
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2.2创建电子邮箱

代码如下:

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ git config --global user.email "2336476373@qq.com"

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ git config --global user.email
2336476373@qq.com
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2.3创建第一个项目(创建在桌面上然后cd进入)
A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ mkdir pro_git
A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ cd pro_git/
  • 1
  • 2
  • 3
  • 4
2.4 初始化仓库
A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git
$ git init
Initialized empty Git repository in C:/Users/A/Desktop/pro_git/.git/
  • 1
  • 2
  • 3

打开并且勾选显示隐藏的项目里面有.git表示初始化成功(不可删除不可以随意更改)
在这里插入图片描述
注:除了这个.git其他都可以叫工作目录

三、git常用命令

3.1文件的增删改解析图

在这里插入图片描述

3.2创建第一个文件

进入到之前创建好的目录

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ cd pro_git/
  • 1
  • 2

创建自己的一个demo

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ touch demo.txt
  • 1
  • 2

查看文件状态(工作区 注:此时是未暂存)

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git status
On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        demo.txt
nothing added to commit but untracked files present (use "git add" to track)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
3.3将文件从工作区添加暂存区

使用git add命令把demo.txt添加进工作区

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git add demo.txt
  • 1
  • 2

(git add .)这个命令可以把所有的工作区文件添加进暂缓区
再使用git status查看当前状态(此时已经成功添加暂存区)

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   demo.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3.4将暂存区的文件添加至仓库

引号里面的内容是你需要的备注信息(方便后面查找)

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git commit -m "demo01"
[master (root-commit) ae1cca3] demo01
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 demo.txt
  • 1
  • 2
  • 3
  • 4
  • 5

此时查看状态验证一下

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git status
On branch master
nothing to commit, working tree clean
  • 1
  • 2
  • 3
  • 4

查看仓库的日志

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git log
commit ae1cca32fb00c04c3b0a32176823cd9714977408 (HEAD -> master)
Author: houwang <2336476373@qq.com>
Date:   Thu Jul 14 15:47:37 2022 +0800
    demo01
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
3.5重新重复上面三个操作

此时我们再编辑刚刚那个仓库的文件

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ vim demo.txt
  • 1
  • 2

此时再次查看状态(回到工作区 注:此时是未暂存)

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   demo.txt
no changes added to commit (use "git add" and/or "git commit -a")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

重新添加至暂存区

git add . 命令

再次添加到仓库

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git commit -m "demo02"
  • 1
  • 2

(此时已经有两条记录)

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git log
commit c1c460a60d7134d368509512b42dd2ca4cc31cd1 (HEAD -> master)
Author: houwang <2336476373@qq.com>
Date:   Thu Jul 14 16:25:16 2022 +0800
    demo02
commit ae1cca32fb00c04c3b0a32176823cd9714977408
Author: houwang <2336476373@qq.com>
Date:   Thu Jul 14 15:47:37 2022 +0800
    demo01
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

此时不够直观为了更清楚的看到我们想要的数据
在这里插入图片描述
代码展示:

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ git log --all --pretty=oneline --abbrev-commit --graph
* c1c460a (HEAD -> master) demo02
* ae1cca3 demo01
  • 1
  • 2
  • 3
  • 4
3.6取别名和版本回退和版本前进

取别名
此时又考虑上面代码太长了难记难敲(将这个长串的命令取别名)

alias git-log=‘git log --all --pretty=oneline --abbrev-commit --graph’

下次直接使用git-log这个我们自定义的命令
版本回退

$ git reset --hard 版本id

在这里插入图片描述
版本前进
通过git reflog命令查看前面所有的操作记录

在这里插入图片描述

3.7添加不想被git管理的文件保护

先新建一个文件demo01.java
在这里插入图片描述
此时我不想demo01.java这个文件被git管理,我就放在这里
先创建一个.gitingnore文件

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master)
$ touch .gitignore

然后在里面输入不想被git管理的文件名
当然我这里使用的*号匹配符
在这里插入图片描述
此时再检验demo01.java不可以被添加到暂存区
在这里插入图片描述

四、git分支常用命令

4.1查看分支

$ git branch

新建分支

$ git branch 分支名

查看分支提交了哪些版本(之前自定义的命令)

$ git-log

在这里插入图片描述
先把之前创建的文件提交到仓库
在这里插入图片描述
此时我们再查看一下日志
在这里插入图片描述
此时我们不难发现master分支比dev01多进行了一次提交
所以我们的dev01的分支上应该是没有提交这个.gitignore文件

4.2切换分支

切换分支

$ git checkout 分支名

继续4.1的内容 (切换到dev01这个分支 不难发现HEAD指向的就是我们当前所在的分支)
而且dev01这个仓库并没有.gitignore这个文件
在这里插入图片描述
此时我们再次切换到master这个分支(这个.gitignore这个文件回来了)
在这里插入图片描述
创建并切换分支

$ git checkout -b 分支名

4.3合并分支

git merge 分支名

验证合并分支:1.在dev01下创建1.txt这个文件并且提交到仓库
2.切换到master这个分支上3.合并分支并查看日志(如图所示master多了这个1.txt这个文件)
在这里插入图片描述
–之前master是1f0faa1这个id上和8cffdcd上的dev01合并后生成了一个新的id

4.4删除分支

$ git branch -d 分支名

这个删除会做各种检查

$ git branch -D 分支名

强制删除

4.5解决合并冲突

1.先删掉之前的dev01和dev2分支
2.新创建一个dev的分支
3.将dev和master两个仓库的1.txt文件修改了不同的内容
在这里插入图片描述
4.把dev合并master上(此时因为同一个文件上是不同的内容git不知道保留哪一个所以提示自动合并失败,需要自己手动选择保留的数据)
在这里插入图片描述

五、仓库托管_注册_创建仓库_配置公钥

5.1配置SSH密钥

先注册一个码云(rsa是非对称密钥的一种算法)
注:只需要不断回车其他的内容不管

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$ ssh-keygen -t rsa

然后查看密钥

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$ cat ~/.ssh/id_rsa.pub

然后把生成的密钥挂载到码云上
在这里插入图片描述
然后在本地验证一下是否配置成功(他会提示你是第一次配置,输入一个yes即可)
这是成功的状态//

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (212.64.63.190)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
Hi 重庆李豪! You've successfully authenticated, but GITEE.COM does not provide shell access.
A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
5.2仓库推送到远程仓库

先告诉你的本地仓库对应的远程仓库是哪一个

git remote add 自定义仓库名 仓库SSH地址

没报错说明添加成功

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$ git remote add origin git@gitee.com:chongqinghouwang/git_test.git
A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING) 
$
  • 1
  • 2
  • 3
  • 4

验证一下

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$ git remote
origin
  • 1
  • 2
  • 3

将本地的代码推送上去(这里是将master这个分支推上去)
注 本地仓库名:远程仓库自定义名字

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (master|MERGING)
$ git push origin master

验证一下此时云端有代码了
在这里插入图片描述
此时我们再将dev推送上去
注 本地仓库名:远程仓库自定义名字
在这里插入图片描述

5.3本地分支和云端分支绑定

查看绑定关系

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev)
$ git branch -vv
* dev    c941690 1.txt
  master c941690 1.txt
  • 1
  • 2
  • 3
  • 4

添加绑定关系并且再次查看

git push --set-upstream origin 本地:远程名

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev)
$ git push --set-upstream origin dev:dev01
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 319 bytes | 319.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:chongqinghouwang/git_test.git
   6c083ad..c941690  dev -> dev01
branch 'dev' set up to track 'origin/dev01'.

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev)
$ git branch -vv
* dev    c941690 [origin/dev01] 1.txt
  master c941690 1.txt

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

重新推送

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev)
$ git push
就不多说了报了一大串的错看不懂
  • 1
  • 2
  • 3

因为本地和远端的分支名不一致导致推送失败,更改本地的分支名后重新推送即可

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev)
$ git branch -m dev01

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev01)
$ git push
Everything up-to-date

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/pro_git (dev01)
$ git branch -vv
* dev01  c941690 [origin/dev01] 1.txt
  master c941690 [origin/master] 1.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
5.4仓库克隆

因为只有一台电脑原因但不影响克隆,桌面上新开一个命令行窗口

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop
$ git clone 你的SSH地址 新创建用来保存的文件名

在这里插入图片描述
左面的命令行是之前的,右边的是新克隆的
在这里插入图片描述
模拟一下左边更新,右边需要同步(左边新建了一个demo02.txt的文件)
抓取命令

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/hello (master)
$ git fetch

在这里插入图片描述
我们新克隆的master还在上一个版本上,我们和远端的提交合并到一起(使用之前的合并命令)
在这里插入图片描述
拉取命令=拉取+合并(git merge 分支名)

A@LAPTOP-I3BL4SR1 MINGW64 ~/Desktop/hello (master)
$ git pull

5.5解决远端合并冲突
首先一端修改并且提交
然后另一端修改并且拉取+合并
在这里插入图片描述
解决方案呢跟之前本地那个执行是一样的
只需要自行修改冲突的文件后重新提交仓库既可合并

六、IDEA中使用

6.1idea的配置推送

先在idea里面配置好git的安装路径(点击test会出现git的版本号说明没有问题)
在这里插入图片描述
在码云中新建一个远程仓库
然后在返回IDEA新建仓库目录
在这里插入图片描述
选择我们的项目
在这里插入图片描述
有个小勾的图标单击后勾选我们想提交的文件
在这里插入图片描述
左下角的git小图标可以查看我们提交到哪儿了
在这里插入图片描述
推送到远端仓库
在这里插入图片描述
然后url粘贴我们码云的SSH地址
在这里插入图片描述
再随手一个push就可以完美的推送到我们的云端

6.2idea更新克隆

更新数据:
随意修改一行代码后进行再次提交然后push一下
在这里插入图片描述
验证一下
在这里插入图片描述
克隆数据:
在这里插入图片描述

注意:从远端直接获取会替换掉你当前的内容修改

总结

例如:以上就是今天要学的内容,本文仅仅简单介绍了git的使用,目前git是世界最先进的分布式版本控制系统。
​​

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/359770
推荐阅读
相关标签
  

闽ICP备14008679号