初识Git
首先这里我们还是一个讲一个有趣的人物:林纳斯·托瓦兹(百度百科)。此人正是创造Git的创始神。要不是他,可能现在我们就没有免费而超级好用的Git了。简单的来说一下:在《时代》周刊根据读者投票评选出的二十世纪100位最重要人物中,林纳斯居然排到了第15位,而从20世纪的最后几年就开始霸占全球首富称号的盖茨不过才是第17位。这样就能比较出这个人的重要性了吧。详细的就自己去了解了。下面就正式开始我们得学习之旅。
1.Git是分布式的控制系统,而传统的CVS及SVN都是集中式的控制系统,那么分布式与集中式的区别在哪?
简单来说集中式就是集中管理,比如你玩游戏,你要到固定的位置去接任务,然后做任务,最后到这个地方交任务。而分布式简单来说就是每个人都有自己的完整的管理,你们交换数据就是互相推送就行了,比如:百度云(我认为比较形象)。
集中式最大的缺点就是必须联网才能工作,而分布式就可以各自完成相关的任务,因此分布式版本控制系统的安全性要高很多,但在实际工作中也需要一个中央电脑来存贮项目,毕竟你不能保证,你的小伙伴一定在线,你们是否在一个局域网中,但这个服务器不是那布置任务或交任务的,但只作为一个交换场所。
2.安装教程(这里就不写了,毕竟网上一大堆。)
3.基本的操作:(记住一点,大多数的相关名字只有在工作室在有效,而这个工作室就是你创建版本库的目录,.git是其中的隐藏文件夹,不用管!)
(1.创建用户:git config --global user.name "###"
绑定邮箱:git config --global user.email "######"
(建议绑定邮箱,为什么?为了安全,为什么不设置密码?个人认为本git大多数都是自己在用,而每次每次登入,提交都要输密码,这个十分麻烦。)
(2.创建版本库:
先创建一个空文件,然后定位到这个文件中去,使用 ”git init“命令默认这个为版本库。(版本库简单来说就是你用git管理东西保存的地方)
git的初步管理:
先将项目放到版本库中,只要在版本库中就行(不管是不是在其子目录里),使用“git add 文件名”添加到git中,最后使用“git commit (-m “注释”)”来提交并查看放入的文件(括号里的可以加也可以不加,注释是什么,就不要解释吧!)。 commit可以一次提交很多文件,所以你可以多次add不同的文件。get add命令实际上就是把要提交的所有修改放到暂存区,然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。(注意:commit只负责把暂存区的修改提交了,也就是没有使用add提交到暂存区的不能提交)
(4.git的不同状态的查看:
要随时掌握工作区的状态,使用git status命令。(一般用于add 或 commit命令之后看有没有错误。)如果git status告诉你有文件被修改过,用git diff可以查看修改内容(diff要查看详细的修改内容,使用 git diff file,但只能在add命令之前)。
(5.git中版本的回返:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commint_id。(git reset --hard HEAD~2:回退几个版本;git reset --hard commit_id:回到具体哪个版本)穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本。(git log --pretty=oneline:是获得commit_id)要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
(6.git查看工作区和版本库里面最新版本的区别:git diff HEAD -- file
(7.撤销修改:
(1).git checkout -- file:可以丢弃工作区的修改,当然你提交到暂存区的不会受到影响。
(2).git reset HEAD file:可以把暂存区的修改撤销掉(unstage),重新回到工作区。但记住此时工作区的还没有撤销修改,所以回到(1)。
(3).commit提交之后,只有使用HEAD来回归到哪个版本。回到(2)。还没提交到中央服务器之前可以的,之后吗,呵呵!
(8.git删除:
(1).直接删除文件:rm file。彻底消失。
(2).从版本库中删除该文件:那就用命令git rm file删掉,并且git commit file。
(3).使用(2)删除,发现删错了,用git reset --hard HEAD~1(数字可以改,就是前面的归返),无论工作区是修改还是删除,都可以“一键还原。
Git工具中问题展示:
出现的问题为:fatal: Unable to create 'D:/gitcode/.git/index.lock': File exists
解决办法: 在.git同级目录,执行rm -f .git/index.lock (或者rm -f git/index.lock) 删除后可提交。成功!
我直接用方法三解决问题的,直接在git命令窗口中执行命令。