- 什么是git
- 设置git
- 新增/初始化Repository
- 如果该目录不想再被git控制
- 把内容交给git
- –all 和 . 参数有什么区别
- 将暂存区的内容放入存储库
- 查看记录的方法
- 使用git查询历史记录时的常见问题
- 修改commit记录
- 追加文件到最近一次的commit
- 有些文件不想放在git中
- 使用分支
什么是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