一、获取 Git 仓库

初始化仓库

##基于当前目录初始化仓库
$ git init
##指定demo目录初始化仓库
$ git init demo

克隆现有仓库

##克隆现有的仓库,默认目录名:libgit2
##git clone <repo>
$ git clone https://github.com/libgit2/libgit2
##克隆现有的仓库,指定目录名:mylibgit
##git clone <repo> <directory>
$ git clone https://github.com/libgit2/libgit2 mylibgit

注意:Git 克隆的是该 Git 仓库服务器上的几乎每一个文件的每一个版本,而不是仅仅复制完成你的工作所需要文件,这是 Git 区别于其它版本控制系统的一个重要特性。

二、添加版本控制

commit文件流程

##进入仓库目录创建文件
$ cd /demo
$ touch demo_01.c
$ touch demo_02.c
$ mkdir LICENSE
##添加文件追踪track,即添加文件至暂存区
$ git add *.c
$ git add LICENSE
##提交文件至版本库,-m 参数指定提交log
$ git commit -m 'initial project version'

说明:git add 命令使用文件或目录的路径作为参数。如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

文件状态

新建文件状态为:??

$ cd /home/super/gitDemo
$ touch a.txt
$ git status -s

添加track后,文件状态为:A

git add a.txt
git status -s

未commit前,修改文件,查看文件状态为:AM

echo "a" > a.txt
git status -s

再次track后,状态为:A

git add a.txt
git status -s

执行commit后,文件同步,无状态

git commit a.txt -m "init a.txt"
git status -s

执行commit后,再次修改文件,状态为: M(右M)

echo "b" > a.txt
git status -s

再次track后,状态为:M (左M)

git add a.txt
git status -s

未commit前,再次修改文件,状态为:MM

echo "d" > a.txt
git status -s

再次track后,状态为:M (左M)

git add a.txt
git status -s

执行commit,文件同步,无状态

git commit a.txt -m "init a.txt 0.1"
git status -s

git status简要状态说明

标记 说明
?? 新添加的未跟踪文件
A  新添加到暂存区中的文件
AM 新文件添加到暂存区后,未commit前,在工作区修改过
 M (M在右边)已被commit过的文件在工作区被修改但还没add暂存区
M  (M在左边)已被commit过的文件在工作区被修改并已add暂存区
MM 已被commit过的文件在工作区被修改并提交到暂存区后又在工作区中被修改

忽略文件跟踪配置

Git允许指定无需被纳入管理的文件,使它们不必出现在未跟踪文件列表。

##创建文件.gitignore
cd <dir>
touch .gitignore
##添加如下配置信息
# no .a files
*.a # but do track lib.a, even though you're ignoring .a files above
!lib.a # only ignore the TODO file in the current directory, not subdir/TODO
/TODO # ignore all files in the build/ directory
build/ # ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt # ignore all .pdf files in the doc/ directory
doc/**/*.pdf

.gitignore 文件的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略
  • 可以使用标准的 glob 模式匹配
  • 匹配模式可以以(/)开头防止递归
  • 匹配模式可以以(/)结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反

说明: glob 模式指 shell版简化的正则表达式。

  星号 * 匹配零个或多个任意字符;

  [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

  问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字);

  使用两个星号 * 表示匹配任意中间目录,比如 a/**/z 可以匹配 a/z , a/b/z 或 a/b/c/z 等。

参考资料

参考网站:https://git-scm.com/book/zh/v1/起步

  • 作者:
    DeepInThought


    出处:
    https://www.cnblogs.com/DeepInThought


    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 【2】Git仓库的更多相关文章

    1. 多本地代码工作点更新到2个远端GIT仓库

      摘要:本文介绍了笔者多个本地工作节点(地方)的多台电脑(PC/笔记本电脑)同步源码到2个远端的GIT(一个GITHUB国外强制公开,一个oschina国内可不公开). 作者:太初 转载说明:请指明原作 ...

    2. Git中如何利用生成SSH个人公钥访问git仓库

      Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...

    3. eclipse连接多个git仓库方法

      只需要在本地建立多个仓库就行,提交的时候一个本地仓库对应一个git仓库

    4. svn 版本迁移到 git 仓库

      1.拉取 svn代码并转成 git 版本 git svn fetch http://svn.qtz.com/svn/qtz_code/java/qtz_sm/project/qtz_sm -Auser ...

    5. git仓库的初始化

      关于git仓库的初始化和git push的操作 git init git remote add origin ssh://myserver.com/home/git/myapp.git git pul ...

    6. xcode 版本控制推送代码到远程git仓库的步骤

      一 代码推送到远程git仓库 1.在git中建立一个下项目(假设项目名称为->Mygit) 2.在xocde上新建一个测试项目(假设项目名称为GitTest) 3.打开电脑终端: 1)首先利用终 ...

    7. 【Git学习笔记】初始化Git仓库和版本回退

      学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...

    8. (转)如何将本地git仓库上传到GitHub中托管+实践心得

      Git——新手入门与上传项目到远程仓库GitHub(转) - Chen_s - 博客园http://www.cnblogs.com/Chenshuai7/p/5486278.html 注意的问题: 1 ...

    9. svn迁移到git仓库并保留commit历史记录

      svn迁移到git仓库并保留commit历史记录 最近在做svn迁移到gitlab,由于之前一直是由svn做版本控制.最简单的方式是将svn的内容export出来,然后添加到gitlab即可.但是,如 ...

    10. 如何在Linux下使用Gitblit工具创建Git仓库服务

      嗨!朋友,今天我们将学习如何在你的Linux服务器或者PC上安装Gitblit工具.首先,我们看看什么是Git,它的功能以及安装Gitblit的步骤.Git是分布式版本控制系统,它强调速度.数据一致性 ...

    随机推荐

    1. [Python]编译错误:编码错误问题(SyntaxError: (unicode error) )

      1 错误信息 python文件 1 #coding:utf-8 2 3 class Clz: 4 def func(filePath): 5 """ 6 func 7 - ...

    2. Spring Aop(二)——基于Aspectj注解的Spring Aop简单实现

      转发地址:https://www.iteye.com/blog/elim-2394762 2 基于Aspectj注解的Spring Aop简单实现 Spring Aop是基于Aop框架Aspectj实 ...

    3. 人人都可以写的一个Python可视化小程序,带你走进编程的世界

      当年的PHP号称是最好的编程语言,今天的Python就是最简单的编程语言,一个小小的程序,寥寥几行代码,带你体验一下编程的乐趣. 最简单的编程语言 今天要介绍的小工具是Python环境安装好之后,自带 ...

    4. PHPNamespace命名空间

      命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀. 例:项目中有两个 ...

    5. Shell中特殊字符的含义

      $0 这个程式的执行名字 $n 这个程式的第n个参数值,n=1..9 $* 这个程式的所有参数,此选项参数可超过9个. $# 这个程式的参数个数 $$ 这个程式的PID(脚本运行的当前进程ID号) $ ...

    6. 【VS开发】四大图像库:OpenCV/FreeImage/CImg/CxImage

      本文转载自:http://hi.baidu.com/xiaocuiman/blog/item/6e267c2bc4b1883f5243c108.html 1.对OpenCV 的印象:功能十分的强大,而 ...

    7. ahk实现git图床自动预览以及转换markdown格式

      ahk实现git图床自动预览以及转换markdown格式 软件地址 https://gitee.com/layty/pic/tree/master/app 软件功能: 检测剪切板,如果剪切板有非文本信 ...

    8. 使用Navicat为数据库表建立触发器

      打开Navicat   打开数据表所在的数据库,右击需要新增字段的数据库表,然后点击[设计表]   此时进入表设计界面   点击[触发器]标签页,输入触发器名称,如trigger1   选择触发条件, ...

    9. postgres csv日志和查看用户权限

      最近在使用postgres 时遇到的2个问题,顺便记录一下查到的比较好的资料. 怀疑postgres在执行SQL时报错,程序日志中有无明确异常信息.通过查看csv日志来确定是否SQL真的是执行时报错. ...

    10. 使用dockerfile 搭建django系统(nginx+redis+mongodb+celery)

      背景 有需求需要对django系统进行docker化,以达到灵活部署和容灾.该系统基于django 2.2版本开发,数据库采用mongodb,服务器使用nginx,因系统有部分异步任务,异步任务则采用 ...