关于Git在Windows系统上的安装和使用
本文是对自己学习过程的记录和总结,如果还能给你带来帮助,对我来说也是幸运的。
声明:
本文是对自己学习过程的记录和总结,如果还能给你带来帮助,对我来说也是幸运的;当你发现内容有误,请你慷慨的帮我指点出来,在此感谢。
注意:
本文所演示的内容是在Windows11系统上完成的,每一步的操作都附带图片,便于参考。
一、Git的下载与安装以及配置
1.Git的下载与安装
a.Git下载地址:Git
b.点击链接进入Git官网下载界面,如图1.1所示,并点击 "Download for Windows"。
图1.1
c.进入新界面后,点击 "64-bit" 开始下载 ,如果你的电脑是32位,请点击 "32-bit",请参考图1.2。
图1.2
d. 下载完成后,双击.exe可执行程序,开始Git的安装,由于安装过程只需要点击下一步即可顺利完成安装【不同版本的Git在安装过程中,有些步骤不同,但也只需默认下一步就行】;所以我将不对每个步骤进行讲解,只对部分步骤进行简单提示,安装过程请参考图1.3~1.18。
图1.3
图1.4可以选择自己的安装目录,不过要方便自己找到,后面内容会涉及这个安装路径。
图1.4
图1.5中默认勾选了 "Windows Explorer integration" ,勾选这个后,在我们后续使用中,点击鼠标右键,就可以快速选择打开Git GUI或Git Bash,这里不理解的直接保持默认即可。
图1.5
图1.6
图1.7
图1.8
图1.9
图1.10
图1.11
图1.12
图1.13
图1.14
图1.15
图1.16
图1.17
图1.18把绿色框中的钩去掉后,点击 "Finish"后,完成Git安装。
图1.18
e. 在桌面空白出,点击鼠标右键,选择 "Open Git Bash here",如图1.19所示。
图1.19
f. 在弹出来的窗口中输入 "git" ,按下回车键,结果如图1.20所示,代表Git成功安装。
图1.20
2.Git的配置
安装完Git,是可以正常使用的,如果后续想要向远程仓库提交项目,就必须完成下面的用户配置【全局配置】,也就是配置自己在Git中的个人信息。
a.也是在桌面空白处点击鼠标右键,打开 "Git Bash" ,输入以下命令,请将 "名字" 改为自己想要的名字后,按下回车键,如图1.21所示。
git config --global user.name "名字"
图1.21
b.完成上一步骤后,继续输入以下命令,将 "真实邮箱" 改为自己的邮箱,QQ邮箱,谷歌邮箱,微软邮箱等都是可以的,输入完成后,按下回车,如图1.22所示。
git config --global user.email "真实邮箱"
图1.22
c.到这里,Git的用户配置其实已经完成,如果你以后想修改这些配置也很简单,因为所有的配置都是能在本地找到对应的文件;因为马上介绍的两个文件都是隐藏文件,所以先介绍下显示隐藏文件的方法,在 "此电脑" 中点击 "查看" ,点击 "显示" ,最后点击 "隐藏的项目" ,如图1.23所示。
图1.23
d.现在可以看到隐藏文件后,我们去找到刚才用户配置的 "名字" 和 "邮箱"的文件,可以在C盘的用户目录的当前登录用户文件夹下找到,比如我的是"C:\Users\sq_mm" ;在目录下找到名为 ".gitconfig" 的文件 ,用记事本打开,如图1.24所示,".gitconfig" 中存放的正是刚才配置的内容,我们也可以直接在这个文件中进行Git用户配置的修改。
图1.24
e.除了上面的方法可以查看用户配置,还可以通过输入命令的方式查看用户配置,我们在 "Git Bash" 中输入以下命令即可查看用户配置,如图1.25所示。
git config --global --list
图1.25
f.上面都是用户配置的操作,下面这条命令是查看Git的系统配置,也就是Git安装时的配置,对应的配置文件也可以找到, 在Git的安装路径下的 "Git\etc" 文件夹中,名为 "gitconfig" 的文件就是系统配置文件,用记事本打开,如图1.26所示,两种查看方法看到的都是相同内容。
git config --system --list
图1.26
g.最后介绍一条查看Git配置的命令,如图1.27所示,这条命令可以查看Git的所有配置,也就是系统配置+用户配置 。
git config -l
图1.27
二、Git的基础理论与实践
1.Git基础理论
a.Git工作区域的组成
如图2.1所示,Git由4个工作区域组成,分别是"Workspace","Index"[也叫 "Stage"],"Repository" ,"Remote" ;其中 "Remote" 是远程工作区域,也是远程仓库,而前三个是本地工作区域,也是由前三个组成的本地仓库,各工作区域可以通过命令完成对应操作。
图2.1
"Workspace": 工作区,用于存放项目代码的地方。
"Index/Stage":暂存区,用于临时存放代码的改动,这个区域本质上只是个文件,保存即将提交到文件列表的信息。
"Repository":版本库区,用于安全存放已提交所有版本数据的位置。
"Remote":远程仓库,托管代码的服务器。
图2.2也许能更好的表示Git本地仓库的组成,因为远程仓库是独立的,我们暂时不考虑它的存在。
图2.2
上图中左上角的 "Directory" 表示本地仓库,其实也是表示本地仓库就是一个目录,就是一堆文件夹组成;从图中的布局可以看出,"Directory" = "Workspace" + ".git",所以在本地仓库中,除开.git文件夹,其余都属于 "Workspace" 的天下;看 ".git" 又由两部分组成,一部分是 "Index/Stage",另一部分是HEAD指向的本地 "Repository";所以我们可以暂时理解为 "Directory" = "Workspace" + "Index/Stage" + "Repository",也就是我们上面说的三个区域组成本地仓库。
好了,有了上面的基础,我们重新梳理本地仓库如图2.3所示:
图2.3
b.Git文件状态
Git的本质是对版本进行控制,也就是对文件的版本进行控制,使用Git对文件进行修改、或者提交等操作时,需要知道文件当前处于什么状态,不然可能会出现提交了现在不想提交的文件,或者要提交的文件却没有提交上,在Git中文件分为以下状态:
"Untracked":文件未跟踪;此文件在文件夹中,但并没有加入git库,不参与版本控制。
"Unmodify":文件已入库,并且未修改;即版本库中的文件内容与文件夹中完全一致。
"Modified":文件已修改;仅仅是修改,并没有进行其它操作。
"Staged":文件已暂存;并没有同步到本地版本库中。
"Committed":文件已提交;已提交到本地版本库,受到版本控制。
有了一定的理论知识后,在后面的实际中再慢慢体会吧。
2.Git实践
a.在桌面新建一个文件夹,名为 "gitcode",进入文件夹后,在文件夹空白处点击鼠标右键,进入 "Git Bash",接下来的所有操作都是基于此目录,也就是我们以当前文件夹为本地仓库;所以只有在这个文件夹下打开 "Git Bash"或者通过命令行进入此文件夹,才能完成后面正确的操作,如图2.4所示。
图2.4
b.接下来,我们可以开始学习新的命令,第一个是查看仓库状态的命令:
git status
图2.5
如图2.5所示,命令执行后,提示这不是一个仓库,显然,我们刚才只是自己定义这个文件夹作为仓库,而Git并没有判定这个文件夹为仓库。
c.第二个命令,用于初始仓库:
git init
图2.6
如图2.6所示,执行命令后,如果提示的和图片里的内容相同,则代表仓库初始化成功,这时会发现该文件夹下多了一个 ".git" 的文件夹,同样的,这也是一个隐藏文件夹,有了这个文件夹,就说明当前目录是一个Git仓库,".git"就是我们上面提到的Git管理空间;同时,在命令行最后多了一个 "master" ,这代表目前处于仓库的 "master" 分支,这个指向的分支也可以通过 ".git" 文件夹中的HEAD查看,用记事本打开HEAD,如图2.7所示:
图2.7
这也验证了理论部分的HEAD是指向当前分支。
d.此时,我们在 "gitcode" 文件夹下再新建一个 "hello.txt" 文件 ,注意:不是在 ".git" 文件夹下哦!并在命令窗口中使用仓库状态查看命令:
图2.8
如图2.8所示, 提示我们 "Untracked",也就是我们理论部分说的文件状态,新建的这个文件未跟踪,并提示我们使用 "git add <file>" 命令,是的,这就是需要我们马上学的命令。
e.第三个命令,将文件添加到暂存区,文件名跟你自己的,我的文件名是hello.txt:
git add hello.txt
当然也可以使用下面这句命令 ,下面这句是将文件夹下所有未跟踪文件都添加到暂存区:
git add .
上面两句命令二选一即可,两条都执行也不会出问题的,我直接演示两条都执行。
图2.9
当前,我们新添加的文件 "hello.txt" 已处于暂存区了,可以再次通过 "git status" 命令查看:
图2.10
注意:此时的文件只是处于暂存区,当前文件状态也就是 "Staged"。
f.第四个命令,将暂存区的文件提交到本地版本库区:
git commit -m "first file"
图2.11
如图2.11所示,成功将文件提交到了本地版本库区,当前文件状态就为 "committed" ;命令中的-m代表提交信息,双引号里填入具体的提交信息,例如我表达的是:这是我提交的第一个文件。
g.第五个命令, 查看本地仓库的提交日志:
git log
图2.12
可以看到日志中有提交的作者名字和邮箱,以及提交的时间和提交时的提示信息。
h.第六个命令,查看分支:
git branch
图2.13
上图所示,当前仓库只有一个分支,*指着的就是当前所在的分支,使用以下命令会创建一个名为 "dev" 的分支,创建完成后我们再次使用 "git branch" 命令查看:
git branch dev
图2.14
如图2.14所示,我们创建了 "dev" 分支,但目前并没有指向该分支。
i.第七个命令,切换分支:
git checkout dev
图2.15
上图所示,我们切换分支后,使用命令 "git branch" 查看分支,看到*已经指向了 "dev",并且在命令行的最后,也从 "master" 变成了 "dev",此时,我们再次使用记事本打开 ".git" 文件夹下的HEAD文件,也可以看到指向的分支变了,如图2.16所示:
图2.16
最后,再介绍下分支的删除,也是第六个命令的衍生:
git branch -d dev
-d 表示删除分支,dev 表示分支名;如果把 -d 更换为 -D 就表示强制删除,如下命令:
git branch -D dev
图2.17
如上图所示,我们使用了删除分支,以及强制删除分支都失败了,原因是我们当前正处于这个要被删除的分支上,从命令行最后的 "dev" 就可以看出,也可以通过前面介绍的分支查看等方式看到;所以,我们需要先切换到其它分支后,再来删除 "dev" 分支,使用命令 "git checkout master" 切换到 "master" 分支,再执行刚才的删除命令,最后再查看分支,如图2.18所示:
图2.18
如上图所示,我们已经成功删除了分支;通过这一部分的实践,我们对Git的基础命令使用的应该也比较熟练了,也大概明白了把项目提交的本地版本库的流程,我们最后来列出来:
*在工作空间中添加或者是修改了文件。
*把需要进行版本管理的文件都放入到暂存区。 使用命令:git add .
*将暂存区的文件提交到本地版本库。 使用命令:git commit -m "提示信息内容"
其实到这里,在本地仓库的操作就基本完成了,接下来将介绍本地仓库与远程仓库的交互。
三、本地与远程仓库交互
在进行本地与远程仓库进行交互前,我们还需要完成一个准备工作,在前面的学习中可以注意到,我们只对Git进行了本地的一些配置,对Git仓库的学习也一直停留在本地仓库;而需要注意的是,本地仓库并非直接关联了一个远程仓库,而是我们通过一定的方式,让Git本地仓库与某个或多个远程仓库建立联系,只有完成这个操作,我们本地仓库的项目才能提交到远程仓库中。
远程仓库有很多,我们使用的最多的例如:Github、码云等,接下来我们以Github远程仓库为例进行学习,其它远程仓库的使用也是大同小异;这里的前提是,你已经完成了Github账号的注册,能成功登录到Github的主页面。
1.使用SSH完成Git与Github的绑定
在这里提示一下,如果不绑定,只是没办法完成Git本地仓库向远程仓库提交代码,但不影响从远程仓库下载代码,也就是说,不完成这步,也是可以进行这部分第3小节的操作的。
在Github远程仓库上,一般都是通过SSH(安全外壳协议)来进行授权的,目的就是通过SSH协议让Git与Github建立通信,或者理解为你的计算机与Github建立通信,大家在遵守同一个协议的前提下,完成数据的传输。
a.第一步:生成SSH key
首先我们需要查看本机有没有安装SSH,因为在Windows中是没有默认安装的,但是我们前面在进行Git的安装时,只有默认选择安装了Git Bash,那么SSH也会被一起安装的,那么我们在Git Bash中输入ssh进行查看,如图3.1所示。
图3.1
如上图所示,代表已经安装了ssh。
接下来在窗口中输入以下命令,在这个过程中根据提示按3次回车,最后生成密钥:
ssh-keygen -t rsa
图3.2
如图3.2所示,成功生成密钥 ,命令中的 -t 是表示选择算法,rsa是算法名字,所以整个命令就是用rsa算法生成密钥。
密钥生成后我们可以通过路径 "C:\Users\当前登录用户名\.ssh" 找到,需要注意的是.ssh是隐藏文件,在.ssh文件中,有两个文件,id_rsa是私钥、id_rsa_pub是公钥,如图3.3所示。
图3.3
b.第二步:在Github中添加SSH key
在登录了Github的前提下,首先在Github主页面点击右上角头像,在弹出的列表中选择 "Settings" 选项,如图3.4所示。
图3.4
在 "Settings" 界面选择 "SSH and GPG keys",如图3.5所示:
图3.5
在新的界面中点击右上角的 "New SSH key",这里我原本就有一个密钥了,这是另外一台电脑的密钥,不用管,所以我们继续点 "New SSH key" 即可,如图3.6所示。
图3.6
此时,我们把 ".ssh" 文件夹中的 id_rsa_pub 公钥里的内容,复制到如图3.7所示的Key下面内容框里,复制完成后,再点击下面的 "Add SSH key" 按钮。
图3.7
紧接着,需要我们输入Github的登录密码进行验证,如图3.8所示。
图3.8
然后,你就会发现我们成功添加了一个key,如图3.9所示。
图3.9
c.第三步:验证Git与Github是否成功建立通信
在 Git Bash 窗口中输入下面命令,并按提示输入 yes 后,按下回车键后,如图3.10所示:
ssh -T git@github.com
图3.10
如上图所示,最后提示 "Hi xxxxx! You've successfully xxxx " 则表示已成功。
2.Github新建仓库
为了方便演示从Github远程仓库上下载代码和从本地仓库上传代码到Github远程仓库,我们先在Github上新建一个仓库。
a.先回到登陆后的Github主页面,点击小箭头,从展开的列表中选择 "New repository",如图3.11所示。
图3.11
b.在创建仓库界面,设置想要的仓库名字 "gitTest",勾选上 "Add a README file" 后,仓库里会自动生成一个文件,最后点击 "Create repository" ,如图3.12所示。
图3.12
创建成功后,自动进入此项目仓库的主页面,如图3.13所示。
图3.13
3.从Github下载仓库
a.从Github上下载项目可以通过点击 "Code" ,再点击下面箭头所指的图标复制地址,当然也可以直接点击最下面的 "Download ZIP" 下载压缩包,我们这里介绍复制地址的方法,如图3.14所示。
图3.14
b.复制了地址后,我们在桌面打开 Git Bash,输入下面命令,并在命令后面粘贴上刚才的地址,地址与前面命令直接有一个空格,如图3.15所示。
git clone git@github.com:MmlSQ/gitTest.git
图3.15
命令 "git clone 地址" 是从指定的地址下载项目代码,上图所示,执行指令并下载完成后,桌面会多一个与Github远程仓库项目名相同的文件夹,文件夹里的内容也与Github相同,并且文件夹里有 ".git" 文件,说明下载下来后,这个文件夹就已经是一个本地仓库了。
4.上传代码到Github仓库
a.我们在刚下载的 "gitTest" 本地仓库里添加一个 "hello.txt" 文件,并在 "gitTest" 文件夹中新打开 Git Bash,如图3.16所示。
图3.16
b. 此时使用查看仓库状态命令:
git status
图3.17
如上图所示,新建的 "hello.txt" 文件处于 "Untracked" 状态。
c.接着使用下面命令,将新文件添加到暂存区,并再次查看仓库状态:
git add .
图3.18
如上图所示,已成功将 "hello.txt" 添加到了暂存区,文件状态处于 "Staged"。
d.接着使用下面命令,把暂存区的文件提交到本地版本库中,并再次查看仓库状态:
git commit -m "gitTset first file"
图3.19
如上图所示,成功将 "hello.txt" 提交到了本地版本库中,文件状态处于 "committed"。
此时已经完成了本地仓库的提交,我们只需最后一步把本地仓库的新文件上传到远程仓库即可,但是我们注意到,前面我们进行了Git的本地配置,然后又把Git与Github建立了通信,但是怎么才能把本地仓库代码上传到指定的 "gitTest" 远程仓库项目中呢?因为我们在Github中肯定不止这个项目。
e.因为我们桌面的这个 "gitTest" 本地仓库是直接从Github完整下载下来的,所以已经给我们关联了具体远程仓库的名字,我们当前只需要通过下面命令查看远程仓库名字即可,至于手动建立关联将在后面第5小节讲。
git remote
图3.20
从上图可以知道,我们的 "gitTest" 远程仓库名为 origin。
f.所以我们最后一步,将 "hello.txt" 文件提交到远程仓库 origin,命令如下:
git push origin main
图3.21
命令 "git push 远程仓库名 分支",可以看到远程仓库名为 "origin" ,分支为 "main",因为当前仓库只有一个分支,而且名字是 "main",可以从命令行的最后看出,也可以通过使用 "git branch" 命令查看;如上图所示,则代表已成功上传远程仓库,我们刷新远程仓库,如图3.22所示。
图3.22
可以看到,我们新上传的 "hello.txt" 已经在Github远程仓库中了。
5.手动建立与远程仓库的关联
前面第3、4小节介绍了直接 "git clone" 远程仓库,下载下来后,本地仓库自动与远程仓库建立了关联,并且可以通过 "git remote" 查看远程仓库名字,那么如何手动建立关联呢?
a.首先在桌面创建一个新文件夹 "gitws" ,并在文件夹中打开 Git Bash,最后初始化Git本地仓库。
图3.23
b.关联 "gitws" 本地仓库与Github的 "gitTest" 远程仓库,使用如下命令:
git remote add gittest git@github.com:MmlSQ/gitTest.git
命令中的 "gittest" 是我们给远程仓库自定义的名字,而后面跟的是远程仓库的地址,地址如图3.24所示:
图3.24
图3.25
如图3.25所示,创建关联后,我们并使用命令 "git remote" 查看远程仓库名字。
c.接着使用下面命令,将远程仓库内容同步到本地仓库:
git pull gittest HEAD
图3.26
命令 "git pull 远程仓库名 本地分支" 是拉取远程仓库的文件到本地仓库的指定分支里,因为HEAD指定的是本地仓库当前所选分支;如图3.26所示,成功将远程仓库的内容下载到了本地仓库。
d.在 "gitws" 本地仓库中修改README.md的内容,例如图3.27所示:
图3.27
e.将已修改的内容添加到暂存区,并提交到本地版本库:
git add .
git commit -m "modify README.md"
图3.28
f.最后上传远程仓库:
git push gittest master
图 3.29
上图所示,表示上传成功,这时,我们去康康远程仓库的内容,如图3.30所示;诶,等等,怎么不对呢,明明有提示上传,怎么没有修改呢?
图3.30
点开 "main" 旁边的箭头,发现多了一个 "master" 分支,原来我们刚才在本地仓库使用的是master分支,上传远程仓库时,远程仓库原本只有main分支,为了使远程与本地仓库分支同步,就又新建了一个master分支。
由于分支这部分的内容很多,暂时不展开来讲,如何解决当前的问题呢?
g.在Git Bash中输入以下命令,创建并切换到main分支:
git checkout -b main
再执行合并分支命令,表示把master分支合并到main主分支上:
git merge master
图3.31
如图所示,已经合并完成,假设我们在本地仓库和远程仓库都不想要master分支,只想保留一个main分支。
h.删除本地分支命令:
git branch -d master
图3.32
删除后我们查看本地分支,只有一个main分支了。
i. 删除远程仓库分支命令:
git push gittest --delete master
命令中的 "gittest" 是远程仓库名,master是要删除的分支。
图3.33
如上图所示,远程仓库的master分支已经被删除了。
j. 此时再重新上传远程仓库,使用以下命令:
git push gittest main
图3.34
如上图所示,上传成功后,Github远程仓库也更新了对应内容,并且master分支已经删除。
到这里,GIt在Windows上的安装和基本使用已介绍完了。
参考:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)