文档章节

Git 学习笔记 (二、基础)

dandyIder
 dandyIder
发布于 2014/03/24 22:51
字数 1781
阅读 88
收藏 8

获取 Git 网络仓库

比如获取我在 gitoschina 上的 HelloWord,当然要在 gitoschina 上创建一个 HelloWord 的项目。

在目录中初始化

 $ git init

从 gitoschina 上获取,格式: git clone [url]

$ git clone http://git.oschina.net/dandyIder/HelloWord.git

克隆到指定文件

$ git clone   abc

查看已暂存和未暂存的更新

$ git status

跟踪一个文件,格式 git add <filename>

$ git add HelloWord.java

编辑一个文件,可以用 vim or gedit

$ vim HelloWord.java
or
$ gedit HelloWord.java

修改 HelloWord.java 之后可以看看文件状态

$ git status

看看 HelloWord.java 和之前的有什么不同

$ git diff HelloWord.java

看看项目中被修改过的所以文件和原来的有什么不同。

$ git diff

看缓存中的

$ git diff --cached

提交更新

$ git commit

会用 vim 打开提交说明文档,在里面编辑提交说明。

不用 vim 打开提交说明文件进行编辑

$ git commit -m "这里填写更新说明"
eg
$ git commit -m "this first commit"

跳过缓冲区提交修改

$ git commit -a -m "add new file"

移除某个文件,结果是文件被删除了。提交的时候就不纳入版本管理。

$ git rm HelloWord.java
$ git status

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。

$ git rm -f HelloWord.java

把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。

$ git rm --cached HelloWord.java

$ git rm \*~

会递归删除当前目录及其子目录中所有 ~ 结尾的文件。

移动文件  

$ git mv file_from file_to
//eg
$ git mv HelloWord.java   /abc/HelloWord.java

HelloWord.java 就在/abc 目录下了。

文件重命名

$ git mv HelloWord.java abc.java
//实质上是运行了
$ git rm HelloWord.java
$ git add abc.java

忽略某些文件,比如不提交 abc.java~  abc.java.back

创建一个 .gitignore 文件

vim .gitignore
gedit .gitgnore

写上 

*~
*.back

保存,然后 cat 下

cat .gitignore

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

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。

可以使用标准的 glob 模式匹配。

匹配模式最后跟反斜杠(/)说明要忽略的是目录。

要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

我们再看一个 .gitignore 文件的例子:

# 此为注释 – 将被 Git 忽略

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

    *.a

    # 但 lib.a 除外

    !lib.a

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

    /TODO

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

    build/

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

    doc/*.txt

查看历史提交

$ git log

我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:

$ git log -p -2

在做代码审查,或者要快速浏览其他协作者提交的更新都作了哪些改动时,就可以用这个选项。此外,还有许多摘要选项可以用,比如 --stat,仅显示简要的增改行数统计:

$ git log --stat

跟多 git log 使用方式请看学习资料

撤销操作

    修改最后一次提交。

    有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

$ git commit --amend

    此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

取消已经暂存的文件

$ git status
$ git reset HEAD <file>...

取消对文件的修改

$ git status
$ git checkout -- <file>...

查看当前的远程库

$ git remote 
$ git remote -v

添加远程仓库,git remote add [shortname] [url]

$ git remote add pd  
$ git remote -v

现在可以用字符串 pb 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb:

$ git fetch pd

推送数据到远程仓库

项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单: git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:

$ git push origin master

只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。

查看远程仓库信息

我们可以通过命令 git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:

$ git remote show origin

远程仓库的删除和重命名

在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简称,比如想把 pb 改成 paul,可以这么运行:

$ git remote rename pd purl
$ git remote -v

删除

$ git remote rm purl
$ git remote -v

标签,列出所以标签

$ git tag

新建标签

Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

含注释的标签

$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
$ git show v1.4

更多详细介绍,请看学习资料

© 著作权归作者所有

共有 人打赏支持
dandyIder
粉丝 3
博文 15
码字总数 5901
作品 0
广安
程序员
私信 提问
java&javaweb学习笔记(汇总)

我的java&javaweb学习笔记(汇总) 笔记分为两大部分:javase和javaweb javase javaweb 笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解java基础语法,想进一步深入学习的人 gi...

brianway
2016/02/09
1K
2
git文章列表

关于gitlab默认clone协议 Git实现从本地添加项目到远程仓库 翻翻git之---一个简单的标签控件 LabelView (随手发了两张小宝宝的玩耍照) Git 项目推荐 | Java 版微信普通号机器人 翻翻git之---...

d_watson
2016/04/20
26
0
Posix多线程编程学习笔记

Posix多线程编程学习笔记(一)—线程基础(1) http://blog.chinaunix.net/u/22935/showart_310711.html Posix多线程编程学习笔记(一)—线程基础(2) http://blog.chinaunix.net/u/2293...

晨曦之光
2012/04/13
225
0

hjimce算法类博文目录 个人博客:http://blog.csdn.net/hjimce 个人qq:1393852684 知乎:https://www.zhihu.com/people/huang-jin-chi-28/activities 一、深度学习 深度学习(七十)darknet...

hjimce
2016/01/24
0
0
Mini 容器学习笔记1——环境搭建(基础篇)

一. 环境下载 到Mini 容器的官方网站下载NLite框架的二进制文件,下载并解压后就可以了。 我们使用NLite框架需要用到下面的文件: NLite.dll(必要) 二. 建立NLite应用程序 新建一个控制台应用...

netcasewqs
2011/08/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

以太坊PHP离线交易开发包

EthTool开发包适用于希望采用裸交易的PHP以太坊应用开发,主要包含以下特性: 支持裸交易部署/调用合约 内置etherscan和infura支持 keystore生成与读取,兼容geth/parity 采用裸交易的一个好...

笔阁
19分钟前
0
0
SRE的含义及与 DevOps 如何关联?

虽然站点可靠性工程师(site reliability engineer SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题...

linuxCool
20分钟前
1
0
月入3万之一个程序员的转行坎坷历程

陈年往事 “我月入3万,怎么会少少了你一个鸡蛋啊?” 这是2017年9月左右的一个新闻,一位煎饼摊大妈因和顾客争执时脱口而出这样一句话而走红。当时还上了各大新闻的头条。 互联网兴起今天,...

苏南-首席填坑官
42分钟前
2
1
OSChina 周一乱弹 —— 眼看着这颗陨石砸了下来

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Nachtblut的单曲《Antik》 《Antik》- Nachtblut 手机党少年们想听歌,请使劲儿戳(这里) @mr_chip :上海的初雪之后有点冷 ...

小小编辑
今天
394
7
Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部