初识Git
git介绍
-
是什么:版本控制系统
-
优点:防止代码丢失,协助开发,可进行代码紧急还原,记录每一版本代码
git安装
- Mac:https://sourceforge.net/projects/git-osx-installer/
- Windows:https://git-for-windows.github.io/
- Linux:apt-get install git
git命令
-
先输入git,检查是否安装成功
-
本地git操作例子:
- mkdir test (创建文件夹test)
- cd test (切换到test目录)
- touch a.md (新建a.md文件)
- git init (初始化git仓库)
- git status
- git add a.md
- git status
- git commit -m ‘first commit’
- git log
总结:仓库库初始化–>提交代码到暂存区–>提交–>查看日志信息
-
查看分支,切换分支
-
git branch a (创建a分支)
-
git checkout a(切换到a分支才可以开发)
-
git branch(检查切换是否成功)
PS:一步到位新建a分支并且一步切换到这个分支的语法是:git checkout -b a
-
-
合并分支
- git checkout master(切换回master主分支)
- git merge a (把a分支的代码合并过来)
-
删除分支
- git branch -d a (删除分支)
- git branch -D a (强制删除)
-
建立版本标签
- git tag v1.0 (在当前代码状态下新建一个v1.0的标签)
- git checkout v1.0(切换到对应的版本)
github提交代码
SSH
- 是一种网络协议
- git服务器需要选择ssh公钥进行授权
ssh配置
-
ssh
-
ssh-keygen -t rsa(后面加三个回车键,不用密码,直接生成id_rsa是密钥,id_rsa.pub就是公钥
-
拷贝公钥信息–>github下
PS:这2个文件分别:Linux/Mac系统在~/.ssh下,win系统在 /c/Documents and settings/username/.ssh 下, 都是隐藏文件,
GitHub上添加SSH key
- 设置–>ssh and GPS keys—> New SSH key–>直接粘贴到key的文本框中
- 在命令行输入:ssh -T [email protected]
Push&Pull
- git push origin master(本地和远程同步)
- git pull origin master(远程代码拉下来,一般先拉后推,防止冲突)
**提交代码
总结:切换到对应的项目,连接,然后提交
- git clone [email protected]:stormzhang/test.git(把远程项目拉到本地,它以为仓库,可直接做修改,提交操作)
- git push origin master(提交回远程)
- 举例子(将test2项目内容提交到远程的test项目里):
- GitHub上建一个test项目
- 切换到test2项目下执行关联操作:git remote add origin [email protected]:stormzhang/test.git
- git remote -v(查看这个项目有哪些远程仓库)
- git push origin master(提交代码到远程仓库)
- 备注在提交仓库之前先执行如下操作:
- git config —global user.name “stormzhang”
- git config —global user.email “[email protected]”
git进阶
用户名和邮箱
- 前一节备注已说,不废话,想单独一个项目换了,那么你就直接省去global
alias和其他用法
- 改别名
- git config --global alias.co checkout
- git config --global alias.ci commit
- git config --global alias.st status
- git config --global alias.br branch
- git config --global alias.psm ‘push origin master’
- git config --global alias.plm ‘pull origin master’
- git config --global alias.lg “log --graph --pretty=format:’%Cred%h%Creset -%C(yellow)% d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit --date=relative”
- 其他配置
- git config --global core.editor “vim” # 设置Editor使用vim
- git config --global color.ui true(给git点颜色)
- git config --global core.quotepath false # 设置显示中文文件名
- 其他方法
- git config -l (查配置)
- ~/.gitconfig(配置文件)
- diff
- git diff(文件可以查看改动)
- 实际就是比较当前文件和暂存区的差别,或者是比较暂存区的和版本库的差别
- checkout(切换和撤回没到暂存区的文件)
- git checkout develop
- git checkout v1.0
- git checkout ffd9f2dd68f1eb21d36cee50dbdd504e95d9c8f7 # 后面的一长串是commit_id,是每次com mit的SHA1值,可以根据 git log 看到。
- git checkout a.md
- stash(暂时切到别的分支,修复完bug再切回来,而且代码也 能保留的)
- 前提没有commit
- git stash(先把当前没有commit代码暂存起来)
- git status(看到自己分支很干净)
- git stash list(新建了一条stash数据)
- 于是你就可以切换回原来的分支,修复bug,然后commit,然后回来原本的分路
- git stash apply(还原原来分路的状态)
- git stash drop(你就把暂存区的stash数据删除)【或者一部到位的方法:git stash pop而git stash clear是清空所有的stash]
- merge & rebase(合并分支模块到主分支上)
- git checkout master
- git merge featureA
解决冲突问题
- 查看本地分支列表
git branch - 查看远程分支列表
git branch -r - 删除本地分支
git branch -d develop
git branch -D develop (强制删除) - 删除远程分支
git push origin :develop - 如果远程分支有个develop,而本地没有,你想把远程的 develop分支迁到本地: git checkout develop origin/develop
- 同样的把远程分支迁到本地顺便切换到该分支:
git checkout -b develop origin/develop
团队协作图(Git Flow)
- GitHub 开源地址:https://github.com/nvie/gitflow
- http://stormzhang.com/git/2014/01/29/git-flow/
- 实际就是比master和develop 多了三个分支,具体是开发新功能分支,准备发布分支,修复主线问题分支
- 流程图:
- develop—>feature—>develop(开发新功能)
- develope–>release–>develpe–>master(准备发布分支)
- master->hotfix–>master(修复master紧急问题)
总结
- 先看了初识git
- Git 和github创建连接
- 重点关注提交代码例子,明确流程
- 学习git的用法,重点关注:stash,checkout,merge用法
- 明确实际的git flow流程用法