Git管理远程仓库------使用远程仓库的目的:备份,实现代码的集中化管理,代码共享。
Git的优势在哪里?
>> 分布式,分支管理
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
Git应用软件
>> Github、Git-lab、"码云"、Git-bash、TortoiseGit(建议先熟悉了命令)
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事请假了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
Git工作区域
(1)工作区(Working Directory):添加、编辑、修改文件等动作
(2)Git仓库(Git Repository):最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见
(3)暂存区:暂存已经修改的文件最后统一提交到git仓库中
初始化一个新的Git仓库
1.创建文件夹---mkdir demo1
2.在文件夹内初始化Git(创建Git仓库)
cd demo1
git init
向仓库中添加文件
touch a1.php---新建文件
git status-----查看状态
git add a1.php-----添加到暂存区
git status
git commit -m 'add a1.php'-----提交文件到本地仓库
git status
修改文件
vi.a1.php,按i进入编辑模式,按Esc进入底行模式,输入:wq/q!退出
cat a1.php----查看文件
删除仓库文件
1、rm -rf a1.php
2、git rm a1.php
3、git commit -m '第一次通过git删除仓库文件 '
将本地仓库的代码同步到Git远程仓库中
git push
克隆操作(将远程仓库代码复制到本地仓库)
git clone 仓库地址
提交修改
SVN: checkout&update >> commit(提交修改到服务器)
GIT:
clone&pull >> add >> commit >> pull
工作区 >> 暂存区>>提交修改到版本库>>将修改提交到服务器
版本回退
git log
git reset --hard (commitID)
HEAD、HEAD^、HEAD^^
分支管理
查看当前分支:git branch
切换分支: git checkout XXX
创建并切换分支:git checkout -b XXX
合并某分支到当前分支:git merge XXX
解决冲突(应该在本地完成冲突处理)
------------ Git管理规范(应该在本地完成冲突处理) ------------------
1.作为普通开发人员,得到开发任务时,务必要同步远程仓库(通常拉取指定的开发分支dev),拉取最新代码。
git clone #只有第一次获取代码需先clone
git pull
2.得到远程最新代码后,在本地创建自己的分支。
git checkout -b mydev #在mydev上可以随意的commit
3.在自己的本地分支mydev中进行自己的开发。
4.在自己的本地分支mydev中完成开发后,提交本地的开发内容到本地仓库,此时切勿push到远端仓库。
git add .
git commit -m "注释"
5.切换到dev分支,此时应该再次pull远端仓库进行同步,因为团队其他人员可能向远端提供了新代码。
git pull
6.然后在本地将mydev合并到dev
git merge --no-ff -m "XXX" mydev
7.如果没人修改代码,此步骤正常;如果远端有人修改,此时会产生冲突,此时务必解决冲突再提交。
git add .
git commit -m "注释" # 这里的注释必须写
git push
git status -----查看状态,当前属于自己的开发分支dev
git add . -----添加到暂存区
git commit -m "新增功能" -----提交到本地仓库
git checkout master -----切换到master分支
git pull -----pull远程仓库进行同步
git merge --no-f -m "新增功能" dev -----合并dev分支到master分支
git push ----将本地代码同步到git远程仓库
git checkout dev ------在自己的本地分支dev中进行自己的开发