git 基础使用

在线图书总目录:https://git-scm.com/book/zh/v2

初次运行 Git 前的配置

使用Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:(不可更改,不可更改,不可更改

设置你的用户名称与邮件地址:(我设置的时候大家写的都是自己名字拼音,我写了个Rango,后来想改也改不了,也许有别的办法...,)

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
再次强调,如果使用了  --global  选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有  --global  选项的命令来配置

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置

获取帮助

若你使用 Git 时需要获取帮助,有三种方法可以找到 Git 命令的使用手册:

$ git help <verb>
$ git <verb> --help
$ man git-<verb>
例如,要想获得 config 命令的手册,执行    (然并卵,根本看不懂...还需要修炼啊!)

$ git help config

获取 Git 仓库

$ git init

克隆现有的仓库 (cd 空格  把你想克隆的文件夹拖进来,eg:test) (克隆仓库的命令格式是 git clone [url] eg:libgit2

$ cd /Users/用户名/Desktop/test
$ git clone https://github.com/libgit2/libgit2

检查当前文件状态(可以看到你都改了哪些文件,创建了多少新的文件)

$ git status

git status -s  (状态简览)

新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 你可能注意到了 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区

跟踪新文件(eg:README)并放到暂存区

$ git add README
当前做的哪些更新还没有暂存? 有哪些更新已经暂存起来准备好了下次提交?
$ git diff

提交更新(写上你这次提交的是什么 eg:007bug)

$ git commit -m "Fix 007bug"

跳过使用暂存区域提交之前不再需要 git add 文件

$ git commit -a -m "Fix 007bug"

移除文件从暂存区域移除 eg:file.md

git rm file.md

移动文件(从 A.md 到 A )

$ git mv A.md  A

查看提交历史(按提交时间列出所有的更新,最近的更新排在最上面

$ git log
一个常用的选项是  -p ,用来显示每次提交的内容差异。 你也可以加上  -2  来仅显示最近两次提交
$ git log -p -2
git log 的常用选项

-p

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

--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(后跟指定格式)。

想了解更多的,参考链接:  https://git-scm.com/book/zh/v2/Git-基础-查看提交历史

撤消操作

$ git commit --amend

取消暂存的文件(eg:CONTRIBUTING.md)

$ git reset HEAD CONTRIBUTING.md

撤消对文件的修改你需要知道 git checkout -- [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令

$ git checkout -- CONTRIBUTING.md

远程仓库的使用

查看远程仓库

$ git remote
你也可以指定选项  -v ,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
$ git remote -v

添加远程仓库git remote add <shortname> <url> 

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

从远程仓库中抓取与拉取

git pull   命令来自动的抓取然后合并远程分支到当前分支。

推送到远程仓库只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效

$ git push origin master

远程仓库的移除与重命名(eg:pb 到 paul)同样也会修改你的远程分支名字

$ git remote rename pb paul

打标签(没用过...)

想了解更多的,参考链接 : https://git-scm.com/book/zh/v2/Git-基础-打标签

Git 别名(偷懒神器..)(下次用的时候,git co = git checkout  ,git br = git branch)

$ git config --global alias.co checkout
$ git config --global alias.br branch

分支简介 (里面有各种图形介绍,让你对分支是怎么运行的有个深刻的理解)

NOTE

Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。

分支创建(创建一个testing 的分支) 有一个名为 HEAD 的特殊指针,指向当前所在的分支,默认是master。

$ git branch testing

分支切换 (这样 HEAD 就指向 testing 分支了

$ git checkout testing
下面这个 相当于上面 创建和切换 的简写
$ git checkout -b testing
分支合并(假设你有个紧急问题需要修改,先切换到master分支,创建并切换分支hotfix,修改完测试通过以后,进行合并)
$ git merge hotfix
这个是把hotfix分支上的修改合并到master上,这个时候HEAD指针先指向master,再指向hotfix,hotfix就不需要了 ,就可以删除了 
分支删除
$ git branch -d hotfix

分支管理

git branch  命令不只是可以创建与删除分支。  如果不加任何参数运行它,会得到当前所有分支的一个列表(注意 * 字符的就是当前 HEAD 指针所指向的分支,也就是你当前的分支
查看每一个分支的最后一次提交,可以运行 git branch -v
--merged 与 --no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。 如果要查看哪些分支已经合并到当前分支,可以运行 git branch --merged
如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它(eg:git   branch   -d   testing

远程分支

git remote  (查看远程分支,最少有一个 origin )

git ls-remote  (获得远程引用的完整列表

拉取

git pull  (会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据然后尝试合并入那个远程分支)

当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容。 它只会获取数据然后让你自己合并。 然而,有一个命令叫作 git pull 在大多数情况下它的含义是一个 git fetch紧接着一个 git merge 命令

推送

git push (remote) (branch)

变基(有点不好理解,还是看图吧)

https://git-scm.com/book/zh/v2/Git-分支-变基#





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值