乐趣区

关于git:无linux基础也能熟练掌握git的基本操作

git 是一个用来治理我的项目的工具,它的近程仓库有 github、gitee、gitlab 代码托管核心,既能够用于集体共享代码,又能够用于团队进行我的项目的合作与公布,那么咱们一起来理解一下 git 该如何应用~

git 在在本地电脑是分成三局部的,工作区,暂存区和本地库,每一个区域的作用如下

首先,想要应用 git 来治理咱们的我的项目,那本地必然是有 git 环境,装置完 git 之后,在任何中央都能够右键 git bash here 来关上命令行窗口,找到一个适合的文件夹,把它当作 git 的仓库,应用

git init // 初始化我的项目 

此时,文件夹里有一个 .git 文件,这代表 git 的初始化实现了。

仓库初始化实现,如果没有我的项目,那 git 就没有用武之地,那咱们接着先创立一个 hello.txt,此时外面写了一些我的项目的形容。
一旦创立、批改的文件都是在 git 的本地区的。首先咱们须要将它提交到暂存区、再提交到本地库,这样能力对该文件的各个版本进行治理,更好的对我的项目进行迭代、更新、回退,那么就须要以下这些指令

git config --global user.name alice    // 全局下设置用户名, 只需设置一次
git config --global user.email alice@hello.com // 全局下设置用户邮箱, 只需设置一次
git status  // 查看本地文件的状态,红色示意在工作区文件有新增 / 批改,绿色示意在暂存区文件有新增 / 批改
git add . // 应用. 示意提交所有文件, 也能够写上具体提交文件
git commit -m "add file" // "" 示意的是备注信息 

批改和新增所作的操作是一样的,git 命令行工具的提醒会有不同,当文件屡次提交到本地库之后,本地库对于该文件的记录就会有多条,此时咱们可能想要看一下总共提交了多少个版本,能够通过以下形式查看历史记录

git log  // 将残缺的历史记录展现进去, 包含工夫、作者以及提交的备注信息
git log --pretty=oneline // 将历史记录以一行展现
git log --oneline  // 将历史记录以一行展现, 同时截取代表文件的前七位哈希值
git log reflog   // 将历史记录以一行展现, 截取代表文件的前七位哈希值, HEAD@{0} 示意以后地位 

如果某次批改出了 bug,须要回退代码,那么能够用以下的形式

git reset [回退形式] [版本]
回退形式有以下几种
--hard 代表工作区暂存库和本地区都回退
--mixed 代表将暂存区和本地库的版本回退,此时输出 git status 查看文件状态时,提醒文字会标为红色,因为工作区和暂存区的文件不统一了
--soft 代表只将工作区的版本回退,此时输出 git status 查看文件状态时,提醒文字会标为绿色,因为工作区与暂存区的文件统一,只是暂存区和本地库版本不统一

版本有以下几种形式
(1) 间接应用代表版本的哈希值
(2) HEAD 代表的是以后版本,通过 ^ 来示意向前一个版本, 多少个 ^ 代表向前回退多少个版本
(3) 通过~ 加上数字来示意向前 n 个版本 

如果咱们不须要某些文件了,想要删除掉,删除文件不是在间接删除,而是会新增一条记录

git rm [文件]  // 同时还须要提交暂存区和本地库
git add .
git commit -m "remark"

如果想查看以后版本与上一版本的差别,能够应用这样的命令

git diff [文件名] / git diff [某一版本] [文件名]
// 在命令行工具中通过 + 和 - 的形式来辨别减少和删除的内容 

在开发的过程当中往往不只有一个分支,常常状况下会设置主分支、测试分支、开发分支,当开发实现之后,再将本人创立的分支代码合并到主分支,咱们能够用以下形式来创立分支及合并

git branch -v // 查看分支版本
git branch test // 创立一个名为 test 的分支
git checkout test // 切换到 test 分支
// 在以后分支将内容编写实现之后,同样须要将代码提交到暂存区和本地库 git add . / git commit -m "test branch add info"
git checkout master // master 是主分支的默认名称
git merge test // 将 test 分支上的内容合并到 master 分支上
// 当合并的文件与被合并的文件发生冲突时,命令行工具右侧展现的分支版本名称为(master | merging),此时须要自行去抵触文件进行批改,批改实现再执行 add 和 commit 操作 

下面都是 git 在本地环境的基本操作指令,咱们常常还会将代码上传到 github、gitee、gitlab 这些代码的托管核心,那么咱们怎么通过这些托管核心来进行团队的合作开发呢?这里以 github 为例,从两方面来说,如果开发者都是团队成员,简略操作的流程如下所示

创建者将本地代码 push 到近程库,团队成员接管邀请退出团队,而后通过 git 地址 clone 代码到本地,而后当代码进行了批改之后,再将更新的代码 add / commit 提交到本地库之后再 push 到近程库,创建者再通过 pull 操作将近程库的代码取回,pull 其实是 fetch+merge 的两个操作,fetch 代码取回代码,merge 示意合并。具体的操作流程如下

 创建者
git remote -v // 查看近程库的别名地址
git remote add origin https://github.com/xxx/yyy.git // 此处是将 xxx 这个 git 地址设置别名为 origin, 当前拉取和推送这个 git 的代码能够间接应用别名 origin
git push origin master // 将代码推送到别名为 origin 的 master 分支

团队协作者
git clone github.com/alice/xxx.git // clone 实现了三步操作, 将 git 代码取回到本地, 初始化 git 仓库, 设置 remote 别名
// 本地进行代码开发之手,须要 add / commit 到本地库
git push origin master

创建者
git pull origin master // 将近程库的代码取回,等同于 git fetch origin master + git merge origin/master 两个操作 

有多个团队成员的话,大体流程也和上述统一,次要就是提交到本地库,推送以及合并。
还有一种团队合作的状况,奉献代码的同学并不是团队的成员,而是内部声援,此时就来到跨团队合作形式

创建者的 push 代码的形式没有变动,而跨团队协作者因为不是团队成员,无提交代码的权限。
所以首先要要进行 fork 操作,相当于在本人的 git 仓库上建设一个和对方一样的我的项目,而后跨团队者再从本人的 git 仓库上将代码 clone 下来,批改实现 add / commit 操作提交本地库之后,在 github 上点击 pull requests 操作。
最初创建者再进行审核,代码审核无误且无效之后再本人的仓库中查看 pull request 中通过 merge 将两个人的代码合并

以上就是 git 的整体流程和基本操作

退出移动版