(1)什么是git
a、git是一个 "分布式" 的版本控制工具。
b、git的作者是Linux之父:Linus Benedict Torvalds,当初开发git仅仅是为了辅助Linux内核的开发(管理源代码) 。
c、git在国外已经很普及,在国内已经慢慢普及了。
(2)git与svn对比
a、结构:svn 是"集中式"的版本控制,git 是"分布式" 版本控制"集中式" 与 "分布式" 版本控制的区别
b、速度:多数情况下 git 的速度比 svn 快
c、分支:svn 的分支比较笨拙,git 可以轻松的建立无限个分支
d、旧版本的 svn 会在每个文件夹下建立一个.svn,git 只会有根目录下拥有一个.git
(3)git的本地配置与操作
a、初始化代码仓库
•仓库用来存放各个版本的文件信息
•建立一个空的文件夹,命名为 WeChat,假设用来存放微信项目的
•在终端切换到 WeChat目录下,输入 'git init'命令
•在终端输入'defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder'看到Weibo 下有个.git 的隐藏文件夹,这个文件非常重要,没了就没有版本控制了。
b、提交版本信息
•在 WeChat下添加一个 main.m 文件,终端输入 'touch main.m ' 即可,然后添加一行文字
•添加一个全局的用户名和邮箱,防止后面操作报错,在终端输入下面命令即可
•在终端输入下面命令,目的是将main.m文件,提交到版本库 git 中
git commit -m '第一次初始化项目’
•输入上面的命令后,会有如下图的红色提示,这是因为提交前要把.m 文件纳入版本控制(暂缓区)
(4)git的工作原理
•输入 'git add .' 把当前目录下的所有文件纳入版本控制,然后再输入上面的 git commit 命令,这个我们就看到版本提交成功了,如图
(5)查看文件状态
•在 main.m 文件中再添加一行文字
•输入 'git status',我们会看到一个红色的文件,这代表这个文件是被修改过的
•修改过的文件要提交前,也要把修改的文件纳入版本控制后才可以使用commit 命令
•配置用户名,在终端输入以下命令
git config "user.name" zhangsan 用于查看谁修改了文件•配置邮箱
git config "user.email" zhangsan@itcast.cn 用于多人开发,邮件通知•查看当前的配置
cat .git/config
•再次修改文件提交后,显示修改的用户将是当前配置的,开头我们创建的用户名和邮箱对所有git下的项目都有效
(7)给config,status,commit命令配置别名
•git config alias.cfg config 给 cinfig 取别名
•git config alias.st status 给 status 取别名
•git config alias.ct "commit -m" 给"commit -m”取别名
•git log//默认日志
• git log --pretty=oneline //显示一行日志
•git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" //最漂亮的日志
(9)版本回退
•恢复前一个版本 git reset --hard HEAD^
•恢复前两个版本 git reset --hard HEAD^^
•恢复前 N 版本 git reset --hard HEAD~N //N 是数字
•恢复指定版本(git lg) git reset --hard 版本号
(10)创建分支
a、 查看所有分支 git branch
b、 从当前版本创建分支 git branch v1 //branch 后面不带参数,代表查看所有分支
c、 切换分支 git checkout v1
d、 合并分支 git merge v1
合并过程中有冲突,要手动解决
e、 删除分支 git branch -d v1
•git rm 文件名 //删除某个文件
总结,不管是添加、修改、删除文件,都要选把文件纳入到版本控制中后,才可以提交,最为安全