git

Author:Helene

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载请注明来自Helene的博客


什么是git

Git是一种分布式版本的版本控制系统

所谓版本控制系统,就是记录文件所有状态变化,可以使得用户随时切换到过去某一“版本”的状态。

设置git

使用Git时,首先要做的就是设置用户的E-mail信箱及用户名。打开终端,输入如下:

git config --global user.name "Helene"
git config --global user.email "878723827@qq.com"

输入完成之后,可以检查一下当前的设置:

git config --list
user.name=Helene
user.email=878723827@qq.com

可以给每个项目设置不同的作者吗

git config --local user.name wd
git config --local user.email 'emali@.com'

新增/初始化Repository

1、全新的开始

mkdir git-demo 
cd git-demo
git init

2、如果本来就有目录

如果针对本来就存在的目录进行版本控制,只要到那个目录下执行git init命令即可。

如果该目录不想再被git控制

其实,Git的版本控制很单纯,全都是靠.git目录在做事。如果这个目录不想被版控,或者只想给客户不含版本控制记录的内容,
只要把.git目录移除即可,Git就对这个目录失去控制权了。

把内容交给git

执行git add命令

可以是:

git add . 或者是git add --all

–all 和 . 参数有什么区别

执行命令时的目录位置,如果没在根目录,.参数会将当前目录以及它的所有子目录中的异动全部加入到暂存区,但是该目录以外的就不归管了。
--all命令就没有这个问题,--all不管是在项目的哪一层目录执行,效果都是一样的,会将项目中的所有异动都加入暂存区。

将暂存区的内容放入存储库

git commit -m '说明'

一定要有内容才能提交吗?

只要加上--allow-empty,没有内容也是可以commit的。

git commit --allow-empty -m '空的'

查看记录的方法

git log

使用以上命令后,越新的信息越会显示在上面。

使用 git log --oneline --graph 可以看到更精简的结果

使用git查询历史记录时的常见问题

1、想要找某个人或者某些人的提交:

git log --oneline --author="Sherly"

也可以查找多个人的提交记录,使用 ‘|’,但是|前面需要加上\,否则会被判断为一般的文字,而不是功能符号:

git log --oneline --author="Sherly |\ WD"

2、想要找提交的信息中是否含有某些关键字

使用grep参数,可以从提交的信息中搜索符合关键字的内容:

git log --oneline --graph --grep '添加'

3、查看单一文件的记录

git log 文件名

4、如果想查看这个文件每次的commit做了什么改动,可以给它加上一个-p参数

git log -p 文件名

修改commit记录

1、把.git目录整个删除;(不建议)


2、使用rebase命令来改动历史记录;

rebase指令有一种强大的互动模式,接下来介绍如何使用这种模式修改过去的历史记录。详情还是看书吧。

3、先把commit用git reset命令删除,整理后再重新commit;

4、使用--amend参数改动最后一次的commit。

git commit --amend -m '提交信息'

追加文件到最近一次的commit

1、使用git reset命令把最近一次的commit删除,加入新文件后再重新commit;

2、使用--amend参数进行commit。

git add 文件

git commit --amend --no-edit

有些文件不想放在git中

创建.gitignore文件

里面写类似以下:

secret.yml

config/database.yml

*.tmp

可以忽略这些忽略吗

git add -f 文件名称

使用分支

1、查看全部分支

git branch

2、新增分支

git branch 分支名

3、更改分支名

git branch -m 要修改的分支的分支名 新名称

4、删除分支

git branch -d 分支

但是如果要删除的分支还没有被完全合并,使用-d参数无法将其删除,这时改用-D参数将其强制删除即可。

在git中什么分支都可以删除,包括默认的master分支,只是当前所在的分支不能被删除。

5、切换分支

git checkout 分支名

如果切换分支时,要切换的分支不存在,只要加上-b参数就可以了。如果这个分支存在那就会直接切换过去,不存在的话会新建一个在切换过去。

6、合并分支

合并分支

切换到要合并的分支,之后执行如下

git merge 分支名

7、恢复已经被删除但是没有被合并了的分支

git branch 新分支名 被删除分支时候的sha-1值  即可找回

8、从过去的某一个commit在创建一个新的分支

首先找到过去那个sha-1值,执行如下:

git checkout sha-1值

现在处于detached HEAD,执行如下

git checkout -b 新分支名 即可

一步到位:
git branch 新分支名 sha-1 或者

git checkout -b 新分支名 sha-1