Git入门

一.Git介绍

  Git的创造者是Linus,它同时也创造了开源操作系统Linux。

  版本控制系统能记录所有文件的所有版本,可以有效的追踪文件的变化,同时很容易回到之前的状态。

  为什么学习Git?

  a.牛逼的互联网,牛逼的大神们都在用

  b.完整的版本控制功能,解决多人协作的问题

  c.提高开发效率

  d.如果你是程序员,请务必学习Git,并习惯把自已的代码同步到github上

  e.Git不等于github,git和github就是球和球场的关系!

 

二.Git安装

1.下载Window git

  Msysgit:https://git-scm.com/download/win,打开这个网站它会根据我们目前的操作系统及版本信息自动下载64位或32位的安装包,我这里是64位的,下载的是Git-2.21.0-64-bit.exe

  基本都是点“下一步”、“下一步”安装结束。

2.配置用户信息

  因为Git是分布式版本控制系统,每个系统都要报一下自已的家门。

- git config --global user.name "bijian"
- git config --global user.email "bijian@126.com"

  global是指当前这台机器上的所有用户都使用这个配置,当然也可以根据不同的仓库来配置不同的用户名和邮箱。

 3.客户端图形化界面推荐sourcetree

  下载官网地址:https://www.sourcetreeapp.com/

  我这里下载的是SourceTreeSetup-3.0.17.exe,下载下来后也是一直“下一步”,当然,我这里出现了如下错误。所以在安装前先安装.NET Framework

  在https://dotnet.microsoft.com/download/thank-you/net472下载了NDP472-KB4054531-Web.exe并安装,如下所示:

  

三.Git仓库

1.基本操作命令

  a.初始化版本库

git init

  b.添加文件到版本库

git add
git commit

  c.查看仓库状态

git status

2.Sourcetree创建仓库提交演示

  a.选择一个本地的文件夹创建本地仓库

  b.创建好后,将在出现如下界面,点击“在文件资源管理器中打开”按钮,新建一个text.txt文件,并简单随便写了一点内容

  c.再点击一下工作副本,将会看到如下界面,此时文件还是在我们的工作目录,没有在我们的暂存区里面,选择文件,右键选择”添加“,这个动作是将我们的文件添加到暂存区里面。

  d.添加成功后,在已暂存文件区域可以看到被添加到暂存区里的文件,添加到暂存区还不是添加到我们本地仓库,右击选择“提交”,可以输入提交的版本说明,点提交。

  e.提交成功后,会默认创建一个master分支,如下所示。

3.Git命令行创建仓库提交演示

  点击Sourcetree右上角的“命令行模式”图标

  即进入命令行模式

  我们回到上一级目录,创建另一个目录

 

   添加版本到版本库

 

四.Git工作流

1.Sourcetree操作实战

  a.如果新的开发任务已开发完成,并已提交到暂存区里了,这时产品经理突然说这个需求其实不用改,这时要把代码从暂存区回滚到工作区,在Sourcetree中右击选择“丢弃”即可,这时工作区里面修改的内容就回滚到修改前了。

  b.第二次需求开发,提交成功后,产品经理说这个需求现在不需要了,这时我们要把第二次提交的内容删掉,Sourcetree中进入对应的分支,选择要回滚回去的提交记录,右击选择“重置当前分支到此次提交”

  此时,再选择“未提交的更改”,右击暂存区里的文件,选择“丢弃”。

  成功后,第二次提交的修改就回退掉了。

  c.此时如果产品说test03整个需求都不用做了,此时,可以在工作区把test03.txt文件删除。这时进入Sourcetree中可以看到test03.txt前面有个删除标识

  右击选择“添加”,将其从工作区放到暂存区。

  这时选择暂存区的文件,右击选择“提交”成功后,就提交到本地仓库中了。

2.bash操作实战

  a.正常开发提交

  b.如果新的开发任务已开发完成,并已提交到暂存区里了,这时产品经理突然说这个需求其实不用改,这时要把代码从暂存区回滚到工作区

  c.第二次需求开发,提交成功后,产品经理说这个需求现在不需要了,这时我们要把第二次提交的内容删掉

  d.此时如果产品说整个需求都不用做了,此时,可以在工作区把对应的文件删除

 3.Git工作流

  在版本库中标识为index的是我们说的暂存区,标识为master的是我们master分支所对应的文件目录树,我们一个文件提交到版本库里面,是存我们这边的objects目录树里面的,不管是存在暂存区还是master(暂存区和master只是一个指针的概念),objects可以简单理解为数据库的概念。

  提交存好后,我们可以看到HEAD这个东西,HEAD是当前仓库的指针,当进行了commit操作后,HEAD指向了我们的master分支。

  当执行提交操作时,是通过git add将工作区里面的目录、文件的修改提交到我们的暂存区里面,同时暂存区里的文件、目录会被修改,这个文件会被提交到objects,这个文件修改的ID会被index通过指针进行引用,git add执行完后,通常会有一个git commit动作,它是发生在暂存区到最终的本地仓库(也就是我们的分支目录树里面),当我们修改的时候,master分支会做相应的更新,其实就是将master分支的指针改变指向我们暂存区里面的目录或者文件。

  git reset HEAD是将暂存区里面的目录重写,也就是我本地工作区有所更新了,当执行git reset HEAD命令后,其实就是将最终的那次提交影响到我们的暂存区里面(工作区里面的文件是不做修改的)。git checkout命令,如果工作区里面有修改,但未做提交,执行git checkout命令后,我们本地仓库就干静了。rm --cached会直接从暂存区里面直接删除文件,也就是说暂存区里没有文件了,但是工作区还是有的,工作区里面要删的话,删除之后再进行commit,commit到我们的master和暂存区里面。checkout HEAD会用HEAD指向的分支里面的文件替换暂存区和工作区(这个动作是很危险的)

 

五.本地与远程仓库

  如果你想通过Git分享你的代码或者和其它开发人员合作,就需要将数据放到一台其他开发人员也能连接的服务器上,下面主要介绍github。

1.创建SSH key

  因为本地的Git库和github之间传输是通过ssh加密传输的,所以需要创建一个ssh key。

ssh-keygen -t rsa -C "yourmail@example.com"

  需要注意的是这个邮箱需要是你在github上注册的邮箱。

2.打开github官网,点击右上角用户的图标,选择Settings

   在新出来的页面中点击“SSH and GPG keys”

  然后点击右边的"New SSH key"

  点击“Add SSH key"添加成功。然后在本地的git命令行窗口输入如下命令验证远程github和我本地是否连通。

ssh -T git@github.com

3.添加远程仓库

git remote add origin git@github.com:bijian1013/git_study.git

git pull origin master --allow-unrelated-histories

git push -u origin master
git remote add origin git@github.com:bijian1013/git_study.git:把本地仓库和远程仓库关联起来
git pull origin master:git pull到master上
git push -u origin master

在github上创建一个新的仓库

  下面我们基于上面红框上的命令来进行操作

  此时,我们到远程github上可以看到提交的内容:

   我在本地把README.md内容修改,在后面添加一行,内容为:second commit

  github上看到也已经提交上来了。

4.Sourcetree操作

  a.首先在github上创建一个远程仓库,仓库名为:bijian_gui_sourcetree

  b.用sourcetree仓库本地仓库

  创建成功后,在本地新建bijian_test.txt文件,并随便添加了一点内容。

  然后添加到暂存区里面

  然后点击左上角“提交”功能,添加注释,进行提交。

  就可以看到提交成功。

  下面我们进一步看如何把本地仓库关联到远程仓库。

  然后点击“添加”,把远程仓库的地址填写好如下:

  点“确定”后,如出现“远程”和“origin”,则说明关联远程仓库成功。

  右击master,选择“推送到”下的"origin"。

  点击“推送”提交后,将弹出github的用户名和密码,填写后就能推送到远程github上了。

  此时,我们再修改本地的bijian_test.txt文件,回到source_tree界面,点击选择"master",将本地文件添加到暂存区。

  点击左上角的“提交”,进入如下界面,填写提交信息后,在填写信息下面有一个“立即推送变更到origin/master”复选框,选择后本地把文件提交到本地的master分支后,会默认会触发推送到我们的origin分支(远程仓库github分支)。

  提交成功后,刷新github,就能看到刚提交的内容和提交说明。

 

六.克隆仓库

  我们在开发时,需要和其他人合作开发,这里需要将远程代码克隆一份到本地,然后在本地进行开发,同时开发完成之后,需要将我们开发的内容推送到远程仓库中,这样大家在项目中才能协作开发。

  命令:git clone git@github.com:bijian1013/demo4.git

  命令的作用就是将远程的代码克隆一份到本地。

  首先我们在远程github上创建一个仓库:https://github.com/bijian1013/clone_demo.git

1.命令行方式操作

 

  这时,在github上可以看到刚提交的文件。

2.sourcetree方式操作

   首先在github上新建一个远程仓库。

   打开source_tree,选择“克隆/新建...”

   填写好相关信息如下:

  点击“克隆”成功后,在本地工作目录新增clone_sourcetree.txt文件,将其添加到暂存区

  点左上角的“提交”,进入提交页面,填写好提交说明,提交。(当然,这里只是提交到本地仓库)

  提交成功后,默认会创建master分支。

  这里需点击到master分支,右击->推送到->origin【需说明的是:克隆和远程仓库绑定不一样,远程仓库绑定一开始推送的时候没有origin,首先是通过“创建拉取请求...”绑定后,推送到才有origin】

  推送成功后,远程对应分支自动关联上master分支。

  这时,我们到github上刷新可以看到刚提交的文件。

 

七.标签管理

  在日常开发中,当需要发布一个新的版本,通常是在版本库中打一个标签,这样就确定了该标签对应的版本时刻,以后在某个时候想回滚到当前的版本,就可以直接通过标签来进行取出来。同时创建和删除标签的速度非常快。也就是版本上线要回归时,直接通过标签来回滚。

1.常用命令

  查看所有标签:git tag

  创建标签:git tag name

  指定提交信息:git tag -a name -m "comment"

  删除标签:git tag -d name

  标签发布:git push origin name

2.命令行工具

  这时到github上查看有v1.0.1标签。

  这样的话,当我们的一个正式的版本release放到远程仓库里面,我们可以直接根据这个远程仓库的标签来进行回滚,不用担心本地文件或远程仓库毁坏。

  下面进一步演示删除标签。

3.Sourcetree工具

   修改本地文件内容,将其添加到暂存区。

  更点击“提交”,提交到本地和远程仓库。

  提交成功后,到github上能查看到变更。

  然后,我们来打标签。

  填写信息如下:

  点击“添加标签”成功后,到远程github上查看到刚提交的标签。

  删除标签的话,首先选择标签,右击选择删除对应的标签。

  删除本地标签,同时也要删除远程标签的话,在弹出来的框中将“从全部远端删除标签”勾选上。

  删除成功后,再到github上查看对应的标签已不见了。

 

八.分支管理

  如你准备开发一个新的功能,但是需要两周时间才能完成,由于还未开发完成,不完整的代码会导致别人的工程报错不能运行,但是如果想把代码全写完再提交,就有丢失代码的风险,但是有了分支之后,就不用担心了,只需创建一个属于你自已的分支,你只需要在你的分支上工作,但整个功能开发完成后,再把这个分支合并到原来的分支,这样既安全又不影响原来的工作,

1.bash命令行实践

  a.准备一个仓库并提交文件

 

  b.此时有一个新的feature功能,需要一个新的分支,在新的分支上开发实现

  c.此时需要把feature_x分支的代码合并到master分支

  d.master分支开发一段时间后,发现feature_x分支没有用了,此时为了保持我们代码空间的干净,需要把feature_x分支删除

2.sourcetree实践

a.首先创建一个本地的仓库

  创建成功后,在当前目录下新建branch_demo.txt文件,然后将其添加到暂存区里

  然后再提交到本地仓库中

   提交后会自动产生master,点击master分支,点击上面的”分支“,进行分支的创建

  创建成功后如下所示

  然后我们在当前的feature_y分支里添加新的内容

  将其加入暂存区,然后提交,接下来需要把feature_y分支内容合并到master分支。

  首先,双击master分支切换到master分支,然后点击上面的”合并“按钮,再选择需要合并的feature_y,下面选项选上“立即提交合并”,然后点击“确认”即可。

  此时我们到我们的master分支下去看一下我们的branch_demo.txt内容已经是把feature_y分支的内容合并到master分支上来了。

 

九.总结

1.介绍与安装

2.工作流 工作区->暂存区->版本库

3.初始化  git init -> git add -> git commit

4.远程仓库 git remote add -> git pull -> git push ->git clone

5.分支管理 git branch -> git checkout -> git merge

6.标签管理 git tag -> git push

 

学习地址:https://www.imooc.com/learn/1052

posted on 2019-03-24 11:17  bijian1013  阅读(251)  评论(0)    收藏  举报

导航