Git学习(一)

git的学习(一)

换了新工作,一直没时间写博客,怠惰啊,新工作用的GIT,这里,写一下GIT的一些学习记录

git与其他版本控制的比较

之前一直使用的是SVN,当服务器an宕机,会产生问题
使用git可以避免
git是基于快照流,其他 的是文件变更列表

git的三种状态

committed modified staged
对应三个工作区域:Git仓库 工作目录 暂存区域
工作流程:修改->暂存->提交

git安装

使用前配置

配置分三级,对应不同的位置:/etc/gitconfig->系统上所有用户
~/.gitconfig 或 ~/.config/git/config 文件->当前用户
仓库的 Git 目录中的 config 文件(就是 .git/config)->该仓库
每一级别和i覆盖上一级别 git会查找最后的变量配置值
查看配置的值:git config

获取git仓库与更新仓库

  • git init 初始化仓库

  • git add 跟踪文件

  • git rm 从跟踪文件中移除文件 -f 强制移除 –cached 移除暂存区的文件

  • git mv 移动文件

  • git commit 提交 -m 解释
    -a 跳过暂存区域,直接将跟踪过的文件暂存起来并提交

  • git clone url 文件目录 克隆到指定目录下

  • git status 查看文件状态

  • git status –short / -s 查看文件状态 M(left) 修改放入暂存区 M(right)修改未放入暂存区
    A 新添加到暂存区 ??未跟踪的文件

  • git diff 查看未暂存的文件更新了哪些部分,比较的是工作目录中当前文件与暂存区域快照之间的差异
    git diff –cached /–staged 查看已暂存的将要下次提交的内容

忽略文件

创建一个名为 .gitignore 的文件
.gitignore的规范:
+ 所有空行或者以 # 开头的行都会被 Git 忽略。

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

  • 匹配模式可以以(/)开头防止递归。

  • 匹配模式可以以(/)结尾指定目录。

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

    glob匹配:

    • (*)匹配零个或多个

    • [abc] 匹配任何一个括号中的字符

    • (?)匹配一个任意字符

    • [0-9] - 匹配一个范围

    • a/**/z 匹配任意中间目录

案例:

# no .a files
*.a

# but do track lib.a, even though you're ignoring .a files above
!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO
/TODO

# ignore all files in the build/ directory
build/

# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt

# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

查看提交历史

  • git log 按提交时间(最新的在上面)列出所有更新(SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明)

  • git log -p -2 -p 显示每次提交的内容差异 -2 最近2次 -(n) 显示最近的n条提交历史

  • git log –stat 可以查看每次提交简略的统计信息

  • git log –pretty=oneline/short/full/fuller/format: 提交历史的显示格式 –graph 显示 ASCII 图形表示的分支合并历史

  • git log –since=2.weeks 近2周的提交历史 –after 指定时间之后 –until –before 制定时间之前

  • –author 显示指定作者的提交 –committer 与提交者相关的提交

  • –grep 查找关键字

  • –all-match 需要同时满足两个条件时需要加

  • -S 显示添加或者移除某个关键字的提交

  • git log 选项的最后指定它们的路径 某个目录或文件的提交历史

提交与撤销

  • git commit –amend 重新提交 第二次提交将代替第一次提交

  • git reset HEAD … 取消暂存

  • git checkout –… 撤销修改,会复制一个新的文件并覆盖源文件

远程仓库

  • git remote 查看远程仓库服务器的简写(默认名字为origin)
    -v 显示服务器简写与URL
    show 显示更多信息
    rename 修改远程仓库的简写名
    rm 移除远程仓库

  • git remote add 添加一个远程仓库

  • git fetch [remote-name] 抓取远程仓库的数据 不会自动合并或修改当前的工作

  • git pull [remote-name] 抓取数据 并自动尝试合并到当前的分支

  • git push [remote-name] [branch-name] 推送到远程仓库 先拉取后推送

打标签

git可以给历史中某一提交打上标签,以表示重要,一般用来标记发布节点

  • git tag 以字母顺序列出标签 git tag -l ‘v1.8.5*’

  • git tag -a v1.4 -m ‘my version 1.4’ 创建附注标签 -m 选项指定了一条将会存储在标签中的信息
    git tag v1.4-lw 创建轻量标签
    git tag -a v1.2 9fceb02 可以根据某次提交的校验和(或部分校验和)补打标签
    git push 默认不会推送标签到共享服务器 git push origin [tagname] / git push origin –tags 推送多条)

别名

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值