0


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

前言

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)将公钥添加进码云(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,并修改文件重新提交至远程仓库,结果如下所示:

标签: 版本控制 Git IDEA

本文转载自: https://blog.csdn.net/qq_53860947/article/details/124795106
版权归原作者 全村第二帅 所有, 如有侵权,请联系我们删除。

“Git工具--教你如何从安装到掌握”的评论:

还没有评论