git可以说是所有开发者出开发语言之外的最基本的基本功了,熟悉git可以方便的进行代码版本控制,以及与其他开发者进行合作开发。本文内容是我以往学习git时做的笔记,主要是关于git最基本的操作,但 只要熟练掌握本篇内容,可以说采用git进行开发基本没有问题了。

1. git init :要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录运行此命令。

2. git add + 文件名:将某个文件纳入到版本控制中。注:文件名可以用通配符,另外也可以用“git add all”或者“git add -a”来一次性将所有文件添加到版本控制中。

3. git clone [url] :将远程仓库克隆到本地,其中url为远程仓库链接地址。

4. git status :查看git仓库中的文件出于哪一种状态。注:Untracked files是指未被git仓库追踪的文件;new file是指已被跟踪,并处于暂存状态的文件;modified指的是已跟踪文件的内容发生了变化,但还没有放到暂存区。

5. 配置忽略文件:有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表,那么可以在git项目文件中新建一个名为“.gitignore”的文件,在这个文件中配置需要忽略的文件。文件 .gitignore 的格式规范如下:

  • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

例如:

# 此为注释 – 将被 Git 忽略

*.a # 忽略所有 .a 结尾的文件

!lib.a # 但 lib.a 除外

/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

build/ # 忽略 build/ 目录下的所有文件

doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

6. git diff :查看尚未暂存的文件更新了哪些部分。git diff –cached则是查看已经暂存起来的文件和上次提交时的快照之间的差异。

7. git commit :提交更新。当git commit不加其他参数时,会打开文本编辑器来输入描述信息。也可以使用git commit -m "描述信息"的方式直接在命令中添加描述信息。给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。

8. git rm + "文件名" : 从 Git 中移除某个文件(磁盘目录中也会删除),就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。如果只是简单地从工作目录中手工删除文件,git追踪中仍会显示。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f强制移除。

9. git rm --cached + “文件名” :把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中,以便稍后在 .gitignore 文件中补上,用 –cached 选项即可。运行这一命令之后,该文件会重新编程untraced的状态。

10. git mv “旧文件名" ”新文件名" : 重命名文件,或者说移动文件。

11. git log:查看提交历史记录。

git log -p -2 :-p参数是用来显示每次提交的内容差异,-2表示仅显示最近的两次提交。

12. git commit --amend:撤销提交操作。例如:首先创建一个1.txt文件,并保存到git。

touch 1.txt

git add 1.txt

git commit -m "新建文件1.txt"

这时候发现,忘了还要新建一个2.txt文件,这时候后悔了,想要撤销刚才的提交,新建号两个文件,一起add 然后commit。可以这么做:

touch 2.txt

git add 2.txt

git commit --amend -m "新建两个文件1.txt和2.txt"

这之后,上一一次的commit就回作废,使用git log查看记录就回发现,提示信息之后"新建两个文件1.txt和2.txt"这一个,而"新建文件1.txt"已经被覆盖(删除)了。

13. git reset HEAD 文件名:取消暂存(add)。当对多个文件同时add之后,发现某个文件不需要add,那么就可以使用这一命令。

14.git checkout -- 文件名 :撤销之前的所有操作,恢复到最近的一次commit。注意,该命令必须是修改之后还未进行add之列的操作,否则就回不去了。该命令你一旦执行,所做修改都会消失,回到最近的commit。

15. git remote 查看远程仓库。该命令会列出所有的远程仓库,如果确定配置有远程仓库,至少应该能看到 origin - 这是 Git 给你克隆的仓库服务器的默认名字(注:origin是默认的远程仓库名称,master是默认的分支)。进一步,还可以指定参数-v:

git remote -v 指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

git remote show [remote-name] 显示远程仓库的详细信息(真的很详细)。

16. git remote add <shortname> <url> 添加远程服务器。可以认为shortname是给远程仓库取的一个别名,也就是说上面说的remote-name,下次使用这个远程仓库时,就不需要通过url,使用这个别名就好了。

17. git fetch [remote-name] [branch-name] 从远程仓库中拉取。这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。 必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

18.git pull [remote-name] [branch-name] 从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

19. git push [remote-name] [branch-name] 将本地仓库推送到远程仓库remote-name上的branch-name上。只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。

20. git remote rename old-name new-name 给远程仓库重命名

21. git remote rm + 仓库名 移除远程仓库

Git学习笔记:基础篇的更多相关文章

  1. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  2. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...

  3. java学习笔记-基础篇

    Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  4. Java学习笔记——基础篇

    Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习笔记: *包.权限控制 1.包(package) ...

  5. Git学习笔记----基础运用

    安装Git Windows: 进入官网下载或百度网盘下载 Git(V2.23_x64) 提取码:uf2x Ubuntu: sudo apt-get -install git 安装完成之后打开git命令 ...

  6. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  7. Python学习笔记——基础篇【第四周】——迭代器&生成器、装饰器、递归、算法、正则表达式

    目录 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 #作业:计算器开发 a.实现加减成熟及 ...

  8. Python学习笔记——基础篇【第六周】——面向对象

    Python之路,Day6 - 面向对象学习 本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.       同时可参考链接: http:// ...

  9. Python学习笔记基础篇-(1)Python周边

    一.系统命令 1.Ctrl+D 退出Python IDLE input方法中输入EOF字符,键入Ctrl+D 2.命令行选项: -d   提供调试输出 -O 生成优化的字节码(.pyo文件) -S 不 ...

  10. html 学习笔记--基础篇

    最近被部门经理要求看一下html,重新看发现好多以前看过的只是都忘记了或者以前走马观花看过没有记得住的东西,正好趁此机会在博客上记录一下,顺便的如果以后需要查找,这里有记录的话可能会比上网查快一点(也 ...

随机推荐

  1. mysql案例~关于mysql的配置文件个人见解

    mysql 设置参数解读一  mysql的参数分为几类     1 session级别可以设置     2 global级别可以设置     3 session+global级别可以设置     4 ...

  2. 2017/05/03 java 基础 随笔

    1.硬盘500G 厂商是按照1000计算的 500g=500*1000*1000/1024/1024=465g 2.jdk1.7可以表示二进制了 0b001(b大小写无所谓) 3.进制转换 4.原码, ...

  3. C语言拼接字符串 -- 使用strcat()函数

    [头文件]#include <string.h> [原型] char *strcat(char *dest, const char *src); [参数]: dest 为目标字符串指针,s ...

  4. mysql系列五、mysql中having的用法

    HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似.WHERE 搜索条件在进行分组操作之前应用:而HAVING 搜索条件在进行分组操作之后应用. ...

  5. 设置linux新用户默认当前目录及使用的shell

    切换到root用户,直接修改/etc/passwd文件,找到你的用户名你一行,如下图所示修改路径,然后保存即可.

  6. eclipse指定项目编译级别

    指定项目编译级别Eclipse→Preferences→Java→Compiler→Compiler compliance level:1.6或其他 或者,

  7. mysql数据库查询库中所有表所占空间大小

    SELECT CONCAT(table_schema,'.',table_name) AS 'TABLE_NAME', CONCAT(, ),'M') AS 'ROW_SIZE', CONCAT( ) ...

  8. Android开发之多Fragment切换优化

    问题分析 一直在简书里看别人的技术贴,今天我也来写点自己的心得!最近在写一个项目用到大量的Fragment后的总结! 我想刚刚接触安卓的同学或许会这么写: FragmentManager fragme ...

  9. jQuery版本的jsonp

    1.一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准: 2.不过我们又发现,Web页面上调用js文件时则不 ...

  10. poj2528贴海报,,

    对于区间段的离散化需要注意一下,和点离散化不同 离散后如何识别一段区间还是一段区间,而不是两个顶点,就是如果两个点的距离大于1,就往离散的数据里插入一个中间值,即用三个点来表示一段区间 /* 离散化长 ...