git - 介绍
1、git是用什么语言开发的
C语言
2、集中式版本控制系统(代表SVN等)
- 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
- 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。
3、分布式版本控制系统(代表Git等)
- 分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
- 和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
- 在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
git - 命令
1、定义:括号后为简称
工作区 | workspace(W) |
暂存区 | index(I) |
本地仓库 | local repository(L) |
远程仓库 | remote repository(R) |
2、git config 配置
- 安装好git后,在命令行或终端中使用下面的命令可以设置git自己的名字和电子邮件。这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
命令 | 说明 | 备注 |
git config <--local | --global | --system> -l | --local:仓库级,--global:全局级,--system:系统级 | |
git config -l | 查看当前生效的配置 | |
git config --global user.name | 查看用户名 | |
git config --global user.email | 查看邮箱 | |
git config --global user.name "[name]" | 设置用户名 | |
git config --global user.email "[email]" | 设置邮箱 |
3、git clone 【从远程仓库克隆一个版本库到本地】
命令 | 说明 | 备注 |
git clone [远程仓库的网址] | 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下 | |
git clone [远程仓库的网址] [本地目录] | 指定本地仓库的目录 | |
git clone [远程仓库的地址] -b [分支名称] [本地目录] | -b 指定要克隆的分支,默认是master分支 |
4、git init 【初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录】
命令 | 说明 | 备注 |
git init | 初始化本地仓库,在当前目录下生成 .git 文件夹 |
Git本地仓库
1、git branch 命令操作
命令 | 说明 | 备注 |
git branch | 查看本地分支 | 前面带*号的是当前分支 |
git branch -d [branchName] / git branch -D [branchName] | 删除本地已合并的分支 | 使用时应注意是否已合并 |
git branch [branchName] | 创建本地分支 | 需要注意,创建分支时,不会有什么提示。 |
git branch -a | 查看全部分支 | 包括本地和远程 |
git branch | grep 'branchName' | 模糊查询本地分支 | |
git branch --set-upstream-to=origin/[branchName] | 建立本地到上游(远端)仓的链接 | 这样代码才能提交 |
git branch --unset-upstream [branchName] | 取消对[branchName]分支的跟踪 | 不能提交至[branchName]分支??? |
2、git fetch
命令 | 说明 | 备注 |
git fetch -p | 清理本地无效分支 | 远程已删除本地没删除的分支 |
3、git checkout 命令操作
命令 | 说明 | 备注 |
git checkout -b [branchName] commitId | 根据指定版本号创建分支 | |
git checkout -b [branchName] | 本地创建并切换分支 | |
git checkout [branchName] | 切换分支 |
4、其他命令
命令 | 说明 | 备注 |
ls | 查看本地分支下的文件 | 得到的是当前目录 |
5、git rm 命令
命令 | 说明 | 备注 |
git rm [file] -r -f | 删除[file]文件夹及其下所有的文件 | 不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶) |
git rm --cached [file1] ... | 撤销,从暂存区到工作区 | 不删除物理文件,仅将该文件从缓存中删除 |
6、git commit 命令 【从暂存区到本地仓库】
命令 | 说明 | 备注 |
git commit -m "message" | 同步操作到远程分支 | |
git commit -a -m "message" | 同步操作到远程分支 | 加的-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区 |
git commit --amend | 追加提交 | 它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中 |
git commit --amend --author="Author Name <email@address.com>" | 修改提交的用户信息 | |
git commit --help | 查看帮助 |
7、git add 命令 【从工作区到暂存区】
命令 | 说明 | 备注 |
git add [file1] [file2] [directory] | 添加单个文件/多个文件/目录 | |
git add . | 添加新增和修改的文件 | 不做删除操作 |
git add -u | 添加修改和删除的文件 | 不做新增操作 |
git add -A | 添加增删改文件 | 等于git add . 和 git add -u |
8、git reset 命令
命令 | 说明 | 备注 |
git reset --hard HEAD | 恢复到HEAD版本 | 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100 |
9、git ls-files【查看暂缓区】
命令 | 说明 | 备注 |
git ls-files / git ls-files -c | 查看暂存区中文件信息 | |
git ls-files -m | 查看修改的文件 | |
git ls-files -d | 查看删除过的文件 | |
git ls-files -o | 查看没有被git跟踪的文件 |
Git远程仓库
git push
命令 | 说明 | 备注 |
git push origin --delete [branchName] | 删除远程分支 | 本地仓库切换到当前分支上,在删除远程分支时,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支 |
git push origin [branchName] | 提交分支 | |
git push origin [branchName]:[branchName] | 将分支[branchName]推送到远程 | 冒号前面的[branchName]:推送本地的[branchName]分支到远程origin,冒号后面的[branchName]:远程origin没有会自动创建 |