Step 1.Git 是什么?
Git是目前世界上最先进的分布式版本控制系统。
版本控制系统是任何能让你了解到一个文件的历史,以及它的发展过程的系统。
Step 2.集中式vs分布式
-
集中式
集中式版本控制系统,版本库是集中存放在中央服务器的,工作时用的都是自己的电脑,所以要先从中央服务器获取最新版本,然后开始工作,工作完了,再把自己的版本推送到服务器。**
集中式版本控制系统最大的问题就是必须联网才能工作
如果集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
分布式
分布式版本控制系统,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
在协作中,如果你自己在电脑上修改了文件A,你的同事也在电脑上修改了文件A,这时你俩之间只需要把自己的修改推送给对方,就可以看到对方的修改了。
分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。
Step 3.工作区和暂存区
第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。-
情景一:如果修改程式后还没有执行
git add
将代码加入暂存区撤销的方法:1、用 git status 查看状态
2、执行
git checkout -- app/controllers/admin/products_controller.rb
意思是把app/controllers/admin/products_controller.rb文件修改全部撤销。 -
情景二:如果**修改程式后还
git add
到暂存区了撤销的方法:1、用
git status
查看一下状态2、执行
git reset HEAD <目录名>
可以把暂存区的修改撤销掉(unstage),重新放回工作区3、执行
**git checkout -- ******<目录名>
****撤销修改。
Step 4.版本回退
-
执行
git log
命令查看提交日志如果嫌输出信息太多,可以加上
git log
--pretty=oneline``参数你看到的一大串类似
1094adb...
的是commit id
(版本号)
回退版本
**git reset --hard HEAD~100
回到第几个版本就输入几-
如果想前进到某个版本号需要找到该版本的
commit id
号,版本号写前6位就可以。如果找不到版本号怎么办,可以输入
git reflog
查看你输入的每一次命令。执行
git reset --hard 1094a0
可以看到该版本又回来了
Step 5.删除文件
-
在Git中,删除一个文件的方法
第一种直接在文件管理器中删除
第二种执行
rm <文件目录名>
,确定从版本库中删除文件,那就执行git rm
删掉,并且git commit
如果误删了文件可以执行
git checkout -- 文件名
还原。命令
git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
Step6.常用指令
新建/删除
git init
初始化一个git项目git add
将新建的文件添加到暂存区git commit -m
将暂存区文件提交到git仓库git checkout -b
创建并切换到分支git checkout
切换分支git branch
查看所有分支git merge
合并指定分支到当前分支git branch -D
删除分支git branch -r
查看远程分支git branch -a
列出所有本地分支和远程分支git checkout -
切换到上一个分支
查看信息
git status
可以用来查看每一步操作后文件的状态git log
查看每次提交的内容git log --stat
显示commit历史,以及每次commit发生变更的文件git diff
工作区(work dict)和暂存区(stage)的比较git reflog
查看每一次执行的命令
版本回退与前进
git reset --hard HEAD~1
回退到上一个版本git reset --hard commit_id
前进到某个版本
撤销
git checkout -- 文件名
将****文件修改全部撤销(前提是没有将文件加到暂存区)git reset HEAD <目录名>
可以把暂存区的修改撤销掉git stash
git stash pop
暂时将未提交的变化移除,稍后再移入