一、Git简介
1、Git 和 SVN 比较
2、Git 安装配置
安装
配置
- 安装好 git 后,配置用户和邮箱
- global代表对当前的用户有效,system代表对所有的用户有效,不写代表对当前的项目有效(在linux环境下)
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
要检查已有的配置信息: git config --list
直接查阅某个环境变量的设定:git config user.name
3、Git 工作流程(略)
4、Git 工作区–暂存区–版本库
- 工作区:电脑里的项目目录;
- 版本库:工作区有一个隐藏目录.git,是Git的版本库;
- 暂存区:英文叫stage, 或index,一般存放在(.git/index)中;
- 说明:git 中的 check 命令可能会导致暂存区和工作区的改变比较危险,谨慎使用;
二、基本使用
1、git init
git init
git init newrepo
2、git add
- 文件加入版本管理,支持单文件、多文件(之间用空格隔开)以及通配符批量 add
git add *.c
git add README
3、git commit
git add > git commit -m '第一次版本提交'
git commit -am '备注'
4、git clone
git clone <repo>
git clone <repo> <directory>
git clone git://github.com/schacon/grit.git
5、git status
- 用来查看在你上次提交之后是否有修改,加参数 -s 能够获得简短的输出,不加则输出的信息比较详细
6、git diff
git diff
git status
7、git reset HEAD
8、git rm
git rm <file>
git rm -f <file>
git rm --cached <file>
git rm –r *
9、git mv
git mv README README.md
三、分支管理
1、查看、创建、删除分支
git branch
git branch test
git branch -d test
2、切换分支
- 切换分支前一定记得提交,因为切换分支会清空暂存区,未提交的修改不会生效
git checkout master
git checkout -b test
3、合并分支
- 正常合并
git merge test
此命令是将test分支合并到当前分支 - 合并冲突
冲突产生:主分支创建一个分支之后,主分支和分支中的同一个文件都进行了修改,则可能出现冲突
解决方法:merge显示冲突之后,cat a.txt 查看两分支的不同之处,手动修改为相同之后,再 add commit 提交,即可完成合并
四、查看提交历史–标签
1、查看提交历史
git log 列出历史提交记录;
--oneline 选项来查看历史记录的简洁的版本;
--graph 选项查看历史中什么时候出现了分支、合并;
--reverse参数来逆向显示所有日志;
--author=Linus 指定查看某个作者的提交;
--since 和 --before, --until 和 --after 指定日期;
--no-merges 选项可以隐藏合并提交;
2、标签
- 达到一个重要阶段,并希望永远记住那个特别的提交快照,可以使用 git tag 给它打上标签
git tag -a <tagname> -m "runoob.com标签"
git tag
五、连接到GitHub
1、git 和 github 通过 SSH 连接
- 使用以下命令生成SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
- 然后在 github 网站:
account--settings--SSH and GPG keys
输入上个命令产生的用户目录 .ssh 目录下的 id_rsa.pub 文件中的全部内容 - 最后用如下命令进行连接测试:
ssh -T git@github.com
2、添加、查看、删除远程仓库
git remote add [shortname] [url] 添加远程仓库
git remote -v 查看当前的远程仓库
git remote rm origin2 删除远程仓库
3、提取和推送远程仓库
- 提取远程仓库的内容:
git fetch origin
- 若远程仓库有更新,使用命令以下命令进行合并:
git merge origin/master
- 推送到远程仓库:push 前先要 commit
git add runoob-test.txt
git commit -m "添加到远程"
git push origin master
4、其他注意事项
关于 checkout
git checkout a.txt
git checkout HEAD a.txt
关于 rm 和 git rm 命令的区别
- 普通的 rm 命令只作用于工作区;提交生效前先要通过 add 将修改放入暂存区;
- git rm 命令作用于工作区和暂存区;
关于 git log 和 git reflog
log
reflog
本地删除文件后且进行了提交,怎么恢复
git reflog
git reset --hard XXXX
关于 git pull
- 冲突解决:将本地的内容和远程的内容改成一致的,再 add 和 commit 一下即可;
git pull = git fetch + git merge
本地删除文件后怎么从 github 恢复
git fetch origin
git reset --hard origin/master
参考:http://www.runoob.com/git/git-tutorial.html