git的小白入门使用与个人备忘

git的小白入门使用

  对于一个从未接触过git的同学来说,一开始听到git这么陌生、这么高大上的名词,可能会略显彷徨,略感困惑,本能的后退,这就像以前的我一样,所以,为了消除各位的恐慌心理,我不引用其他专业的解释,我只说我自己的理解,也很可能有纰漏的地方,大家发现的话,轻踩哈。
  在认识一样事物之前,先简单的介绍一下它的概念。

1.git的作用

  git的出现,就是为了让我们可以方便而安全地对我们的代码进行版本控制,相当于我们玩游戏打怪存档一样。而git就是一个版本控制工具。而github就是一个包含超多远程仓库的大集合,我们自己的仓库保存着我们的文件的版本信息。
  当然,对于我们正常人来说,最简单直接粗暴的版本控制方法,是我们自己很自然可以想到的,复制粘贴改名字,不过这种方法不可靠不安全,版本数量多的时候也不好操作。
  不得不说的一点,因为git保存的只是我们文件的快照,所以是很轻盈的。至于什么是快照,我自己的理解是拍照截图吧,深入的原理我也不太清楚了,各位百度一下吧。

  还有了解一下git划分的4个基本区域:工作区 -> 暂存区 -> 本地仓库 -> 远程仓库

2.git的使用前准备

  好了,在我们开始前,我们需要如下两个准备工作。

 1. 注册github账号       https://github.com/

 2. 下载git工具          https://git-scm.com/downloads

3.生成本地git公钥

  如果你是一个正常人,我相信你看到这一步的时候,会有很多疑问,什么是公钥?为什么要生成公钥?怎么生成公钥?what?why?how?三连问一下子就充满了你的大脑。
  但是,先不要急,暂时我们就认为,我们在gitbub上的仓库需要一把钥匙,只有拥有这把钥匙的人,才可以自由地修改我们远程仓库的文件,这把钥匙,就是我们的本地公钥。为方便起见,就理解为生成仓库钥匙吧。
  好,这里出现的仓库名词,究竟是什么?有什么用?怎么创建?what?why?how?果断出现,其实仓库,的确是英文repository的直译,但是也确实很实际的反映了它的作用,就是保存一系列的文件,而文件就是我们的货物,保存货物的地方,就是仓库。仓库可以有很多个。

以下是生成及添加本地git公钥的步骤:

  1. 生成本地公钥。打开git bash(就是刚下载安装后的东东),git bash内定位到home目录(本来打开的时候,就已经是home目录了,当然也可以使用cd ~命令定位到home目录),并且在git bash内输入ssh-keygen,回车,会要求输入一个文件名(可以直接enter跳过)
  2. 提示输入一个通行码(要输入两遍进行确认,不回显,建议输入,貌似不输入也行),之后会显示一串东西,可以不管。
  3. 复制公钥。在windows下,进入计算机,找到home目录,找到id_rsa.pub文件,文本方式打开,ctrl + a全选复制备用。
  4. github上添加自己的公钥。登陆自己的github账号,直接进入setting(点自己头像呐),点击SSH-GPG keys,点击add SSH key,将之前复制的公钥粘贴,title部分可以随意。
  5. 测试公钥是否添加成功。返回git bash,输入ssh –T git@github.com,如果公钥成功添加,则会出现hollo,XXX(代表你github的账号名)的字样。T表示测试。这样子,你的git公钥就成功添加完毕了。
      很开心,你已经拥有了一个世界级远程仓库的钥匙,你已经是一个世界级开发人员了。( ̄▽ ̄)~*

  不过很奇怪,我的虽然tset的时候提示successfully,但是不能acess。每次push都只能输入github用户名和密码。我是很郁闷的。

4.创建一个本地仓库

  好了,我们先理一理我们之前做的事情

  1. 创建了一个github账号,也就是为了可以拥有我们自己的仓库,相当于银行开户了
  2. 下载了一个git工具,用来跟我们远程的仓库沟通,我们自己有pos机了
  3. 登陆了自己的github账号,并且绑定了自己计算机的git公钥。

  文件要保存起来,首先要在本地创建自己的仓库嘛。

  进入git bash,cd定位到需要的目录,使用git init命令,即可将该目录设置为我们的仓库。

  之后会在这个目录下有一个.git文件夹。
  有一点需要严重注意,只有定位到仓库里,我们才可以使用我们的git命令(但是显然,git init例外呀),什么是git命令?带有git开头的命令呀。

5.创建一个远程仓库

  既然已经在本地建立了一个仓库,那也不够安全,万一哪天电脑爆炸了,什么劳动成果都会化为乌有,这也就需要我们在别的地方备份我们的仓库文件了,这是其一。其二,多人协助开发的时候,也需要有一个统一的地方,汇总我们的代码,那也就需要一个大家都可以方便访问的地方,也就需要一个远程仓库了。
  创建一个远程仓库:
  进入github,点击自己头像左边的加号,点击new repository,写上仓库的名字即可。由于我们是非RMB玩家,我们的仓库只能是public的。
  创建完成后,我们点击我们的仓库名字,进入仓库,暂时是什么都没有。

6.简单的例子

  非常好,到目前为止,我们已经具备了所有实现版本控制的基本条件了。
  我们用一个简单的例子作为示范,主要目的是,将我们本地仓库的一个文件,推送到远程仓库

  1. 在我们本地仓库里,新建一个文本文件,名字就叫git,里面就写123吧。保存。
  2. 输入当前操作者(这个只是给git一个操作者信息,可随意,不需要与github账号同名)
    git config –global user.name xxx
    输入操作者邮箱(同理,不需要github账号同名,甚至可以不是正确的email地址)
    git config –global user.email xxx
  3. git bash里定位到我们的本地仓库目录(cd操作)
  4. 输入git status,查看仓库状态,因为对于这个git文件,git是知道它是新来的,但是并为纳入git的追踪管理,因此会有红色字样的提示,要求我们将这个文件加入到git追踪里(为什么要追踪?不要急)
  5. 输入git add . ,注意,这里是有个.的,也就是表明这个本地仓库的所有文件,都纳入追踪,当然,也可以直接写具体的文件名称,单独追踪。
  6. 输入git status,再次查看一下当前git仓库的状态,我们可以发现,git这个文件,已经由红色字体变为了绿色字体,表明,这个文件已经被git追踪了,看一看提示信息,还会告诉我们,这个git文件被追踪了,但是还没有commit。
  7. 输入git commit -m “这是我创建的git文件” ,这里是提交这个git文件到本地仓库,-m表明我有说明信息,后面的双引号内容就是具体的说明信息,以后,这个git文件每一次提交版本,都会有这个说明信息跟随,用来提示我们各个版本的特点
  8. 获取远程仓库的地址。进入自己刚刚新建的远程仓库,右边会有一个绿色的按钮,写着clone or download,我们点一下,会有这个仓库的URL,我们复制下来。
  9. 为我们的远程仓库添加一个别名,进入git bash,输入git remote add (仓库别名)(远程仓库的url),这样做是不想每次都复制一长串的远程仓库地址
  10. 将本地仓库的文件推送到远程仓库。输入 git push -u (仓库的别名) master,会有一串提示,如果看到有一个successfully单词,那证明推送成功了。
  11. 进入我们远程仓库,刷新一下,会看到我们推送上来的git文件。也会有我们写的commit的信息。

  基本的推送过程就是这样了。
  有可能,在push的时候,还提示我们需要输入我们自己的github账号和密码,这个正常来说是不需要的,因为我们已经有了公钥,但是我每次push都需要,很是麻烦。貌似可以通过修改用户名解决,但是我不想改我的用户名。
  还有上面push的时候,我们最后有一个单词master,这是代表主分支,将整个主分支都推送上去。至于什么是主分支,还请各位同学自行百度。

7.git基本推送过程总结

  上面废话略多,这里就总结一下基本的使用过程。
  这个是一个常用的基本操作流程,要使用过滤操作,可以使用.gitignore文件

1.打开git bash
2.输入当前操作者(这个只是给git一个操作者信息,可随意,不需要与github账号同名)
    git config --global user.name xxx
3.输入操作者邮箱(同理,不需要github账号同名,甚至可以不是正确的email地址)
    git config --global user.email xxx
4.cd到需要上传文件的目录,并初始化(这里会生成一个git文件夹,说明这个目录已经可以使用git)
    git init
5.检查git状态(这里做第一次检查,为了查看一下有哪些没被add的文件,文件没被add,就会显示为红色)
    git init
5.将需要上传的文件添加到暂存区,(.表示当前目录,所有文件,也可以写入具体文件名称)
    git add .
6.检查git状态 (第二次检查git状态,文件名为绿色,则表示已添加到暂存区但尚未commit)
    git status
7.将已添加到暂存区的文件commit到本地仓库(双引号内写入这次commit的提示信息,也就是版本说明等内容)
    git commit -am "" (如果已经add到过暂存区,被git追踪了,则可以使用这个组合的命令,add并且commit)
    git commit -m ""    
8.将本地仓库的文件,推送到远程仓库
    8.1 进入自己的github,复制远程仓库的链接
    8.2 为远程仓库地址起一个别名,方便下次使用,alias就是别名,repository_url就是远程仓库地址
        git remote add (alias) (repository_url) 
    8.3 将本地仓库的文件推送到远程仓库,可能需要输入github的用户名和密码,输入即可
        git push -u name master
这样,到github上找到自己的仓库,并刷新网页,就可以查看到上传后的文件。

8.特别的.gitignore文件

一个仓库里的文件,并不都是我们希望上传提交的文件,因此,为了将那些我们不需要提交的文件过滤出来,就有了这个.gitignore。这个忽略文件的文件名就是规定这个,不能改动。

对于这个.gitignore文件,我们有3个需要记住的地方:
1.在.gitignore中添加的文件,是会被add忽略的。其他一些细节问题参考.gitignore具体格式;
2.如果一个文件已经被add过了,也就是追踪过了,那么即使以后在.gitignore中添加了该文件,也是无效的;
    因为git已经开始管理这些文件了。
过滤规则已经失效了。这个要相当注意,一开始就应该创建一个.gitignore文件。
3..gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

.gitignore的样例:

      #下面是我的gitignore文件的内容
      #忽略gitignore文件
      .gitignore
      #忽略后缀名为.o和.a的文件
      *.[oa]
      #显示指定忽略名称为main的文件
      main

.gitignore文件的格式规范:

A:#为注释

B:可以使用shell所使用的正则表达式来进行模式匹配

C:匹配模式最后跟"/"说明要忽略的是目录

D:使用!取反(例如目录中包含  test.a,并且gitignore文件中包含  *.[oa],
如果在文件中加入 !test.a  表明忽略除test.a文件以外的后缀名为.a或者.o的文件)

9.git的常用命令

小脑瓜,就是需要这个备忘一下。

名词解释:HEAD是指向当前工作路径的指针

1.操作者信息(不需要与github账号相同,只是告诉git谁在操作)

git config --global user.name xxx   设置当前git的操作者名称
git config --global user.email xxx  设置当前git的操作者email

2.创建git版本仓库(有一点要记住,只有cd到初始化过的目录下(也就是要有git文件夹),才能使用git命令,我踩过这个坑,惭愧)

git clone (repository_url) 克隆别人的远程仓库到本地,因为是别人已经建好的仓库,无需git init
git init (*file_path)      初始化本地git仓库,file-path可以是绝对路径,也可以是相对路径,也可以缺省表示当前路径

3.git状态查看与修改

git status                     查看git仓库状态(修改过的文件但没有被add的文件,
                               已add但未commit的文件等等,红色代表没有添加到暂存区的文件,
                               绿色代表已经添加到暂存区但尚未提交的文件)
git diff                       查看变更内容
git add (file_name 或 . )     将指定文件添加到暂存区(stage、index)  .表示当前目录下的所有文件,
                               file_name用于指定具体文件。注意,只有add到过暂存区
                               的文件,才能被git追踪到变化。
git commit -m ""               将暂存区中的文件提交到本地版本仓库。 -m表示允许写入版本说明信息,
                               ""内写入版本说明信息
git commit -am ""              将文件add到暂存区并提交到本地仓库,-a 表示add的意思。
                               但是要注意,这个文件必须以前add到过暂存区,所以该指令对新文件无效。
git mv (old_name)  (new_name)  修改文件名
git rm (file_name)             删除文件
git rm --cached (file_name)    停止追踪文件但是不删除,也就是说将文件从暂存区删除
git commit --amend             修改最后一次提交

4.查看历史提交记录
通过以下指令,查看我们的提交记录,各种信息有助于我们管理我们的版本库。

git log                        查看当前版本及此前版本的历史提交记录,与你当前的版本位置有关,\
                               只显示当前及以前的版本
git log -p (file_name)        查看指定文件的历史提交记录
git log --author (user_name)   过滤查看某个人的提交记录
git reflog                     查看所有历史提交记录,与当前所在版本位置无关,是所有历史提交的记录,
                               版本穿梭的时候,比较有用
git blame (file_name)         以列表方式查看指定文件的提交记录

5.版本穿梭滚动
版本间穿梭是很常用的指令,有了这些指令,我们就可以在以往的工作版本节点间游走了,打大boss也不怕了,可以读档了。

git resert --hard (版本号、HEAD相对值)  版本号是指SHA-1码,可以使用log/reflog获得具体的版本号,
                                        可以理解为绝对值;
                                        HEAD使用^表示当前的上一个版本,两个^^表示上上一个版本,
                                        可以理解为相对值,
                                        例如,HEAD~365,表示往上第365个。

git reset --soft (版本号/相对版本)       commit内容会被指定的版本覆盖,但不覆盖到工作区

6.分支创建、管理、合并
我们有一个主分支master,是一个文件的不同提交版本在时间轴上形成的链条,但是,对于某个需要更改的但又不能用于提交的具体的版本,有时候为了不影响大家工作,我们需要自己创建一个额外的分支,这个分支不影响主分支,但是我们依然可以进行文件的版本更新工作。于是有了创建其他分支的需要。

git branch (*branch_name)          在有branch_name的时候,表示创建这个分支,否则表示查看所有分支
git branch -d (branch_name)          删除一个分支
git checkout (branch_name/tag_name)切换一个分支,注意,切换不同的分支,会自动覆盖工作区,有重要更新的时候,要记得commit一下
git checkout -b (branch_name)      创建一个分支,并切换到这个分支,-b表示branch
git merge (branch_name)             将某个分支合并到当前分支上,注意一点,尽量不要进行大合并,养成经常合并的习惯,
                                    差别过大的合并,可能引起合并冲突等一些问题。

7.tag 发布版本标签
对于一些重要的可用的版本,我们需要将它们在茫茫版本中区别出来,以便以后可以快速找到这个版本,并使用这个版本。这个时候,我们可以为它打上tag标签。

git tag                              显示所有tag标签
git tag (tag_name)                   为当前最新的提交版本打上tag标签
git tag -d (tag_name)                删除某个tag标签
git tag (tagname)  (commitId)        针对某一个commitId打上tag标签
git tag -a tagname -m " " commitId   含附注的标签,-a()用于指定这是一个含附注的标签

8.远程仓库操作(先注册一个github账号)
终于可以把本地仓库的文件推送到远程服务器保存了。这样再也不用害怕电脑爆炸导致代码丢失了。

git remote -v                                 查看远程版本库信息(注意哦,要cd到进行过git init的仓库下使用这个命令,不然什么都没有)
git remote show (remote)                      查看指定的远程版本库信息
git remote add (alias)(repository_url)    为某个远程仓库创建一个别名alias,这样就不用每次推送都使用冗长的url了
git remote rm (alias)                       删除某个远程仓库,rm换成remove也可以
git fetch (remote)  (branch_name)             从某个远程仓库中拉取文件
git pull  (remote)  (branch_name)             从某个远程仓库中拉取文件并合并
git push  -u (remote)  (branch_name/tag_name) 想某个远程仓库推送文件。其中-u是指定默认的仓库,只需要第一次指定接口,之后的
                                              push如果目标不变,可以直接省略后面的参数。
git push --tags                               推送所有带有tag标签的版本

9.帮助信息

git log --help  直接跳转到帮助文档,功能强大
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值