git的相关用法

转载请标明出处 http://blog.csdn.net/wzhwcp/article/details/69668716 本文出自:【wzhwcp的博客】

git

1.git基本概念

1.1基本概述

git 采用的是分布式仓库,本地和远程仓库都是一个包含完整记录的仓库,如果某一处被格式化了,还以从另一个仓库获取,并不会有大影响(只要之前进行了同步仓库)。git 可以在断网的情况下,提交到本地仓库,之后联网再推到远程仓库。每次提交或者保存,git都会记录下所有文件状态,若未改变的文件,git不会再次存储,只会链接到之前已经存储的文件。

1.2状态

git文件一共有四种状态:
* Untracked 新建的文件,git仓库中没跟踪的

以下为git中存在的,并在跟踪的
* Unmodified 和仓库文件对比没修改过的
* Modified 修过的
* Staged 提交之前的状态(执行commit之后,会将处在这个状态下的文件,commit到版本库中)

lifecycle

2.忽略文件

创建本地.gitignore
* touch .gitignore 不commit在本地用,也可以commit到仓库和别人一起分享

创建一个global .gitignore
* git config --global core.excludesfile ~/.gitignore_global 每个Git repository项目都可以用这个rules
* 这里可以看到相关规则a Gist containing some good rules

指定仓库排除
* 不用创建.gitignore 只用在本地生成的文件.git/info/exclude中添加规则,这里添加的规则并不会被checked in,并且也只对本地repository生效

参考Ignoring files

3.比较不同

  • git diff

    • Modified 状态的文件与State状态的文件compares
  • git diff -stated (stated换成cached,它两是同义词)
    • State状态下的文件与last commit状态compares

4.提交文件

  • git commit
    • 弹出默认的或者你配置的编辑器进行提交信息编辑
  • git commit -m flag

    • 这种是比较简便的方式,eg:

    git commit -m "Story 182: Fix benchmarks for speed"

  • git commit -a

    • 如果有很多处于Modify状态的文件,一个个add到state状态太麻烦,可以直接加-a,自动加到state,并全部提交

这里遇到一个问题:当我不修改系统默认的提交信息时(或者只是换行不输入任何信息),然后关掉编辑器会出现提交不成功,并会提示
Aborting commit due to empty commit message.

解决方法:必须输入新的提交信息,即在原来的基础上,至少要加入新的行数据。

5.移除文件

  • git rm
    • 移除文件,git不再对其跟踪,并从磁盘删除
  • git rm –cached file
    • 从git中删除,但保留在本地磁盘
  • git rm log/*.log
    • 删除log/目录下以.log结尾的文件,即后面可以加一些表达式eg:

git rm \*~ 删除所有以~这个结尾的文件

6.移动文件

  • git mv file_from file_to
    • 将文件重新命名,并处于state状态

7.参看提交历史

  • git log 显示检验码、作者、日期、提交信息
  • git log -p -2 显示每个提交修改的补丁 限定两个
  • git log –stat 显示多少文件修改,增加或减少多少行
  • git log –pretty=oneline(short、full、fulller) 输出更粗略的的信息
  • git log –pretty=format:”%h - %an, %ar : %s” 精简格式化输出,更多参数详见:Table 1. Useful options for git log –pretty=format
  • git log –pretty=format:”%h %s” –graph (graph以图表显示详细的branch和merge历史)更多的选项命令详见:Table 2. Common options to git log

限定输出
* git log –since=2.weeks 最后两周提交
* git log -Sfunction_name 最后一次匹配的增加或移除提交

更多限定
Table 3. Options to limit the output of git log

8.撤销相关:

参考至:Git Basics - Undoing Things
* git commit –amend
* 当执行了commit之后,commit信息不完整、或者有文件还处在Modified 状态,需要在上一个commit下提交,那么就需要执行次命令,然后将文件add到state area,最后再提交,此提交会覆盖上一次提交

`eg

$ git commit -m ‘initial commit’

$ git add forgotten_file

$ git commit –amend`

  • git reset HEAD README.md
    • 将处于state area 的文件移除撑modified文件
  • git checkout –README.md
    • 将处于Modified的文件恢复成到上一次commit状态 (注意:这是修改的内容将会被删除,更好的方法是用Git Branching

9.与远程仓库对接

展示仓库名

  • git remote (- v 列出URLS)

    • 列出你指定的远程仓库名,如果当前仓库是cloned下来的,至少可以看到origin,我们可以用这些名字,很方便的进行pull和push
  • git remote add

    • 添加一个以shortname为引用的远程仓库

fetch、pull、push
* git fetch[remote-name]
* 获取你本地没有的数据,并且不会与你编辑过的文件合并,只能手动进行合并;还可以获取所有的分支引用,进行合并和检查。
* git pull
* 如果目前分支有建立起远程仓库追踪(如:gitclone url),那么pull则会获取数据并自动和编辑过的文件进行合并。
* git push [remote-name] [branch-name]

eg  `git push origin master`

(==注==:origin 是用git clone到本地之后,自动命名,如果在你push之前,有人先push了,那么push会失败,必须fetch下来合并,并且运行起来,才能在push)

  • git remote show [remote-name]
    • 检查远程仓库、将会展示追踪的分支消息、同时也会提示,当本地运行git pull和git push会进行啥操作
  • git remote rename pb paul
    • 重命名
  • git remote remove [remote-name]
    • 移除镜像

10.Tagging

  • git tag 列出所有标记列表
  • git tag -l “v1.8.5*” 列出指定匹配模式的标记
10.1 轻量(lightweight)标记

指定一个提交(commit)点作为tag,并不保存额外的信息、

  • git tag v1.4-lw
  • git show v1.4-lw 并不展示额外的信息
10.2 注解(Annotated)标记

包含tagger 名字、邮箱、日期、tagging msg等信息

  • git tag -a v1.4 -m “my version 1.4”

-m 指定标记消息,若没有,系统会自动采用默认的编辑器

给之前提交(commit)加上tag

  • git log –pretty=oneline 看之前的提交历史
  • git tag -a v1.2 9fceb02 根据提交的校验和添加tag

分享tags
默认情况下,git push 并不会将本地的tag,push到远程服务器上,用以下两个命令行推到远程仓库上

  • git push origin v1.5 指定一个tag到远程仓库上
  • git push origin –tags 将所有的tag推到远程仓库

检出Tags
必须新建一个分支,然后将要检出的tags,指定到这新分支上
* git checkout -b [branchname] [tagname]
* git checkout -b version2 v2.0.0

11.别名(Aliases)

为了是命令更简单、更容易明白和操作,可以给命令添加别名如下:
* git config –global alias.co checkout
* git config –global alias.br branch
* git config –global alias.ci commit
* git config –global alias.st status

运行的时候直接打 git ci可以

可视化命令 gitk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值