介绍
介绍
前面我们学习了GitLab环境的安装部署方法,知道了Git这个版本控制软件的作用和基本使用方法。今天福哥要带着大家学习如何在Windows环境下使用Git客户端去操作我们的项目文件,这个是每一个搞技术的人员都需要学习的知识,请大家打起精神来跟着福哥一起学习吧~
今天的内容有点多,大家可以收藏起来作为Git的使用手册!
除了今天福哥教给大家的知识之外,更多的是需要大家在日常的项目开发当中熟练掌握Git的使用技巧!
环境
操作系统 | Windows 10 专业版 64位 |
Git客户端软件 | 2.41.0 |
Git服务器软件 | gitlab/gitlab-ce:12.1.3-ce.0 |
Git服务器IP | 192.168.168.68 |
Git服务器端口 | 1022 |
安装
下载
Git官网下载地址,我们下载标准安装包的64位版本。
https://git-scm.com/download/win
现在这个链接改成github的了,下载速度真的太慢了!
安装
启动安装包,UAC确认一下!
一路“next”安装下去,全部选默认选项即可~
Git开始安装了!
不用看发行信息,去掉“View Release Notes”选项,点击“Finish”按钮完成安装!
使用
建立目录
打开资源管理器,选择一个分区,在里面建立目录tongfu.net\web。
打开Git Bash
在web目录的空白处单机右键选择“Open Git Bash here”打开Git的Bash终端窗口。后面的所有对git的操作都是在这里通过输入命令行完成的哦~
SSH授权
先把安装好的Git与前面搭建的GitLab配置起来,这样在使用git操作gitlab的项目的时候就不用输入密码了!
在终端里输入如下命令创建ed25519类型的密钥!
ssh-keygen.exe -t ed25519 -b 4096
把公钥内容复制出来。
cat /c/Users/tongfu/.ssh/id_ed25519.pub
把公钥添加到gitlab的SSH密钥里(这个上一节有讲,不会的童鞋可以翻回去看看)。
添加好了~
现在有三个SSH密钥了,一个是TFCentOS7x64服务器的,一个是TFCentOS7x64Node1服务器的,还有一个是福哥的Windows10的。
配置config
用来配置git相关参数,必须要设置的就是用户名称和用户email。
git config --global user.email "git-client@tongfu.net" git config --global user.name "git client"
克隆Clone
克隆就是把git服务器上面的一个项目的全部文件都复制一份到自己的电脑上面的操作.
现在福哥要把tfphp项目克隆一份到Windows10的桌面上,在Bash里面输入命令克隆tfphp项目。
git clone ssh://git@192.168.168.68:1022/root/tfphp.git
拉取Pull/Fetch
拉取就是从git服务器上下载项目最新的文件覆盖到本地项目里的操作。
无论是pull还是fetch都要在项目根目录操作才行,所以福哥要先切换到tfphp项目根目录下面。
cd tfphp/ ls
Pull
使用pull拉取最新的文件,如果遇到了冲突则会自动合并代码,合并不了就会提示要求人工操作。
git pull
Fetch
使用fetch拉取最新的文件,如果遇到了冲突就会提示要求人工操作。
git fetch
添加Add
命令add用来将需要提交到项目里面的新增文件或者改动文件加入到待提交队列,理论上git可以将任何文件存入项目里面。
福哥在tfphp项目的html目录下面创建了一个htm文件,一个css文件和一个js文件。
使用add命令将css、js目录和test.htm网页添加到tfphp项目里。
git add html/css/ git add html/js/ git add html/test.htm
使用status命令查看有哪些文件有变化。
git status
提交Commit
命令commit用来将add命令添加的待提交队列的内容提交到本地项目里。commit命令可以将一个阶段的改动内容存成一个版本,这个版本就是项目的一个版本。
git commit -m "添加了test.htm网页和相关资源"
日志Log
福哥刚刚提交了一个版本到项目tfphp,那么项目tfphp里面有多少版本呢?怎么查看呢?
git log -v
撤销Revert
命令revert用来将某一次的提交所作的修改撤销掉。如果撤销会造成冲突则需要人工参与合并操作。
福哥使用revert命令把刚刚的提交给撤销回来。撤销操作需要commit ID,可以通过log命令查看。
git revert 4fb8ed332084d6787f3b8dc13f63240168b3eba0
撤销操作还需要提供提交信息,这是默认的提交信息,可以不修改直接“:wq”保存退出。
保存退出后撤销操作就完成了。
再次查看日志,可以看到刚刚所作的revert撤销操作。
重置Reset
命令reset也是用来将某一次的提交所作的修改撤销掉。
reset和revert的区别在于,如果目标版本是一个历史版本,那么reset会把目标版本之后的全部版本清除掉,而revert则会保留这些版本信息。
为了测试这个,福哥就创建了几个改动。
git add html/test.htm git commit -m "add test.htm" git add html/css/test.css git commit -m "add test.css" git add html/js/test.js git commit -m "add test.js"
现在有了三个提交记录,也就是三个版本。
福哥要reset到“add test.htm”这个版本,也就是说后面的两个版本也会被撤销掉,而且commit记录也会被丢掉。
git reset 9562550c95b0819fb3536b2f0068588c9722d58e --hard
可以看到test.css和test.js都没了,连目录也没有了。
相关的commit信息也没了。
推送Push
刚刚的所有改动都只是在Windows10上面完成的,gitlab服务器上还是没有变化的,要想同步到gitlab服务器上面就需要用到push命令了。
福哥现在使用push命令把刚刚所做的所有改动都推送到远程的gitlab上面去。
git push
再去gitlab上面看看变化,可以发现html目录有了“add test.htm”这个版本信息了。
分支Branch
分支是git非常重要的功能之一,每一个开发人员每天都离不开对项目分支的操作。
分支可以理解为项目的一次任务,每当项目有一次改动任务的时候都应该从主分支master上面切出来一个分支,然后在这个切出来的分支上面进行修改,修改完毕后再把这个分支和主分支master进行合并。这样做可以最大限度地保证主分支master的稳定,还可以避免多人协同工作时候产生的冲突问题。
分支除了用来协同工作之外,也可以作为一个支线版本来使用。比如我们的某个客户想要定制一些功能,这些功能不方便合并到主分支master上面,这个时候就可以为客户单独开辟一个持久的分支,专门为这个客户进行升级。
分支还可以用来实现持续集成,就是说可以设计一个流水线,当某个分支被合并后就自动触发构建任务,自动重新部署远程服务。
查看分支
查看有哪些分支,当前处在哪个分支下。
git branch
创建分支
因为当前是master分支,所以我们是基于master分支创建tfdev230927分支。
git branch tfdev230927 git branch
切换分支
新分支有了但是当前还是master分支,切换到tfdev230927分支。
git switch tfdev230927 git branch
合并分支
先切换到master分支,然后将tfdev230927分支合并到master分支。
因为我们在tfdev230927分支什么都没改,所以也没有什么可合并的内容。
git switch master git merge tfdev230927 --squash
删除分支
任务做完了,现在可以删除tfdev230927分支了。
删除之前先切到其他分支上,当前是不能删除的。
git switch master git branch --delete tfdev230927 git branch
提交分支
我们创建的分支其实只是在本地,如果要保存到git服务器上,还需要使用push命令提交上去。
首次提交分支到git服务器需要--set-upstream参数,后面就不用了。
福哥先创建了一个新的分支tfdev230927b,再把它提交上去。
git branch tfdev230927b git push --set-upstream origin tfdev230927b
去到gitlab上面可以看到刚刚创建的分支tfdev230927b。
删除远程分支
如何删除git服务器上的分支?还是使用push命令。
福哥现在把刚刚提交到git服务器上的分支tfdev230927b删除掉。
git push origin -d tfdev230927b
去到gitlab上看一下,tfdev230927b分支也没有了。
注意:删除远程分支不代表本地分支也会被删除!!!
标签Tag
标签顾名思义就是给项目打一个版本号,这个版本基于某一次的commit版本。大多数的情况下标签是用来标志着项目的发行版本。通常用来完成持续集成,每次给项目打一个标签就会触发自动构建,自动完成远程服务的重构。
查看标签
现在还没有任何标签。
git tag
创建标签
创建一个标签v1.0.0。
git tag v1.0.0 git tag
删除标签
删除这个标签。
git tag --delete v1.0.0 git tag
提交标签
提交标签和提交分支语法类似。
git tag v1.0.1 git tag git push origin v1.0.1
去到gitlab上面看一看,在标签里面可以看到刚刚提交的v1.0.1标签。
提交所有标签可以使用这个命令。再参创建两个标签v1.0.2和v1.0.3,一起提交上去。
git tag v1.0.2 git tag v1.0.3 git tag git push origin --tags
删除远程标签
删除远程标签和删除远程分支语法也差不多。
git push origin -d v1.0.1
去到gitlab上面看一下,标签里面已经没有v1.0.1这个标签了。
注意:删除远程标签不代表本地标签也会被删除!!!
分支和标签重名
看到这里大家可能会想,既然分支和标签推送到git服务器的语法是一样的,那么如果分支和标签有重名的情况的话,推送到git服务器的是分支还是标签呢?
这个问题福哥帮大家试验了一下,会有报错的~
git branch v1.0.3 git branch git push origin v1.0.3 git branch --delete v1.0.3
反过来也是不行的!
git tag tfdev230927b git tag git push origin tfdev230927b git tag --delete tfdev230927b
总结
今天我们学习了在Windows上安装Git客户端,已经使用Git客户端操作项目文件的的各种操作的方法。其实除了这种命令行方式的Git客户端之外,还有很多图形化的Git客户端软件,使用图形化的Git客户端可以更加高效地管理我们的git项目,管理我们的服务。
后面福哥会给大家讲解如何使用小乌龟Git(TortoiseGit)图形化Git客户端来管理我们的git项目,敬请期待~