无linux基础也能熟练掌握git的基本操做

git是一个用来管理项目的工具,它的远程仓库有github、gitee、gitlab代码托管中心,既能够用于我的共享代码,又能够用于团队进行项目的协做与发布,那么咱们一块儿来了解一下git该如何使用~git

git在在本地电脑是分红三部分的,工做区,暂存区和本地库,每个区域的做用以下
github

首先,想要使用git来管理咱们的项目,那本地一定是有git环境,安装完git以后,在任何地方均可以右键 git bash here 来打开命令行窗口, 找到一个合适的文件夹,把它看成git的仓库,使用bash

git init // 初始化项目

此时,文件夹里有一个 .git 文件,这表明git的初始化完成了。工具

仓库初始化完成,若是没有项目,那git就没有用武之地,那咱们接着先建立一个hello.txt,此时里面写了一些项目的描述。
一旦建立、修改的文件都是在git的本地区的。首先咱们须要将它提交到暂存区、再提交到本地库,这样才能对该文件的各个版本进行管理,更好的对项目进行迭代、更新、回退,那么就须要如下这些指令gitlab

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,须要回退代码,那么能够用如下的方式fetch

git reset [回退方式] [版本]
回退方式有如下几种
--hard 表明工做区暂存库和本地区都回退
--mixed 表明将暂存区和本地库的版本回退,此时输入 git status 查看文件状态时,提示文字会标为红色,由于工做区和暂存区的文件不一致了
--soft 表明只将工做区的版本回退,此时输入 git status 查看文件状态时,提示文字会标为绿色,由于工做区与暂存区的文件一致,只是暂存区和本地库版本不一致

版本有如下几种方式
(1) 直接使用表明版本的哈希值
(2) HEAD表明的是当前版本,经过^来表示向前一个版本, 多少个^表明向前回退多少个版本
(3) 经过~加上数字来表示向前n个版本 

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

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

若是想查看当前版本与上一版本的差别,可使用这样的命令命令行

git diff [文件名] / git diff [某一版本] [文件名]
// 在命令行工具中经过 + 和 - 的方式来区分增长和删除的内容

在开发的过程中每每不仅有一个分支,常常状况下会设置主分支、测试分支、开发分支,当开发完成以后,再将本身建立的分支代码合并到主分支,咱们能够用如下方式来建立分支及合并code

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的总体流程和基本操做

相关文章
相关标签/搜索