git 使用

  1. git简介

  2. git 命令

  3. git  忽略文件

git   作用:版本控制

Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/

GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:

  • 无GitHub:在本地 .git 文件夹内维护历时文件
  • 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库

目前已使用Git的四个命令,这四个命令已经可以代替本地多个文件保存版本的方式:

下图盗自阮一峰博客

日常要记住下面6个命令

git 几个专有名词

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库
# 在当前目录新建一个Git代码库
$ git init #已掌握 # 新建一个目录,将其初始化为Git代码库
$ git init [project-name] # 下载一个项目和它的整个代码历史
$ git clone [url] #已掌握
  • git init,初始化,表示即将对当前文件夹进行版本控制。新建一个本地仓库。
  • git status,查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。
  • git add 文件名,将指定文件提交到暂存区。
  • git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
  • git log,查看提交记录,即:历史版本记录

branch   命令

branch相关常用命令:

  • git branch 分支名称             创建分支
  • git checkout 分支名称          切换分支
  • git branch -m 分支名称        创建并切换到指定分支
  • git branch                          查看所有分支
  • git branch -d 分支名称         删除分支
  • git merge 分支名称              将指定分支合并到当前分支

想要回到某个历史版本,使用git log

黄色的字符串是这个版本的标识符

使用

git reset --hard 黄色的随机字符串

如果我回到了初次修改的状态吗,再想回到第二次修改的状态

,可以使用git reflog

stash

git stash   将工作区修改的内容存储到另一个地方

git stash pop    将另一个地方在取到拿回来放到原来的代码的地方

合并的时候有时候可能会出现冲突

手动删除修改


git忽略文件

A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected;

see the NOTES below for details.

gitignore文件指定Git应该忽略的有意未经跟踪的文件。 Git已经跟踪的文件不受影响; 有关详细信息,请参阅下面的注释。

gitignore 文件的每一行都指定了一个pattern

pattern format

  • 空白行不会指定任何文件,可作为可读性的分割。
  • 以# 开头的行作为注释
  • 每行的结尾空白会被忽略,除非引用了 \
  • 每行以! 开头表示取反
  • 如果pattern 以 slash(/)  结尾,则它会被移除。但是它将只会匹配目录。换句话说 foo/  会匹配foo 目录,和下面的路径
  • 如果一个pattern 不包含 slash(/) ,git 会将它作为全局的pattern 对待。
  • 如果pattern 有/ ,则* 不会匹配这个/ 字符,
  • Otherwise, Git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag:wildcards in the pattern will not match a / in the pathname.通配符不会匹配路径里的slash(/)           For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".

  • A leading slash matches the beginning of the pathname. For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:

  • A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".

  • A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .gitignore file, with infinite depth.

  • A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.

  • Other consecutive asterisks are considered invalid.

在git工作区的根目录下,新建.gitignore 文件,吧忽略的文件名添加进去,git 就能忽略那些文件名了。

在gitbash 输入 vim .gitignore文件    键入文件名

保存,

note:  .gitignore 要提交到git 上。  检验.gitignore标准是git status命令

在github 上别人写的git 文件,可以使用

链接 https://github.com/github/gitignore

git 忽略文件规则 http://ybin.cc/git/gitignore-syntax/

git 多人协作开发

GitHub 多人协作开发 三种方式:
一、Fork 方式 网上介绍比较多的方式(比较大型的开源项目,比如cocos2d-x)
开发者 fork 自己生成一个独立的分支,跟主分支完全独立,pull代码后,项目维护者可根据代码质量决定是否merge代码
此方式网上方法比较多,这里不详细描述
 
有两种常用的方法在GitHub上建立团队合作:
 
二、组织 – 组织的所有者可以针对不同的代码仓库建立不同访问权限的团队。
Accounts Settings => Organizations =>Create new Organizations 新建一个组织 然后添加项目成员,根据提示设置完毕即可。
新建一个Repository 新建完毕后 进入Repository的Settings =>Collaborators 在Teams下面点击刚创建的组织 比如eveloper-51/owners
里面就可以添加或者remove组织成员
 
三、合作者 – 代码仓库的所有者可以为单个仓库增加具备只读或者读写权限的协作者。
合作者方式比较实用,也很方便,新建一个Repository,完毕之后,进入Repository的Settings,然后在Manage Collaborators里就可以管理合作者了。
其他合作者,实用 ssh-keygen -C "YourEmail@example.com" (这里的email使用github账号)生成公钥和私钥,在Accounts Settings=》SSH keys 将公钥上传上去。
上传完成后,可使用Tower(Mac下Git管理工具)clone remote Repository 使用SSH方式登录(这里的私钥使用刚才生成的) 这样,其他合作者就可以正常的PUSH代码了。

git 使用 gitignore的更多相关文章

  1. Git 提交 .gitignore文件

    问题描述 不知道小伙伴有木有遇到这种情况:想在工程里增加 .gitignore 文件,用于在以后提交后,过滤哪些文件或者目录. 但是,在当前工程的根目录下,执行如下执行命令后,依然不能把 .gitig ...

  2. Git中.gitignore文件不起作用

    Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍   在Studio里使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录 ...

  3. git 创建.gitignore忽略不必要的文件

    问题: 创建java项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如maven创建好后,实际开发中我们只需提交:src,.gitignore,pom.xml等文件 但是有 ...

  4. Git:.gitignore和.gitkeep文件的使用 让空文件夹被跟踪

    Git:.gitignore和.gitkeep文件的使用 Git:.gitignore和.gitkeep文件的使用 https://majing.io/posts/10000001781172 .gi ...

  5. git中 gitignore 忽略文件操作

    通常,.gitignore文件被放置在存储库的根目录中.根目录也称为父目录和当前工作目录.根文件夹包含组成项目的所有文件和其他文件夹.也就是说,您可以将它放在存储库中的任何文件夹中.你甚至可以有多个. ...

  6. Git忽略.gitignore规则不生效的解决办法

    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件). 这个文件每一行保存了一个匹配的规则例如: # 此为 ...

  7. Git的.gitignore文件配置

    .gitignore是Git工具的配置文件,用于屏蔽某些文件上传到线上. 创建.gitignore 在window系统中,不允许新建文件名以"."开头的文件,所以通过git bas ...

  8. git用.gitignore忽略指定文件

    .gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠“/”开头 ...

  9. Git和.gitignore

    http://blog.csdn.net/cscmaker/article/details/8553980 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .giti ...

  10. git中.gitignore配置项不起作用-解决办法

    在某个git项目中,.gitignore忽略了*.iml,但是git status命令依然列了出来,最后发现是由于git的缓存造成的. git rm -r --cached . git add . g ...

随机推荐

  1. VS AI 手写数字识别应用

    看过我上一篇文章的朋友应该知道,我用VS训练出了minst模型.output目录中有.pb文件. 关于.pb文件的介绍见[参考链接] (https://stackoverflow.com/questi ...

  2. 剑指offer:用两个栈实现队列

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 可以用stack1来存所有入队的数.在出队操作中,首先将stack1中的元素清空,转移到sta ...

  3. Failed to execute request because the App-Domain could not be created. Error: 0x8007000e 存储空间不足,无法完成此操作。

    今天业务发现,服务器上的网站无法访问了. 页面报错: Server Application UnavailableThe web application you are attempting to a ...

  4. C#代码分析(第三周)

    阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...

  5. 8th 对软件工程的理解(读构建之法有感)

    对于任何一个学计算机的人来说,软件都不陌生,甚至于一个普通的朝九晚五的上班族,他的每日生活工作也都与软件有着密不可分的关系.然而,程序又是如何从一行行指尖留下的代码,机器存储的数据变成快捷高效的软件的 ...

  6. 项目上线,php的错误信息必须不让其在页面中显示给客户,

    对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...

  7. day1 学习历程

    day1 我是一个在校大三学生,一个依然迷茫不知前景的大学混子= =,可以这么说吧 大学混子 真正开始决定好好学习大概在去年的12月份 那时经老师的提醒 开始正式接触软件开发 于是 从头开始学习语言 ...

  8. 解决多进程中APScheduler重复运行的问题

    转自:http://blog.csdn.net/raptor/article/details/69218271 问题 在一个Python web应用中需要定时执行一些任务,所以用了APSchedule ...

  9. java 静态方法 java 类中的方法无论静态还是非静态的都可以使用静态变量 而静态方法只能使用静态变量 (因为对象还没创建 所以不能在静态方法里面用this)

  10. [BZOJ2244][SDOI2011]拦截导弹 CDQ分治

    2244: [SDOI2011]拦截导弹 Time Limit: 30 Sec  Memory Limit: 512 MB  Special Judge Description 某国为了防御敌国的导弹 ...