一、SVN与git的区别
SVN是“集成式”管理方式,所有的“版本控制器”都在中央服务器上,每个开发人员的的计算机都要连接到中央服务器上才能进行合作开发。开发人员一般只能在公司才能进行开发(因为中央服务器在公司),局限性较大。
git是“分布式“管理方式,开放人员的每台计算机上都有一个“版本控制器”,每个开发人员把自己开发的模块的代码都上传到github上(充当一个远程仓库,类似与“中转站”的作用),其他人可以从github上下载相应的代码进行开发。git方式不需要中央服务器,开发人员可以做到“随时随地”的开发。(因为github是一个公用的平台,只要在有网的地方,就可以登陆去下载相应的代码版本)。
二、git工具的安装
1.打开github的网站 https://github.com/ ,登陆github(如果没有github账号的话,要先去注册一个,注意:邮箱和设置的用户名尽量是自己经常用的,而且用户名不要太复杂,因为在git命令里面会用到)。
2.创建一个”仓库(create repositories)“,给仓库起一个名字,比如”drag“(一般名字和自己项目的功能有关,尽量做到”见名知义“)。
3.可以”勾选上“ Readme,(也可以不勾选),这是对你创建的项目的一个简单介绍。
4.把自己创建的项目(比如上面的drag)从github上,下载到本地,以便在本地进行开发。通过以下的命令进行实现:
假如你想把你的项目放在E盘的myProjects文件夹下:
cd E: (按回车)
cd myProjects git clone url (按回车,这里的url是你在github上创建项目时,自动生成的一个网址,在github上可以找到。)
这个命令执行完毕后在myProjects文件夹下会有一个drag文件夹,一个readme文件(或许没有)
5.设置”贡献者“,贡献者就是指参与该项目开发的人(在开发工程中,如果你对代码进行了修改,别人能够查看你做了哪些修改),设置贡献者的git命令如下:
git config –global user.name “注册时起的用户名”
git config –global user.email “注册时的邮箱”
贡献者设置完成后,可以通过git config –global uer.name 命令查看设置的用户名,git config –global user.email 查看设置的邮箱。
三、git的主分支和三个区的介绍
1.主分支master:主分支一般是开发过程中”稳定“一个部分,为了防止在开发过程中出现意外把”主分支“破坏掉。一般会另开一个”分支“(非主分支,比如起名next),在next分支上进行开发,开发完成后,再合并到主分支master上。
2.git的三个区:工作区、暂存区、版本区。
工作区:drag文件夹下的所有文件
暂存区的左用:
(1).作为过渡层
(2).避免误操作
(3).保护工作区和版本区 (内容丢失后,可以从”暂存区“找回)
(4).分支处理 (比如:把正在进行开发的分支上的内容暂时放到”暂存区“,去修改其他分支上的bug)
版本区:主分支”master”
三个区之间的联系:一般是在”工作区“进行开发,然后提交到”暂存区“,再有”暂存区“提交到“版本区”
工作区——>暂存区———->版本去
四、git工具的常用命令
1.git status 查看“工作区”和“暂存区”的状态
2.git add filename 把文件从“工作区”添加到“暂存区” (工作区中还有该文件)
3.git add . 把工作区下的所有文件都添加到暂存区
4.git commit filename 把文件从“暂存区”提交到“版本区”
5.git commit 把暂存区中的所有文件都提交到“”版本区 会弹出一个记事本,让我们添加注释
6.git commit -m “自己写的一些注释” 我们直接添加注释,这样不会弹出一个记事本去添加注释
7.git reset HEAD filename 把文件从“暂存区”撤回到“工作区”
8.git commit -a -m “自己写的注释” 把文件从“工作区”直接提交到“版本区”(本质上没有跳过暂存区,-a其实就是添加到暂存区)
正常的流程是:工作区中的文件发生改变(git status命令可以查看)–>git add filename(填到暂存区)–>git commit filename(提交到版本区)–>git push origin master(把版本区中的文件同步到github上)–>刷新你的github账户就可以看到新添加的文件
五、对比命令(主要用来查看工作区、暂存区、版本区三个区之间的文件中的代码有什么不同之处)
1.git diff 查看工作区与暂存区文件之间的差异
2.git diff –cached(或者–staged) 查看“暂存区”与“版本区”文件之间的差异
3.git diff 分支名字 查看“工作区”与“版本区”文件之间的差异
六、撤销命令
1.git reset HEAD 文件名 将文件从“暂存区”撤回到“工作区”
2.git checkout – 文件名 将“工作区”的文件撤销回之前“版本区”的文件
3.git commit –amend 如果有“误提交”,想对提交重新操作(比如:有A,B两个文件,把A提交了,而B没有提交,我们想要的是A,B一起提交,此时就可以将B提交到暂存区,然后用git commit –amend),此时,A,B就能够一起提交了
七、git的删除命令
//工作区的文件可以随意的创建和删除(就像平常在电脑上创建和删除其他文件一样)
1.git rm 文件名 把暂存区的文件删除(前提是:工作区没有该文件,暂存区有该文件)
2.git rm -f 文件名 当“工作区”和”暂存区“都有某个文件时,此命令会把”工作区“和”暂存区“的该文件都删除
3.git rm –cached 文件名 当”工作区“和”暂存区“都有某个文件时,此命令会把”暂存区“的该文件删除,但是”工作区“的该文件不会被删除,仍然存在
八、文件恢复命令
1.git checkout id名 文件名 把”工作区“的某个文件删除后,用该命令可以恢复回来
2.git reset –hard id名 恢复整个版本的文件(文件也许有多个)
3.git reset –hard id名 HEAD^ 恢复到过去某一个版本的文件(可能有多个文件)
4.git reset –hard HEAD~数字 恢复到过去的某一个版本的文件(当数字为1的时,其实就是上面的HEAD^)
5.git reflog 执行上面的3或者4命令后,又想回到现在的版本,可以此命令调出文件的多个版本的id,然后从中找到现在版本的id,然后再调用git reset –hard id名 命令恢复到现在这个版本
十、将本地文件同步到github的”远程仓库“上
通过命令:git push 远程仓库名字 同步的分支名 将版本区中的文件同步到github的仓库中
可以通过git remote 命令查看远程仓库的名义,默认是 origin
可以通过 git remote -v 命令可以查看远程仓库的地址
十一、多人协作开发下,解决冲突
1.git fetch
git diff master origin/master 查看远程和本地的不同
git merge origin/master 发现不同后,手动合并
2.git pull (把远程仓库中的代码拿下来和本地的代码自动合并)
十二、git下的分支(有利于多人协作开发)
1.git branch 查看分支
2.git branch new1 创建了一个新的分支new1
3.git checkout new1 切换到new1分支下
4 简写:git checkout -b new2 创建并切换到new2分支下
5.分支的合并:
假如在new1分之下,有了新的修改(有了c5版本),如果想把master分支下的代码也变成c5版本,需要进行分支合并,方法如下:
1.切换到master分支下:git checkout master
2.用git merge new1 命令 这样,master和new1分支就合并了,此时,master分支的指针也指向了c5
6. git branch –merged 查看已经合并的分支
7.git branch –no-merged 查看没有合并的分支
8. 一般来说,new1分支与master分支合并后,new1分支就没用了,可以删除掉new1分支了
1.git branch -d new1 把合并后的new1分支删除掉(如果new1分支没有合并,用此命令是无法删除的)
2.git branch -D new2 强制把没有合并的分支删除
9.当不同分支下的代码进行合并时,有可能会发生冲突(如:master分支与new1分支下的代码合并)
假如当前在master分支下:
1.合并 git merge new1
2.有冲突提示,git status 能够看到有冲突的分支
3.把有冲突的文件手动修改,修改完成后重新提交,git commit -a -m “注释”
10.将git 上的分支同步到github上
git push 仓库名 分支名 比如: git push origin new1 把new1分支同步到github上
十三、github上的标签release,一般是指项目开发完成后,给项目标记的版本
1.git tag 查看标签
2.git tag v1.0 创建标签v1.0
3.git push origin(仓库名) v1.0(标签名) 将v1.0标签同步到github上
十四、git工具上的常用辅助命令
1. cd.. 返回上一级
2. ls 查看文件下的目录结构
3. mkdir hello 创建一个hello文件夹
4. tab键 自动补全git 命令
5. git config –global alias co checkout 给checkout起一个别名co,之后可以用co来代替checkout
6. enter 继续查看没有显示出来的日志记录(git log)
7. q键 退出日志查看界面
8. 工作区:数字是红色
9. 暂存区:数字是绿色
10. ~:代表有修改
11. !:代表有冲突