Git 学习笔记 (二、基础)
Git 学习笔记 (二、基础)
dandyIder 发表于4年前
Git 学习笔记 (二、基础)
  • 发表于 4年前
  • 阅读 83
  • 收藏 8
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: Git 学习笔记。 gitoschina 参考资料:http://git.oschina.net/progit/2-Git-%E5%9F%BA%E7%A1%80.html

获取 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

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

标签: git github gitsochina
共有 人打赏支持
粉丝 4
博文 15
码字总数 5901
×
dandyIder
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: