git详解

git详解

本文为“廖雪峰git教程”的学习心得

1.安装与设置git

  • 首先安装git,在ubuntu中使用apt-get install git 即可。
  • 安装完成后,还需要最后一步设置,在命令行输入:
    git config --global user.name "xxxx"
    git config --global user.email "[email protected]"
  • 因为git是分布式的,所以,每个机器都必须自报家门:你的名字和Email地址。注意git config命令的–global参数,用了这个参数,表示此机器上所有的git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址
  • 配置公司的服务器地址,这样git才能通过ssh等方式定位到具体的ip
sudo vi /etc/hosts
在文件尾加入公司服务器地址:
1xx.xx.xx.xx git.xxx.org
1xx.xx.xx.xx Yocto.xxx.org

2.初始化一个空的版本库

  • 创建版本库,所谓的版本库就是在这个目录下所有的文件都将被git管理,每个文件的修改、删除,Git都能跟踪。比如我们进入一个目录/xxxx,在控制台中输入
    git init
    随后控制台显示
    Initialized empty Git repository in /xxxx/.git/
    它告诉我们创建了一个空的仓库.git,我们可以用ls -a 查看/xxxx目录,发现确实多出来了一个.git目录,以后里面都会存放和此版本库有关的一些文件
  • 于是乎,/xxxx就变成了版本库,里面的文件改动就可以被git管理了。有一点是要注意的,git只能管理文本文件比如txt、c文件等,像图片、可执行程序等二进制文件则无法被管理

3.add(stash)和commit的区别

  • 首先对于简单应用,可以简单粗暴的认为,add 和 commit操作是绑在一起用的,要把文件提交到版本库,只需先add 再 commit即可
    git详解_第1张图片
  • add的功能是将文件添加入“暂存区域”,比如我们添加一个test.c
    git add test.c
  • commit的功能是把“暂存区域”内的所有文件提交到本地版本库中,比如输入:
    git commit -m "wrote a test.c file"
    其中的-m参数后面可以指定
    随后控制台显示
    [master (root-commit) 6c614cb] wrote a test.c file
    1 file changed, 34 insertions(+)
    create mode 100755 test.c
    表示commit成功
  • 为什么提交要分为add和commit两步呢?主要是为了实现分批提交,降低commit的颗粒度,比如我们修改了 a.c, b.c, c.c, d.c,其中 a.c 和 c.c 是一个功能相关修改,b.c,d.c属于另外一个功能相关修改。那么就可以采用:
  • 很多时候,我们会修改一些代码或添加一些新文件,这些改动并不是针对项目的,仅仅是为了在本地方便自己开发。我们不想提交这些改动应该怎么做?这里不能使用gitignore来忽略这些文件,因为涉及到改动gitignore,这会污染远程仓库的gitignore。完全新添加的文件属于”Untracked files”,而已有文件中修改过的代码则属于”tracked files”。对于”Untracked files”,放在在工作区没有关系,我们可以不用管,而”tracked files”改过了,就不能随意放在工作区了,必须要放到暂存区。这里使用git stash来将它们放入暂存区,这条命令与git add最大的区别是,stash之后commit便会忽略暂存区中对应的文件,这相当于一种忽略机制
git add a.c c.c
git commit -m "function 1"
git add b.c d.c
git commit -m "function 2"
  • 这样,我们就能实现先改2个文件,再改2个文件的效果(其实我们是4个文件同时改了)。由此一来,版本之间区分就更加细致

4.查看状态

  • 当我们在版本库内工作时,可以随时输入git status来查看距离上一次add、commit以来,哪些文件被改动过了
  • 我们还可以输入git diff xxx 来查看某个文件中具体被改动的内容,被改动的地方都会被打印出来
  • 当需要查看提交日志(log)时,使用git log 命令即可,我们就可以得知每一次commit的历史记录,这个操作一般用来确定要回退到过去的某个版本
  • 我们还可以通过git reflog

你可能感兴趣的:(【开发技巧】,git)