Git Pro学习(上)

Git Basic

1.git config 工具

简介:git config 是一个用来配置和读取相应工作环境变量的工具,正是由于配置的环境变量决定了GIt在各个环节的工作方式和行为。

  • /etc/.gitconfig    系统配置,使用 git config —system选项配置.
  • ~/.gitconfig        用户配置,配置文件位于用户主目录下,使用 git config —global选项来配置.
  • .git/.gitconfig   项目配置,针对某个项目的配置

优先级:项目配置 > 用户配置 > 系统配置

设置信息:

$  git config —global user.name “John Doe”

$  git config —global user.email “johndoe@example.com”

以上会修改~/.gitconfig 文件的内容.

设置文本编辑器:

$  git config —global core.editor mvim

设置文本编辑器之后,git commit之后可能会出现Aborting commit due to empty commit message.错误,

解决方法:git config —global core.editor mvim -f

代表mvim在前台运行.

设置差异分析工具:

$  git config —global merge.tool vimdiff 

查看配置信息:

$  git config —list or git config user.name

注意:如果看到重复的参数,说明它们来自不同的.gitconfig 文件(/etc/.gitconfig or ~/.gitconfig).

2.获取帮助

$  git help

$  git help config

$  man git

3.git基础

取得项目的仓库

$  git init - 初始化仓库 

$  git add file - 将文件纳入版本控制

$  git commit -m “add file.” - 提交修改

从现有仓库克隆

$  git clone git://github.com/schacon/grit.git

以上代码会在当前目录创建一个文件夹grit,其中包含一个.git文件夹,用于记录下载下来的所有文件的版本记录.

$  git clone git://github.com/schacon/grit.git grit

和上一条有所不同的是它指定了所要克隆到的文件夹名字.

当然git 支持很多种传输协议,不过你也可以用 http(s):// 或者 user@server:/path.git 表示的 SSH 传输协议.

记录每次的更新到版本库

文件所处的状态如下图所示: 

$  git status - 检查文件所处的状态

$  touch README

$  git status

Untracked files:

README

$  git add README - 使用add命令将文件纳入版本控制

$  git status

    Changes to be committed:

new file:   README

Changes to be committed:说明文件还没有追踪

$  git vim .gitignore 

$  git status

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

new file:   README

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

modified:   .gitignore

Changes to be committed:说明文件已经追踪但是还没有被提交

Changes not staged for commit:说明文件已经被修改还没有被提交

$  git add  .gitignore 

$  git status

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

modified:   .gitignore

new file:   README

忽略某些文件

$  cat .gitignore

#ignore文件

*.cpp

*~

第一行告诉我们git会忽略所有以.cpp为后缀的文件

第二行告诉我们git会忽略所有以~结尾的文件

#之后的内容会被忽略掉,命名匹配支持正则表达式


查看文件的更改

$  git diff

diff --git a/benchmarks.rb b/benchmarks.rb

index 3cb747f..da65585 100644

--- a/benchmarks.rb

+++ b/benchmarks.rb

@@ -36,6 +36,10 @@ def main

           @commit.parents[0].parents[0].parents[0]

         end

+        run_code(x, 'commits 1') do

+          git.commits.size

+        end

+

         run_code(x, 'commits 2') do

           log = git.commits('master', 15)

           log.size

以上命令比较的是为暂存的文件的更改

$  git diff —cached  (命令同git diff —staged)

以上命令查看已暂存的文件和上次提交的文件的diff

提交更新

$  git commit

以上命令会打开磨人的编辑器编辑commit message,可以使用 - git config —global core.editor youreditor 来更改默认的编辑器

$  git commit -m “commit message” - 直接指定commit message,无需打开编辑器 

$  git commit -v - 将更改的内容作为commit message提交

$  git commit -a -m 'added new benchmarks' -a add未暂存文件,并提交

移除文件

$  rm README - 简单删除文件

$  git rm README - 记录此次移除文件的操作

$  git rm --cached readme.txt - 移除对该文件的暂存和追踪,并不会删除文件

移动文件

$ git mv README.txt README - 对文件名进行修改

以上命令相当于:

$ mv README.txt README

$ git rm README.txt

$ git add README

4.查看提交的历史

$ git log

如果不加任何参数,默认会按照时间列出所有的更新,最近时间的在最上面,包括 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明

关于git log的选项

$ git log -p -3

使用以上命令用来展示每次提交的内容差异,-3则是仅仅显示最近的3次更新。

$ git log —stat - 显示简要的增改行数

$ git log --pretty=oneline - 每次提交以一行显示,此外还有short、full、fuller

$ git log --pretty=format:"%h - %an, %ar : %s”

$ git log --pretty=format:"%h %s" —graph - 图形化显示

选项 说明

-p 按补丁格式显示每个更新之间的差异。

--word-diff 按 word diff 格式显示差异。

--stat 显示每次更新的文件修改统计信息。

--shortstat 只显示 --stat 中最后的行数修改添加移除统计。

--name-only 仅在提交信息后显示已修改的文件清单。

--name-status 显示新增、修改、删除的文件清单。

--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。

--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。

--graph 显示 ASCII 图形表示的分支合并历史。

--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。

--oneline `--pretty=oneline --abbrev-commit` 的简化用法。

$ git log --since=2.weeks - 限制输出长度 --since 和 —until

5.撤销操作

重新提交

$ git commit —amend - 重新提交

如果你在一次提交之后发现遗漏掉某些修改,这时你可以修改之后,然后执行以上命令,重新编辑提交的comment,这次提交会覆盖掉上一次的提交。

for example:

$ git commit -m “add some files”

$ mvim README //some changes

$ git add README

$ git commit —amend -m “add some files and edit README”

取消暂存文件

某些临时文件不小心add到暂存库中了,此时如何将其从暂存库中取消?请看下面:

$ git reset HEAD your_file - 取消暂存区中纪录的文件的修改

取消对文件的修改

$ git checkout — you_file - 取消对文件的修改

 6.远程仓库的使用

$ git remote -v - git remote会列出原称分支的简称,添加v参数来显示对应的克隆地址

$ git remote add [shortname] [url] - 添加远程仓库,指定一个简单的名字

$ git fetch [remote name] - 拉取远程的代码

$ git push [remote-name] [branch-name] - 提交代码到远程分支上

$ git remote show origin - 查看远程分支的详细信息

$ git remote rename pb paul - 修改远程分支在本地的简称

$ git remote rm paul - 移除对应的远端仓库

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值