网站建设需要做些什么,新公司名称取名,网站推广需要域名迁移,邮箱购买网站什么是Git#xff1f;我们开发的项目#xff0c;也需要一个合适的版本控制系统来协助我们更好地管理版本迭代#xff0c;而Git正是因此而诞生的#xff08;有关Git的历史#xff0c;这里就不多做阐述了#xff0c;感兴趣的小伙伴可以自行了解#xff0c;是一位顶级大佬在…什么是Git我们开发的项目也需要一个合适的版本控制系统来协助我们更好地管理版本迭代而Git正是因此而诞生的有关Git的历史这里就不多做阐述了感兴趣的小伙伴可以自行了解是一位顶级大佬在一怒之下只花了2周时间用C语言开发的之后的章节还会遇到他 可以看到它大致分为4个板块工作目录存放我们正在写的代码当我们新版本开发完成之后就可以进行新版本的提交暂存区暂时保存待提交的内容新版本提交后会存放到本地仓库本地仓库位于我们电脑上的一个版本控制仓库存放的就是当前项目各个版本代码的增删信息远程仓库位于服务器上的版本控制仓库服务器上的版本信息可以由本地仓库推送上去也可以从服务器抓取到本地仓库它是一个分布式的控制系统因此一般情况下我们每个人的电脑上都有一个本地仓库由大家共同向远程仓库去推送版本迭代信息。通过这一系列操作我们就可以实现每开发完一个版本或是一个功能就提交一次新版本这样我们就可以很好地控制项目的版本迭代想回退到之前的版本随时都可以回退想查看新版本添加或是删除了什么代码随时都可以查看。
安装Git 2.1 命令行软件推荐Git官网去下载最新的安装包https://git-scm.com/download/安装完成后需要设定用户名和邮箱来区分不同的用户git
config --global user.name Your Name
git config --global user.email emailexample.com
#查看是否配置成功
git config --list3.1 git init初始化仓库 我们可以将任意一个文件夹作为一个本地仓库输入
git init输入后会自动生成一个.git目录注意这个目录是一个隐藏目录而当前目录就是我们的工作目录。创建成功后我们可以查看一下当前的一个状态输入
git status如果已经成功配置为Git本地仓库那么输入后可以看到
On branch master
No commits yet这表示我们还没有向仓库中提交任何内容也就是一个空的状态。 3.2 git status显示版本状态
3.3 git add 和 git commit git add将变更的文件添加到Git中 git commit提交变更 接着我们来看看如何使用git来管理我们文档的版本我们创建一个文本文档随便写入一点内容接着输入
git status我们会得到如下提示
Untracked files:(use git add file... to include in what will be committed)hello.txt
nothing added to commit but untracked files present (use git add to track)其中Untracked files是未追踪文件的意思也就是说如果一个文件处于未追踪状态那么git不会记录它的变化始终将其当做一个新创建的文件这里我们将其添加到暂存区那么它会自动变为被追踪状态
git add hello.txt #也可以 add . 一次性添加目录下所有的再次查看当前状态
Changes to be committed:(use git rm --cached file... to unstage)new file: hello.txt现在文件名称的颜色变成了绿色并且是处于Changes to be committed下面因此我们的hello.txt现在已经被添加到暂存区了。接着我们来尝试将其提交到Git本地仓库中注意需要输入提交的描述以便后续查看比如你这次提交修改了或是新增了哪些内容 git commit -m Hello World接着我们可以查看我们的提交记录 git loggit log --graph我们还可以查看最近一次变更的详细内容
git show [也可以加上commit ID查看指定的提交记录]再次查看当前状态已经是清空状态了
On branch master
nothing to commit, working tree clean接着我们可以尝试修改一下我们的文本文档由于当前文件已经是被追踪状态那么git会去跟踪它的变化如果说文件发生了修改那么我们再次查看状态会得到下面的结果
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: hello.txt也就是说现在此文件是处于已修改状态我们如果修改好了就可以提交我们的新版本到本地仓库中 git add .git commit -m Modify Text接着我们来查询一下提交记录可以看到一共有两次提交记录。我们可以创建一个.gitignore文件来确定一个文件忽略列表如果忽略列表中的文件存在且不是被追踪状态那么git不会对其进行任何检查
#这样就会匹配所有以txt结尾的文件
*.txt
#虽然上面排除了所有txt结尾的文件但是这个不排除
!666.txt
#也可以直接指定一个文件夹文件夹下的所有文件将全部忽略
test/
#目录中所有以txt结尾的文件但不包括子目录
xxx/*.txt
#目录中所有以txt结尾的文件包括子目录
xxx/**/*.txt创建后我们来看看是否还会检测到我们忽略的文件。 3.4 git push 如果你还不知道远程仓库是什么那跳过本章节。 命令是
git push origin 本地分支:远端希望创建的分支
3.4.1 git push -u 问题场景 一般将本地仓库推送到远程仓库的时候一般会使用 git push 命令。而作为新手在网上看到一些教程有的会在 git push 的时候带上一个 -u 参数而有的则没有。而推送的实际结果没有什么区别。就很好奇 -u 参数的作用到底是什么带上-u 参数其实就相当于记录了push到远端分支的默认值这样当下次我们还想要继续push的这个远端分支的时候推送命令就可以简写成git push即可。 3.4.2 git 里面的 origin 到底代表啥意思? origin 用来代表“远程仓库” 3.4.3 git reset回滚 当我们想要回退到过去的版本时就可以执行回滚操作执行后可以将工作空间的内容恢复到指定提交的状态
git reset --hard commitID执行后会直接重置为那个时候的状态。再次查看提交日志我们发现之后的日志全部消失了。那么要是现在我又想回去呢我们可以通过查看所有分支的所有操作记录
git reflog这样就能找到之前的commitID再次重置即可。
3.5 分支 分支就像我们树上的一个树枝一样它们可能一开始的时候是同一根树枝但是长着长着就开始分道扬镳了这就是分支。我们的代码也是这样可能一开始写基础功能的时候使用的是单个分支但是某一天我们希望基于这些基础的功能把我们的项目做成两个不同方向的项目比如一个方向做Web网站另一个方向做游戏服务端。因此我们可以在一个主干上分出N个分支分别对多个分支的代码进行维护。 3.5.1 创建分支 我们可以通过以下命令来查看当前仓库中存在的分支
git branch我们发现默认情况下是有一个master分支的并且我们使用的也是master分支一般情况下master分支都是正式版本的更新而其他分支一般是开发中才频繁更新的。我们接着来基于当前分支创建一个新的分支
git branch test
#对应的删除分支是
git branch -d yyds现在我们修改一下文件提交再查看一下提交日志
git commit -a -m branch master commit通过添加-a来自动将未放入暂存区的已修改文件放入暂存区并执行提交操作。查看日志我们发现现在我们的提交只生效于master分支而新创建的分支并没有发生修改。 我们将分支切换到另一个分支
git checkout test我们会发现文件变成了此分支创建时的状态也就是说在不同分支下我们的文件内容是相互隔离的。 我们现在再来提交一次变更会发现它只生效在yyds分支上。我们可以看看当前的分支状态
git log --all --graph3.5.2 合并分支 我们也可以将两个分支更新的内容最终合并到同一个分支上我们先切换回主分支git checkout master 接着使用分支合并命令
git merge test会得到如下提示
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.在合并过程中产生了冲突因为两个分支都对hello.txt文件进行了修改那么现在要合并在一起到底保留谁的hello文件呢我们可以查看一下是哪里发生了冲突
git diff因此现在我们将master分支的版本回退到修改hello.txt之前或是直接修改为最新版本的内容这样就不会有冲突了接着再执行一次合并操作现在两个分支成功合并为同一个分支。
3.5.3 变基分支除了直接合并分支以外我们还可以进行变基操作它跟合并不同合并是分支回到主干的过程而变基是直接修改分支开始的位置比如我们希望将yyds变基到master上那么yyds会将分支起点移动到master最后一次提交位置
git rebase master变基后yyds分支相当于同步了此前master分支的全部提交。
3.5.4 优选 我们还可以选择将其他分支上的提交作用于当前分支上这种操作称为cherrypickgit cherry-pick commit id:单独合并一个提交 这里我们在master分支上创建一个新的文件提交此次更新接着通过cherry-pick的方式将此次更新作用于test分支上。 3.6 远程仓库 远程仓库实际上就是位于服务器上的仓库它能在远端保存我们的版本历史并且可以实现多人同时合作编写项目每个人都能够同步他人的版本能够看到他人的版本提交相当于将我们的代码放在服务器上进行托管。 远程仓库有公有和私有的公有的远程仓库有GitHub、码云、Coding等他们都是对外开放的我们注册账号之后就可以使用远程仓库进行版本控制其中最大的就是GitHub但是它服务器在国外我们国内连接可能会有一点卡。私有的一般是GitLab这种自主搭建的远程仓库私服在公司中比较常用它只对公司内部开放不对外开放。