git:分布式版本控制工具。其实就是一个软件,来管理文件夹使用的。需要通过命令操作。
github:世界级的开源网站,存储文件使用。使用者都是开发者。文件可以选择加密,只有自己能用,可以选择开源,所有人都能用。还可以和作者沟通。只接受git工具上传。在这个网站上又很多别人写好的各种语言的代码文件,如果有什么插件需要下载,可以在这个网站上搜索。
git可以管理本地文件,也可以管理gitgub的文件。
本地仓库:在自己电脑上被 git 管理的文件夹
远程仓库:在线上管理的文件夹
推送:将本地的内容,上传到远程
同步:将线上的内容和本地内容保持一致
本地使用git
下载安装,检测是否安装成功:
git --version
首先要在被管理的文件夹中进行初始化,才能在这个文件夹中使用git命令管理:
git init
初始化后,会出现一个隐藏的文件夹.git
,此时代表当前这个文件夹及其以下内容都被git管理了。git管理文件夹的时候将管理过程分为3个区域:
- 工作区:自己写的源文件
- 暂存区:将要保存的文件,暂时存在暂存区
-
历史区:生成一个版本,只能将暂存区的内容生成版本。上传的时候只能上传历史区的内容
将源文件添加到暂存区:
git add 文件 # 将单独一个文件添加到暂存区
git add 文件夹/ # 将整个文件夹添加到暂存区(git不管理空文件夹)
git add --all # 将当前文件夹中所有文件和文件夹都添加到暂存区 - 简写:git add .
查看git管理的文件的状态:
git status
将暂存区的文件拉回到源文件
git reset HEAD -- 文件名 //将某个文件从暂存区变为源文件
git reset HEAD -- 文件夹 //将整个文件夹从暂存区变为源文件
git reset HEAD -- . //将所有文件从暂存区变为源文件
将暂存区的内容生成历史版本:
git commit -m "版本说明"
查看所有版本信息:
git log
回到指定版本:
git reset --hard HEAD^ //有几个上档键(^)就退回几个版本
git reset --hard 历史版本号 //退回到指定历史版本
让git能管理一个空文件夹:
在空文件夹中新建文件:.gitkeep
,这个文件没有实际意义,这是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除
让某些文件或者文件夹被忽略管理:
在和.git
同级的位置,新建文件:.gitignore
,在这个文件中书写要忽略的内容:
直接写文件名,代表要忽略的是哪个文件
写文件夹路径,表示要忽略的是哪个文件夹
*.后缀,表示要忽略的是所有后缀为指定后缀的文件
远程仓库
上传到远程仓库:
在github上新建仓库
使用https上传:
添加上传地址:
git remote add origin https://github.com/weberWangjie/test.git // 其中的origin是变量名表示上传地址,可以自定义
开始上传:
git push -u origin master //其中的origin是表示地址的那个变量名
git push -u origin +master //上面报错用这段
首次推送远程需要输入用户名和密码。
第二次上传的时候只需要:git push
将远程代码拉取到本地:(要先新建一个文件夹作为git管理的文件夹)
git clone 远程仓库地址
将本地代码和远程代码同步(在本地仓库使用命令):
git pull
分支
一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。
每次初始化一个git的时候,默认创建一个主要分支:master
创建分支:
git branch 分支名
查看当前分支:
git branch
切换分支:
git checkout 分支名
创建并切换到这个分支:
git checkout -b 新分支名
合并分支(将别的分支内容合并到自己的分支):
git merge 要合并内容的分支
删除分支(不能自己删除自己,切换到别的分支删除当前分支):
git branch -D 要删除的分支
冲突
两个人同时操作同一个分支,提交的时候会有先后顺序,先提交的人正常提交了,后一个人提交的时候会产生冲突。因为git规定,每次提交必须是在原来的版本基础上,但是第二个人在提交的时候,在远程已经有了第二个版本,所以第二个人相当于从第一个版本向第三个版本提交。
冲突解决:
-
使用命令让本地和远程同步:
git pull
-
避开新的分支,然后进行分支合并
git fetch origin master:tmp //使用 fetch 获取远程最新信息并避开一个临时分支 git diff tmp //将当前分支和远程分支进行对比 git merge tmp //将临时分支合并到当前分支
1git init
2.git config user.name 【空格】"someone"
3.git config user.email 【空格】"someone@someplace.com"
4.git add *
5.git commit -m "some init msg"