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的代码能够间接应用别名 origingit 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的整体流程和基本操作