美文网首页程序员
git的基本使用

git的基本使用

作者: wzhwcp | 来源:发表于2017-12-06 11:42 被阅读0次

    转载请标明出处 http://www.jianshu.com/p/680757564abe 本文出自:【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> <url>

      • 添加一个以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

    相关文章

      网友评论

        本文标题:git的基本使用

        本文链接:https://www.haomeiwen.com/subject/iwukixtx.html