• git 学习笔记


    GIT

    vcs:版本控制系统
    cvcs:集中化的版本控制系统
    dvcs:分布式版本控制系统

    git只关心文件数据的整体是否发生变化,而大多数其他系统则只关系文件内容的具体差异

    三种状态:

    在git内都只有三种状态:已提交(commmitted),已修改(modified),已暂停(staged).

    git管理项目时:
    文件流转的三个工作区域:git的本地数据目录,工作目录,以及暂存区域。

    初次运行git前的配置

    git提供一个叫做git-config的工具,专门用来配置或读取相应的工作环境变量。变量可以放在三个不同的地方,
    1. /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用gitconfig时
    用--system选项,读写的就是这个文件。
    2. ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用gitconfig时
    用--global选项,读写的就是这个文件。
    3. 当前项目的git目录中的配置文件(也就是工作目录中的.git/config文件):这
    里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以
    .git/config里的配置会覆盖/etc/gitconfig中的同名变量。

    用户信息

    $ git config --global user.name "JohnDoe"
    $ git config --global user.email johndoe@example.com

    文本编辑器

    $ git config --global core.editor emacs

    差异分析工具

    $ git config --global merge.tool vimdiff

    查看配置信息

    $ git config --list

    查阅某个环境变量的设定,只要把特定的名字跟在后面即可

    $ git config user.name

    获取帮助

    $ git help <verb>
    $ man git -<verb>

    git基础

    目录初始化

    $ git init

    检查当前文件状态

    $ git status filename

    忽略某些文件

    #创建一个名为.gitignore的文件,列出要忽略的文件模式
    $ cat.gitignore
    *.[oa]
    *~

    查看具体修改了什么地方

    git diff 

    提交更新

    $ git commit
    $ git commit -m "test"
    $ git commit -a #跳过使用暂存区域,给git commit加上-a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤

    移除文件

    git rm

    移动文件

    $ git mv file_from file_to
      #git mv就相当于运行了下面三条命令:
    $ mvR EADME.txt README
    $ git rm README.txt
    $ git add README

    查看提交历史

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

    修改最后一次提交

    $ git commit --amend

    查看当前的远程库

    $ git remote -v

    添加远程仓库

    $ git remote add pb git://github.com/paulboone/ticgit.git
    $ git fetch pb

    从远程仓库抓取数据

    $ git fetch [remote-name]
    fetch  #命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支
    git pull  #命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支

    推送到远程master分支

    $ git push origin master

    查看远程仓库信息:

    $ git remote show origin

    远程仓库的删除和重命名
    $ git remote rename pb paul
    移除对应的远端仓库
    $ git remote rm paul
    打标签

    $ git tag -a v1.4 -m "test" (-a annotated)
    $ git show v1.4

    获取git 日志

    git log --pretty=oneline

    推送所有标签:

    git push origin --tags

    Git命令别名:

    $ 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 config --global alias.unstage 'reset HEAD --'

    删除远程分支:  

    git push --delete origin devel

    这样一来,下面的两条命令完全等同:
    $ git unstage fileA
    $ git reset HEAD fileA

    分享标签
    git push origin [tagname]

    签署标签
    如果你有自己的私钥,还可以用GPG来签署标签,只需要把之前的-a 改成 -s (-s Signed)
    验证标签
    git tag -v [tag-name] (-v verify)

    当要指定存储的目录时
    $gi tclone git://github.com/schacon/grit.gitmygrit

    Git支持许多数据传输协议。之前的例子使用的是git://协议,不过你也可以用
    http(s)://或者user@server:/path.git表示的SSH传输协议。我们会在第四章详细介
    绍所有这些协议在服务器端该如何配置使用,以及各种方式之间的利弊。

    工作目录的文件有两个状态:已跟踪和未跟踪

  • 相关阅读:
    python面试的100题(2)
    面试题目和地址
    python面试的100题(1)
    no module named系列问题解决
    ubuntu16.04无法打开终端
    Reinforcement Learning,微信公众号:DRL学习
    Java中的I/O操作File
    Java中的Date时间转换【SimpleDateFormat (parse和format)】和Calendar日历表
    重写equals方法
    Java中栈,堆,常量池的简单理解
  • 原文地址:https://www.cnblogs.com/kaishi/p/7252067.html
Copyright © 2020-2023  润新知