Git. Day 1.

2017-10-17  本文已影响0人  DendiSe7en


Git. Day 1.

不会谈到的:

安装:(略)
  初次运行配置:(略)实在不想复制粘贴。

会谈到的:


新建本地repos

在本地新建一个文件夹作为repos,然后在这个目录下右键 GitBash Here
执行

  git init     #初始化Git的环境
  ls            #查看当前目录的文件列表

这里我们可以看到多了一个文件夹.git,然后来看下官方的描述:
   “所有 Git 需要的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。”
  我暂时将它理解为Git的Runtime Environment ,接下来的文档就开始描述track文件。指令如下

$ git add *.c
$ git add README
$ git commit -m 'initial project version' 

对于一个没接触过这些指令的人来说,这里的 README是怎么回事,是怎么来的?其实是把读者想得太高端,这里其实是需要你事先自己在这个目录下新建一个叫README的文件,当然新建的方式有很多种,你可以手动鼠标右键新建,也可以执行下面的命令:

 $ vim README #新建一个README文件
 $ vi README    #编辑这个文件的内容

在编辑完成之后我曾经一度傻呵呵的不知道怎么保存退出,其实编辑好内容之后ESC 或者 ctrl + C 可以结束编辑,然后:wq 保存并且提出注意wq前面是有个:号的。
  接上之前所说的,下一条是commit指令,后面的-m "message body"指的是针对这次的提交的说明,这里的提交并不是提交到你的托管服务器上,而是提交到本地。


Clone Repos到本地

官方固定的Clone指令的格式应该是git clone [url] 这个url是你的repos的远程路径,下面是例子

 $ git clone git://github.com/dendiSe7enGitHub/testAboutGit.git Testgit

这里最后的Testgit是我给本地repos取的名字,如果不写默认与源同名。这里值得一提的是,在之前搭建hexo的过程中,我已经有clone过很多次项目到本地,但是我都是用的:

$ git clone git@github.com:DendiSe7enGitHub/moreTestAboutGit.git

是不是不一样?这是因为git支持多种传输协议,官方的文档中是git://协议,同时他也支持"http://" http协议和 "user@server:/path.git" SSH协议。具体的分析会在官方API的第四章,暂时还没有看到。

  到这里基本上就结束了新建本地仓库和clone远程仓库。


知识点


图 1-1.GIT中文件的状态变化周期

指令及说明:
##########################################

$ git status# 检查当前文件状态
$ git add README # 跟踪新文件
##########################################

#忽略某些文件
$ vim .gitignore#创建一个名为.gitignore的文件

$ vi .gitignore #编辑文件内容
*.[oa] #在提交时忽略.o 或者 .a 的文件
*~     #在提交时忽略.~ 的文件
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt

##########################################
git diff --staged 看已经暂存起来的文件和上次提交时的快照之间的差异

##########################################
$ git commit 提交更新

##########################################
$ git commit -a #跳过使用暂存区域

##########################################
$ git rm grit.gemspec #移除文件 从暂存区域移除

碰到的坑:

这个问题是在执行下面的指令时发现的。

    $ git mv old_file_name new_file_name #修改文件名字

因为我最开始没有 track 自己新建的这个文件readme.md 所以,在执行重命名操作时,发现 git status之后的提示里面并没有显示之前我对这个文件进行的rename操作。

执行

     $ git add readme.md      #将文件readme.md 添加到track列表
     $ git  mv readme.md readme.text #重命名readme.md 为 readme.txt 
     $ ls                        #显示当前目录文件列表

这样处理之后发现readme.md 被修改成 readme.txt 然后执行:

     $ git status#检查当前文件状态

果然出现了rename的记录。

另外需要知道的是:

      #这个命令在执行的时候是分为了三个步骤:                
      git mv old_file_name new_file_name 
      #步骤1
      git mv old_file_name new_file_name #根据源文件复制后生成新的文件并且命名为new_file_name
      #步骤2
      $ git rm old_file_name                   #删除旧文件
      $ git add new_file_name                  #将新文件加入到track列表

之前的操作之所以出错就是因为这里在第一步的时候,因为没有add过源文件,导致无法复制。

上一篇 下一篇

猜你喜欢

热点阅读