Git实战

扫码查看

Git实战

1、Git特点

1.1、Git两大特点

  • 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
  • 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。

2、Git安装与配置

2.1、安装命令

sudo apt-get install git

Git实战-LMLPHP

2.2、安装成功后,查看版本信息

git

Git实战-LMLPHP

3、创建版本库

3.1、新建一个目录git_test,在git_test目录下创建一个版本库

git init

Git实战-LMLPHP

4、版本创建与回退

4.1、使用

4.1.1、在git_test目录下创建一个文件code.txt,编辑内容如下:

Git实战-LMLPHP

4.1.2、使用如下两个命令创建一个版本

git add code.txt
git commit -m '版本一'

Git实战-LMLPHP

4.1.3、使用如下命令可以查看版本记录

git log

Git实战-LMLPHP

4.1.4 、继续编辑code.txt,在里面增加一行

Git实战-LMLPHP

4.1.5、使用如下命令再创建一个版本并查看版本记录

Git实战-LMLPHP

4.1.6、现在若想回到某一个版本,可以使用如下命令

git reset --hard HEAD^

Git实战-LMLPHP

4.1.7、假如我们现在又想回到版本2,这个时候怎么办?可以使用如下命令

git reset --hard 版本号

Git实战-LMLPHP

4.1.8、在终端执行如下命令

Git实战-LMLPHP

Git实战-LMLPHP

4.1.9、假如说上面的终端已经关了改怎么回退版本。我们在执行如下命令将版本回退到版本1

Git实战-LMLPHP

git reflog

Git实战-LMLPHP

Git实战-LMLPHP

4.2、工作区和暂存区

4.2.1、工作区(Working Directory)

4.2.2、版本库(Repository)

Git实战-LMLPHP

4.2.3、下面在git_test目录下再创建一个文件code2.txt,然后编辑内容如下

Git实战-LMLPHP

4.2.4、然后再次编辑code.txt内容,在其中加入一行,编辑后内容如下

Git实战-LMLPHP

4.2.5、使用如下命令查看当前工作树的状态

git status

Git实战-LMLPHP

4.2.6、我们使用如下命令把code.txt和code2.txt加入到暂存区,然后再执行git status命令,结果如下

Git实战-LMLPHP

4.2.7、 然后,执行git commit就可以一次性把暂存区的所有修改提交到分支创建一个版本

Git实战-LMLPHP

4.2.8、一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。执行如下命令可以发现

Git实战-LMLPHP

Git实战-LMLPHP

4.3、管理修改

4.3.1、编辑code.txt,并使用git add 命令将其添加到暂存区中

Git实战-LMLPHP

4.3.2、继续编辑code.txt,并在其中添加一行

Git实战-LMLPHP

4.3.3、git commit创建一个版本,并使用git status查看,发现第二次修改code.txt内容之后,并没有将其添加的暂存区,所以创建版本的时候并没有被提交

Git实战-LMLPHP

4.4、撤销修改

4.4.1、继续上面的操作,提示我们可以使用 git checkout -- <文件> 来丢弃工作区的改动。执行如下命令,发现工作区干净了,第二次的改动内容也没了

Git实战-LMLPHP

4.4.2、我们继续编辑code.txt,并在其中添加如下内容,并将其添加的暂存区

Git实战-LMLPHP

4.4.3、git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉,重新放回工作区

Git实战-LMLPHP

4.4.4、现在若想丢弃code.txt的修改,执行如下命令即可

Git实战-LMLPHP

4.5、对比文件的不同

4.5.1、继续编辑文件code.txt,在其中添加一行内容

Git实战-LMLPHP

4.5.2、现在要对比工作区中code.txt和HEAD版本中code.txt的不同。使用如下命令

Git实战-LMLPHP

4.5.3、使用如下命令丢弃工作区的改动

Git实战-LMLPHP

4.5.4、现在要对比HEAD和HEAD^版本中code.txt的不同,使用如下命令

Git实战-LMLPHP

4.6、删除文件

4.6.1、我们把目录中的code2.txt删除

Git实战-LMLPHP

Git实战-LMLPHP

4.6.2、现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

Git实战-LMLPHP

5、分支管理

5.1、概念

Git实战-LMLPHP

5.2、创建与合并分支

5.2.1、原理理解

Git实战-LMLPHP

Git实战-LMLPHP

Git实战-LMLPHP

Git实战-LMLPHP

Git实战-LMLPHP

5.2.2、案例:

5.2.2.1、执行如下命令可以查看当前有几个分支并且看到在哪个分支下工作

Git实战-LMLPHP

5.2.2.2、下面创建一个分支dev并切换到其上进行工作

Git实战-LMLPHP

Git实战-LMLPHP

5.2.2.3、下面我们修改code.txt内容,在里面添加一行,并进行提交

Git实战-LMLPHP

Git实战-LMLPHP

5.2.2.4、dev分支的工作完成,我们就可以切换回master分支

Git实战-LMLPHP

Git实战-LMLPHP

5.2.2.5、现在,我们把dev分支的工作成果合并到master分支上

Git实战-LMLPHP

Git实战-LMLPHP

Git实战-LMLPHP

5.2.2.6、合并完成后,就可以放心地删除dev分支了,删除后,查看branch,就只剩下master分支了

Git实战-LMLPHP

Git实战-LMLPHP

5.3、解决冲突

5.3.1、再创建一个新分支dev

Git实战-LMLPHP

5.3.2、修改code.txt内容,并进行提交

Git实战-LMLPHP

5.3.3、切换回master分支

Git实战-LMLPHP

5.3.4、在master的code.txt添加一行内容并进行提交

Git实战-LMLPHP

Git实战-LMLPHP

5.3.5、执行如下命令尝试将dev分支合并到master分支上来

Git实战-LMLPHP

5.3.6、git status也可以告诉我们冲突的文件

Git实战-LMLPHP

5.3.7、查看code.txt的内容

Git实战-LMLPHP

5.3.8、git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存

Git实战-LMLPHP

5.3.9、再提交

Git实战-LMLPHP

5.3.10、现在,master分支和dev分支变成了下图所示

Git实战-LMLPHP

5.3.11、用带参数的git log也可以看到分支的合并情况

Git实战-LMLPHP

5.3.12、最后工作完成,可以删除dev分支

Git实战-LMLPHP

5.4、分支管理策略

5.4.1、创建切换到dev分支下

Git实战-LMLPHP

5.4.2、新建一个文件code3.txt编辑内容如下,并提交一个commit

Git实战-LMLPHP

5.4.3、切换回master分支,编辑code.txt并进行一个提交

Git实战-LMLPHP

5.4.4、合并dev分支的内容到master分支

Git实战-LMLPHP

5.4.5、出现如下提时,这是因为这次不能进行快速合并,所以git提示输入合并说明信息,输入之后合并内容之后git会自动创建一次新的提交

Git实战-LMLPHP

Git实战-LMLPHP

5.4.6、使用分支命令查看分支信息

Git实战-LMLPHP

5.4.7、删除dev分支

Git实战-LMLPHP

5.4.8、创建并切换到dev分支

Git实战-LMLPHP

5.4.9、修改code.txt内容,并提交一个commit

Git实战-LMLPHP

5.4.10、切换回master分支

Git实战-LMLPHP

5.4.11、准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward

Git实战-LMLPHP

5.4.12、合并后,我们用git log看看分支历史:

Git实战-LMLPHP

Git实战-LMLPHP

5.5、Bug分支

5.5.1、当你接到一个修复一个代号001的bug的任务时,很自然地,你想创建一个分支bug-001来修复它,但是,等等,当前正在dev上进行的工作还没有提交:

Git实战-LMLPHP

5.5.2、git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

Git实战-LMLPHP

5.5.3、首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

Git实战-LMLPHP

5.5.4、现在修复bug,把 the new line删掉,然后提交

Git实战-LMLPHP

5.5.5、修复完成后,切换到master分支,并完成合并,最后删除bug-001分支

Git实战-LMLPHP

5.5.6、现在bug-001修复完成,是时候接着回到dev分支干活了!

Git实战-LMLPHP

5.5.7、工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:

Git实战-LMLPHP

Git实战-LMLPHP

6、使用github

6.1、创建仓库

6.1.1、注册github账户,登录后,点击"New respository‘’

Git实战-LMLPHP

6.1.2、在新页面中,输入项目的名称,勾选'readme.md',点击'create repository'

Git实战-LMLPHP

6.1.3、添加成功后,转到文件列表页面

Git实战-LMLPHP

6.2、添加ssh账户

6.2.1、点击账户头像后的下拉三角,选择'settings'

Git实战-LMLPHP

Git实战-LMLPHP

6.2.2、在ubuntu的命令行中,回到用户的主目录下,编辑文件.gitconfig,修改某台机器的git配置

Git实战-LMLPHP

6.2.3、修改为注册github时的邮箱,填写用户名

Git实战-LMLPHP

6.2.4、使用如下命令生成ssh密钥

ssh-keygen -t rsa -C "邮箱地址"

Git实战-LMLPHP

6.2.5、进入主目录下的.ssh文件,下面有两个文件

Git实战-LMLPHP

6.2.6、回到浏览器中,填写标题,粘贴公钥

Git实战-LMLPHP

6.3、克隆项目

6.3.1、在浏览器中点击进入github首页,再进入项目仓库的页面

Git实战-LMLPHP

6.3.2、复制git地址

Git实战-LMLPHP

6.3.3、克隆出错

Git实战-LMLPHP

6.3.4、在命令行中复制仓库中的内容

Git实战-LMLPHP

6.4、上传分支

6.4.1、项目克隆到本地之后,执行如下命令创建分支smart

Git实战-LMLPHP

6.4.2、创建一个code.txt并提交一个版本

Git实战-LMLPHP

6.4.3、推送前github上文件列表如下图

Git实战-LMLPHP

6.4.4、推送前github上分支列表如下图

Git实战-LMLPHP

6.4.5/推送分支,就是把该分支上的所有本地提交推送到远程库,推送时要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上

git push origin 分支名称
例:
git push origin smart

Git实战-LMLPHP

6.4.6、再去github网站上去看分支页面,内容如下

Git实战-LMLPHP

Git实战-LMLPHP

6.5、将本地分支跟踪服务器分支

git branch --set-upstream-to=origin/远程分支名称 本地分支名称
例:
git branch --set-upstream-to=origin/smart smart

Git实战-LMLPHP

6.6、从远程分支上拉取代码

git pull orgin 分支名称
例:
git pull orgin smart

7、 工作使用git

05-22 06:11
查看更多