Git工具--教你如何从安装到掌握

目录

前言

一、Git与SVN的区别

二、Git安装详细教程

1、官网下载

2、镜像下载

3、Git的安装步骤 

4、安装完查看目录

三、常用的Linux命令

四、Git基本配置

1、配置用户名及邮箱(必须要配置的)

2、查看配置信息

3、本地仓库的搭建

4、查看文件状态 

5、忽略文件 

6、配置SSH公钥

 五、新建远程仓库

1、Gitee上的操作

2、Github上的操作

六、将远程仓库克隆到本地 

1、使用Https的方式克隆仓库

2、使用SSH的方式克隆仓库

3、克隆结果

七、将本地仓库上传至远程仓库

1、第一种方式提交

2、第二种方式提交

3、查看提交历史 

八、Git分支 

1、列出当前分支

2、列出远程分支

3、创建一个新分支

4、切换分支

5、合并分支

6、删除分支

7、其它分支命令

九、IDEA集成Git 

1、第一种方式提交

2、使用命令行提交

3、第三种方式提交

4、使用IDEA克隆远程仓库

5、IDEA分支管理


前言

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。它是Linux之父为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。目前公司使用较多的是集中式版本控制SVN和分布式版本控制Git。本文不对具体原理及专有名词死磕,将带你从Git工具的安装到基本掌握。肝了挺久的,如有表达不够准确的地方,欢迎指正,后续也将继续完善它。

一、Git与SVN的区别

1、最核心的区别Git是分布式的,而SVN是集中式的。集中式版本控制,意味着所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。分布式版本控制,意味着每个人都拥有全部的代码,所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史。

2、Git是每个历史版本都存储完整的文件,便于恢复;SVN是存储差异文件,历史版本不可恢复

3、Git把内容按元数据方式存储,而SVN是按文件

4、Git的内容的完整性要优于SVN

5、Git可离线完成大部分操作,SVN则不能;Git速度更快,效率更高

6、Git意味着每个人都拥有全部代码,SVN将所有版本数据保存在服务器上,所以Git的安全性不如SVN高

二、Git安装详细教程

1、官网下载

去Git官网下载对应系统的软件安装包,可以看见Git版本已经更新到了2.36.1了,因为国外的网站大多有墙,下载速度比较慢(建议采取镜像下载,当然有梯子的可以挂个梯子)

2、镜像下载

这里采用淘宝镜像下载,网址:CNPM Binaries Mirror ,我使用了一个比较稳定的Git版本,Git-2.25.1-64-bit.exe安装在Windows系统下

3、Git的安装步骤 

(1)点击下好的exe文件,点击next,再选择安装目录

(2) 选择要安装的组件,默认勾选就行,如有需要可勾选On the Desktop,生成桌面快捷方式,其实Duck不必,因为它会自动注册到你的系统环境,鼠标右击一下就可以看见

 (3)选择Git默认的编辑器,我电脑上有的且比较习惯的是NotePad++,有vim的选择vim

 (4)调整你的path环境变量,推荐使用命令行运行Git

 (5)选择哪个加密库来加密http传输的信息,使用默认的openSSL就行。当后续执行相关命令的时候,会生成一个.ssh的文件夹(Users\Administrator\.ssh),里面有Git自动生成的ssh密钥

(6)选择提交的时候的换行符格式,点击默认的就行(检查出windows的换行符格式再转换为unix换行符格式,最后再进行提交) 

 (7)选择Git的终端模拟器,使用默认的MinTTY即可。这个模拟器具有可调整大小的窗口(Ctrl+滚轮就可以放大缩小字体),非矩形选区和Unicode字体。上面那种是Linux控制窗口,另外一种是Windows默认的控制窗口(一个clear命令可以看出差别)

(8)配置额外选项,点击默认就行,然后安装,安装完成之后Finish即可(不勾选那两个选项) 

4、安装完查看目录

安装成功后在开始菜单中会有Git文件项,菜单下有5个程序。鼠标右击有两个程序,一个Git GUI Here,一个Git Bash Here,一般选择Linux命令行Git Bash

Git Bash:Unix与Linux风格的命令行,使用的比较多,推荐使用

Git CMD:Windows风格的命令行

Git GUI:图形界面的Git,不建议初学者使用

三、常用的Linux命令

1、cd : 更改目录。

2、cd . . :回退到上一个目录,直接cd进入默认目录(cd空格再打两点)。

3、pwd : (print working directory)显示当前所在的目录路径。

4、ls(ll):  都是列出当前目录中的所有文件,只不过LL列出的内容更为详细。

5、mkdir:  新建一个目录,有时候,你想要创建一个新的文件夹或子文件夹。可以使用mkdir+你要创建的文件名来做到这一点。

6、touch : 新建一个文件 如 touch  bash.txt 就会在当前目录下新建一个bash.txt 文件。

7、stat:查看文件的详细信息。

8、rm:  删除一个文件,rm bash.txt 就会把bash.txt文件删除。rm -r :  删除一个文件夹,rm -r src 删除src目录,rm -rf /  :切勿在Linux中尝试!它会删除电脑中的全部文件(/表示根目录,删库跑路风险大)!
9、mv :移动文件,mv index.html src ,index.html 是我们要移动的文件, src 是目标文件夹,当然,这样写,必须保证文件和目标文件夹在同一目录下。在相同路径下,可以重命名文件,比如:mv/原来文件的名字/新文件的名字。

10、cp:可以复制文件或目录,cp /源文件 /目标文件 相当改名复制,比如:cp index.html index.js,表示将index.html文件复制到当前目录下,并改名为index.js。cp/源文件/目标文件夹,比如:cp 1.jpg src ,表示把1.jpg复制到src文件夹。cp -r :递归拷贝目录(包括复制目录所有的子文件),比如:cp -r src src1表示复制src文件夹并命名为src1。

11、cat:查看文本内容,如果文本编码格式有问题,会出现乱码现象。cat也可以从键盘键入一个文件,比如:cat > 1.txt,表示创建一个txt文件,可以输入文本内容,world,按Ctrl+c结束输入。

12、echo:使用echo命令向文件中写入内容,例如:echo "字符串" > hello.txt,使用>指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。

13、reset 重新初始化终端/清屏。

14、clear 清屏。

15、history 查看命令历史。

16、help 帮助。

17、exit 退出。

四、Git基本配置

Git所有的配置文件都保存到本地

--local:项目级,项目目录下

--global:当前用户级,C:\Users\Administrator\ .gitconfig :只适用于当前登录用户的配置

--system:系统级,Git\etc\gitconfig :Git 安装目录下的 gitconfig

1、配置用户名及邮箱(必须要配置的)

(1)配置用户名

 git config --global user.name "全村第二帅"

 (2)配置邮箱

 git config --global user.email [email protected]

 (3)查看用户名和邮箱

git config user.name
git config user.email

2、查看配置信息

(1)查看当前git所有配置信息

#-l是list的缩写
git config -l
#不能缩写为--l,因为可能有list和local两种查看方式,--list查看当前git的所有配置信息
git config --list

(2) 查看某个项目的配置信息(或者说当前仓库配置信息)

#查看某个项目的配置信息(可以省略--list)
git config --local --list

(3) 查看当前用户(global)配置信息

 git config --global --list

 (4)查看系统配置信息

 git config --system --list

3、本地仓库的搭建

(1)创建一个全新的仓库,在当前目录下新建一个Git代码库

git init

执行之后可以看到在项目下多出了一个.git文件,关于版本等的所有信息都在这个目录里面。注意:这个.git是隐藏的文件夹,需要勾选隐藏的项目才能看见。

# 普通的“ls”命令也是看不见该文件夹的,需要使用“ls -ah”查看隐藏目录
ls -ah

(2) 进入.git目录查看相应的配置

#进入.git目录下
cd .git
#查看配置文件
ls -ah

4、查看文件状态 

add:将文件添加进缓存区

commit:将文件提交到本地仓库

(1)文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过 git add 状态变为Staged.

Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
 

(2) 查看文件状态

1)创建两个文件:index.html、login.html

touch index.html
touch login.html

2)查看指定文件状态:git status [filename]

 git status index.html

3)查看所有文件的状态

git status

 可以看见在add之前,文件显示untracked状态,还可以看见先前添加进缓冲区还未提交但被我删除的文件1.html。

4)添加所有文件进缓存区

#添加所有文件到暂存区
git add .
#查看文件状态
git status

可以看见有两个文件已经处于待提交的状态了 

 5)将缓存区的文件提交到本地仓库,git commit -m "消息内容" ,再查看提交状态

git commit -m "new file"
git status

注:使用git commit -am可以省略使用git add命令将已跟踪文件放到暂存区的功能 

5、忽略文件 

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等,这时候就要在主目录下建立".gitignore"文件,它用来指定 git 需要忽略的文件,且对已经被 git 跟踪的文件是不起作用的。此文件有如下规则:

1、忽略文件中的空行或以井号(#)开始的行将会被忽略。

2、可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。

3、如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

4、如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

5、如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

#为注释
*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

忽略文件的配置参考示例:

#字节码文件,日志文件以及
#锁文件(被很多的操作系统和应用程序所使用来锁住某些资源)
*.class
*.log
*.lock
#一些包文件以及生成目录target
*.jar
*.war
*.ear
target/

# idea的配置文件
.idea/
*.iml/

*velocity.log*

### STS ###
.apt_generated
.factorypath
.springBeans

### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/

#日志文件及临时文件
*.log
tem/

#rebel
*rebel.xml*​

6、配置SSH公钥

(1)生成一个公钥

ssh-keygen -t rsa

输入上述命令后,直接回车即可。配置完之后,会在C:\Users\Administrator文件下生成.ssh文件,该文件包括以下两个子文件

(2)打开id_rsa.pub文件,复制公钥并添加进码云(Gitee)的SSH公钥框里,标题会自动生成

添加完成之后,会显示你当前添加的SSH公钥 

 (3)Github(有时候上不去,有梯子的挂个梯子)上添加密钥步骤如下:

添加成功后,可以查看到你添加的密钥(Github还会贴心地发个邮件给你) 

 五、新建远程仓库

1、Gitee上的操作

(1)点击新建仓库

(2)新建仓库的配置 

按下面配置即可,开源许可证可自行百度,这里不过多说明

(3)查看刚刚所创建的仓库 

2、Github上的操作

(1)点击新建仓库,New repository

 (2)新建仓库的配置 

 (3)查看刚刚所创建的仓库 

六、将远程仓库克隆到本地 

1、使用Https的方式克隆仓库

(1)复制克隆地址

(2) 在Bash里进行克隆

git clone 刚刚复制的链接

这时候要输入你的用户名和密码了(码云的用户名和密码)

(3)错误解决 

 由于本人在第一次SSH输入验证的时候不小心输错了用户名和密码,然后就报了如下的错误:

 解决方案:控制面板-->用户账户-->管理你的凭据

 Windows凭据-->普通凭据-->编辑普通凭据-->修改密码(码云的账户名和密码)-->保存

重置密码后,输入以下密令,重新输入用户名和密码 

git config --system --unset credential.helper

2、使用SSH的方式克隆仓库

(1)复制克隆地址

(2) 在Bash里进行克隆,无需输入密码

 git clone [email protected]:poly-ma/mystudy.git

会出现Are you sure you want to continue connecting (yes/no/[fingerprint])?,输入yes就行 

3、克隆结果

七、将本地仓库上传至远程仓库

1、第一种方式提交

(1)在码云上创建一个远程的仓库,我给这个仓库取名为“hello”

(2)创建一个本地的仓库,并初始化本地仓库

#初始化仓库
git init

(3)用命令行创建一个文件hello.java,并输入相关内容

#创建一个java文件,并随便输入一些内容,比如说:hello,world!
$ cat >hello.java
hello,world!

(4)将本地仓库和远程仓库连接起来,使用SSH连接,采用HTTPS连接需要输入账户名和密码

git remote add origin "SSH链接"

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。 

(5) 将项目的所有文件添加至暂存区,并提交至本地仓库

git add .
git commit -m "first commit"

(6)远程仓库有的文件不在本地代码目录里,合并本地仓库和远程仓库

 git pull --rebase origin master

(7) 将文件提交至远程仓库

git push origin master

注1:上面命令表示,将当前分支推送到origin主机的对应分支master。  git push -u origin master 命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

 注2:如果不进行第六步合并本地仓库和远程仓库,直接提交的话,会出现下述错误

(8)查看上传结果

2、第二种方式提交

(1)在码云上创建一个远程的仓库,我给这个仓库取名为“mystudy”

(2)克隆这个远程仓库,采用SSH的方式克隆

git clone "SSH的链接"

 (3)把项目放进这个克隆到本地的仓库里

(4)提交至远程仓库

git add .
git commit -m "new html file"
git push

(5) 查看提交结果

3、查看提交历史 

(1)查看历史提交记录

在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。

 git log

 (2)以列表的形式查看指定文件的历史修改记录(文件名不用打引号)

git blame 文件名

八、Git分支 

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。而且当初始化Git仓库的时候,Git会默认创建一个名为master的主分支(它是必须要有的分支)。在Git中,分支只是一个指向单个commit的指针,Git为我们创建分支可以说就是创建了一个可以移动的新指针。在比较大的公司里,可能会面临多人协同开发的场面,这时候Git分支就可以防止互相干扰,提高协同开发的效率。

1、列出当前分支

当branch 后面不带具体参数时,下列命令会列出当前本地的分支

git branch

 从上图可以看出,当前本地只有一个叫master的分支。事实上在我们执行git init初始化仓库的时候,Git就会默认为你创建一个master分支(一般来说,master分支必须得有)。

2、列出远程分支

git branch -r

master: 代表本地的某个分支名

origin master:代表着两个概念,前面的 origin 代表远程名,后面的 master 代表远程分支名

origin/master: 只代表一个概念,即远程分支名,是从远程拉取代码后在本地建立的一份拷贝

3、创建一个新分支

(1)当我们要创建一个新的分支时,直接git branch+分支名即可

#创建了一个开发用的新分支,名字叫dev
git branch dev
#创建了一个测试分支
git branch test

(2) 查看当前存在的分支

git branch

从上图可以看见,除了默认的master分支外,还有我们新创建的dev和test分支 

4、切换分支

(1)切换到我们要修改的分支

#创建test.txt文件,输入内容hello,world
echo "hello,word" > test.txt
#将文件添加进暂存区
git add .
#将文件提交至本地仓库
git commit -m 'add test.txt'

 用“ls”查看当前分支(master分支)的文件

用git checkout (分支名) 切换我们需要修改的分支

 git checkout test

 再用“ls”查看当前分支(test分支)的文件

 当我们切换到test分支或者dev分支的时候,新添加的文件test.txt被移除了。当切换回主分支时,文件又重新出现了。

(2) 新建一个分支并切换到该分支下

表示创建了一个新分支v1,这里的v1表示分支名字,并切换到该分支下

git checkout -b v1

 查看当前分支(v1分支),并在该分支下进行删除操作

#在当前分支下删除文件test.txt
git rm test.txt

用touch命令在该分支下新建一个文件,并进行下列操作

#新建一个login.html文件
touch login.html
#查看当前分支下的文件
ls
#将文件添加进暂存区
git add .
#将暂存区的文件提交至本地仓库
git commit -m 'removed test.txt、add login.html'
#查看当前分支下的文件
ls
#切换回主分支
git checkout master
#查看主分支下的文件
ls

 我们可以发现,在v1分支下,我们看不见删除的test.txt文件,但可以看见新创建的login.html文件;切换回主分支时,删除的文件回来了,但新增加的文件不存在于主分支中了。就好比多个版本的发布,一般开发都会保留修改之前的版本。上一个版本出现bug了,创建一个分支并在当前分支下去修改一些内容,而不是在原始版本上直接修改。可以把master分支看作初始版本,v1版本是修复版本。利用切换分支机制,可以将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。

5、合并分支

假如我们在当前分支上刚开发完一个项目,这个分支有了独立的内容,我们便会想让这个分支合并到主分支里。

git merge v1

将v1分支合并到主分支上,再用ls命令查看,可以看见之前删除的test.txt文件不见了,出现了新文件login.html

6、删除分支

(1)将v1分支合并完就可以将其删除了

git branch -d v1

(2) 再次查看当前分支,发现v1分支被删除

git branch

7、其它分支命令

#更新远程分支列表,如果你的remote branch不是在origin下,按你得把origin换成你的名字
git remote update origin --prune
#删除远程分支
git push origin --delete 远程分支名
#查看所有分支,包括本地和远程的
git branch -a

九、IDEA集成Git 

1、第一种方式提交

(1)绑定Git

将刚刚克隆的远程仓库文件复制到我们的项目目录下即可

(2)查看IDEA是否绑定 

打开IDEA查看项目是否已经绑定Git成功,会出现三种图标,第一个是“Update Project”,更新项目;第二个是“Commit”提交;第三个是“Push”,上传至远程仓库。

(3)提交项目 

点击绿色的√(commit),先勾选要提交的项目,可以看见右侧绿字显示添加的数量,再添加message描述(这个一定要添加),然后再commit提交至本地仓库

(4)从本地仓库提交至远程仓库,点击绿色箭头push

(5)查看提交结果

2、使用命令行提交

 使用IDEA Terminal 命令行实现项目上传至远程仓库(不推荐使用)

#将项目的所有文件添加至缓存区
git add .
#将缓存区的文件提交至本地仓库
git commit -m "new file update map2.html"
#将本地的仓库上传至远程仓库
git push

3、第三种方式提交

(1)使用IDEA完成本地库的初始化操作

在IDEA导航栏里找到VCS,然后选择Create Git Repository,可以看见项目目录里多了一个.git文件,IDEA上面也多了几个图标,均表示本地库初始化完成了

(2) 使用IDEA将文件添加至暂存区

创建文件以后就会提示是否需要Add操作,当点击了Add后就会变为绿色,说明添加到了暂存区,未点击add会显示红色。

 将整个模块添加至暂存区,然后整个src目录下的文件均变成绿色了

(3) 将暂存区的文件提交至本地仓库(进行commit操作)

填写好描述信息(必填),点击commit提交至本地仓库

IDEA会显示提交的日志和修改的日志

 (4)将本地仓库上传至远程仓库,点击绿色箭头就行(Push),然后添加远程仓库的地址(这里采用的是SSH地址),默认的远程仓库名为origin

上传至远程仓库的时候被系统拒绝push了 

在push之前,一定要在控制台加上下面的命令来拉取远程仓库的文件,否者会被拒绝提交,因为本地仓库和远程仓库是两个不同的仓库,远程仓库中有的一些配置文件本地仓库没有。

 git pull --rebase origin master

(5)上传结果

4、使用IDEA克隆远程仓库

(1)File-->new-->Project from Version Control

(2)填入要克隆的远程仓库的地址,选择一个空的文件夹放克隆下来的文件

(3)克隆成功

5、IDEA分支管理

(1)在IDEA的右下方有个分支管理,在这里可以进行新建分支、切换分支等操作。比如我在这里创建了一个dev的分支。

点击New Branch可以新建一个分支,自定义一个分支名即可

(2) 我将分支切换至dev,并修改文件重新提交至远程仓库,结果如下所示:

猜你喜欢

转载自blog.csdn.net/qq_53860947/article/details/124795106
今日推荐