Usage of git

Reference
远程分支切换问题

Git 配置

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
  • ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
  • 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

    用户信息

配置个人的用户名称和电子邮件地址:

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

查看配置信息

要检查已有的配置信息,可以使用 git config --list 命令:

$ git config --list
http.postbuffer=2M
user.name=runoob
user.email=test@runoob.com

基本概念

我们先来理解下Git 工作区、暂存区和版本库概念

工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:
1494427-20180924222435850-663823781.png

Git 创建仓库

git init

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变.
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'

git clone

我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。

克隆仓库的命令格式为:

git clone <repo>
git clone <repo> <directory>

参数说明:
repo:Git 仓库。
directory:本地目录。
比如,要克隆 ims0 代码仓库 root,可以用下面的命令:

git clone git://github.com/ims0/root.git

执行该命令后,会在当前目录下创建一个名为root的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字.

撤销操作

从暂存区恢复文件

用暂存区的文件覆盖工作区对某个文件的修改: git checkout -- readme.md
这种情况用于readme.md 添加到暂存区后,又做了一些错误的修改,想恢复到暂存区的状态
无论readme.md 是否提交到仓库,都是以暂存区为模板来恢复。

从仓库恢复某个文件

加入一个工作区/暂存区/仓库都不一样,想要工作区恢复到和仓库一样
1,使用git reset HEAD 把仓库中的指定文件恢复到暂存区
2,使用git checkout -- 把暂存区的指定文件恢复到工作区

版本退回

1,仓库版本覆盖整个工作区 git reset --hard HEAD
2,前一个仓库版本覆盖整个工作区 git reset --hard HEAD^
3,前两个仓库版本覆盖整个工作区 git reset --hard HEAD^^
4,前n个仓库版本覆盖整个工作区 git reset --hard HEAD~n
5,根据版本号回退 git reset --hard 版本号,(使用 git reflog 查看版本号)

版本前进

1, 打印log: git reflog
2, 根据id 前进到指定版本: git reset --hard commit_id

分支操作

总结创建与合并分支命令如下:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

删除未跟踪的文件

git clean -f

连 untracked 的目录也一起删掉

git clean -fd

连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)

git clean -xfd

在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删

git clean -nxfd
git clean -nf
git clean -nfd

git blame

显示指定行
git blame -L 40,60 foo
git blame -L 40,+21 foo

.gitconfig

[alias]
    st = status
    co = checkout
    br = branch
    ci = commit
    pop = stash pop
    last = log -1 HEAD
    res0 = reset HEAD
    res1 = reset HEAD^
    reh0 = reset --hard HEAD
    reh1 = reset --hard HEAD^
    d = difftool
    lg = log --color --graph --pretty=format:'%Cred%h%Creset %C(bold blue)<%an>%Creset ---%C(yellow)%d%Creset %s  %Cgreen(%cr)' --abbrev-commit

转载于:https://www.cnblogs.com/ims-/p/9697028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值