git篇
git是一个开源的分布式版本控制系统,可用于高效的管理大小项目
svn是一种集中式的版本控制系统
分布式:每个节点关系平等,到保存完整的代码,节点之间相互推送或下载代码,工作方式多样
集中式:有明确的中央服务器统一管理代码,每个节点将代码上传中亚服务器或者从中央服务器下载。逻辑简单,方便权限管理。
git的基本配置:
配置级别:
-
系统中所有的用户均使用的配置 (系统级的配置)
命令 : git config --system -
当前用户的所有项目均使用的配置(用户级的配置)
命令: git config --global -
只在当前项目中使用的配置
命令: git config (命令要在git项目文件夹中执行)e.g. 配置编译器
git config core.editor vscode -
查看当前配置
git config --list
git的基本操作命令
命令 | 说明 |
---|---|
git init | 初始化一个仓库(工作区,暂存区,本地仓库) |
git status | 查看工作分支状态(查看工作区和本地仓库是否同步) |
git add [file] | 将文件或目录提交到暂存区,多了文件用空格隔开,*表示当前目录下所有 |
git rm --cached [file] | 删除暂存区的文件记录 |
git commit -m “message” | 将暂存区文件同步到本地仓库 |
git log | 查看提交日志 |
工作区操作 | |
git diff [file] | 查看工作区文件和本地仓库的差异 |
git checkout – [file] | 放弃工作区文件修改 |
git checkout [file] | 将本地仓库的文件恢复到工作区 |
git rm [file] | 删除工作区文件并提交到暂存记录 |
git mv file dir | 移动工作区文件并提交到暂存记录 |
版本控制命令 | |
git reset --hard HEAD^ | 回到上一个版本,^ 个数表示回到之前几个版本 |
git reset --hard commit_id | 通过commit_id回到指定的版本 |
git reflog | 查看操作日志(可以查看conmit_id号) |
git tag v1.0 -m “message” | 创建标签 |
git tag | 查看所有标签 |
git show v1.0 | 查看某个标签的具体信息 |
git tag -d v2.0 | 删除标签 |
git reset --hard v1.0 | 回到某个标签的版本 |
保存临时工作区 | |
git stash | 创建临时工作区,将工作区修改内容暂时封存,恢复到最近一个“干净”状态 |
git stash list | 查看保存的工作区 |
git stash apply stash@{1} | 应用某个临时工作区 |
git stash drop stash@{0} | 删除某一个临时工作区 |
git stash clear | 删除所有临时工作区 |
分支管理 | |
git branch [branch_name] | 创建分支 |
git branch | 查看当前分支 |
git branch --list | 查看所有的分支 |
git checkout [branch] | 切换工作分支 |
git checkout -b [branch_name] | 创建并切换到新的分支 |
git merge [branch] | 合并分支 |
git branch -d [branch] | 删除分支 |
git branch -D [branch] | 强制删除未合并分支 |
*当工作区和本地仓库内容一致是git status提示工作区干净
*rm mv 的用法和shell命令rm mv相同,操作后直接commit同步到本地仓库
远程仓库
远程仓库:在远程主机上的仓库。git时分布式的,每一台主机上的git结构基本相同,只是把其他主机上的git仓库叫做远程仓库
#创建本地远程共享仓库
流程:
1.创建共享仓库 :
1. 创建目录
mkdir gitrepo
2. 设置仓库文件夹的属主
chown tarena:tarena gitrepo
3. 创建共享仓库
git init --bare project.git
4. 设置git项目文件夹属主
chown -R tarena:tarena project.git
2.添加远程仓库
git remote add origin tarena@127.0.0.1:/home/tarena/gitrepo/project.git
3.向远程主机推送分支
git push -u origin master #第一次推送需要指定远程主机的哪个分支
#如何从远程主机获取项目
1.创建目录,假定aid
git clone tarena@127.0.0.1:/home/tarena/gitrepo/project.git
获取后就建立了aid主分支和远程主机主分支的关联,下次拉取就直接使用
git pull/fetch
** git fetch 获取远程分支到本地,但是暂时不合并