Git基础
创建项目仓库
New repository
点击开始创建新的仓库
repository name
仓库名称
Description
仓库说明
public/private
仓库是否公开
ps:私有项目每月7美元.
Initialize this repository with a README
自动初始化readme文件
勾选这个,会自动初始化项目仓库,并设置readme文件,可以直接clone项目仓库。
如果想添加本地Git项目,不需要勾选,手动Push.
add .gitignore/license
git屏蔽文件和许可协议
README
github所有文件都支持markdown格式.
实际操作
git init 初始化项目
在当前路径生成.git文件,是该项目的工作树,对项目仓库的所有操作都保存在工作树里.
git statue 查看仓库的状态
每当工作树和仓库被操作的过程中,状态都会发生变化。
已经发生修改的文件会显示在untracked files里。
git add 把文件添加到暂存区
暂存区是提交之前的一个临时区域。
git add -文件名
提交到暂存区,或git add -A
提交所有git commit -m "描述"
把暂存区的文件实际保存到仓库的历史纪录里
ps:也可以用
git commit -am "描述"
来合并前两个操作git log 查看提交日志(只查看以当前为终点的日志)
gt log --graph
可以以图形表的形式查看日志git reflog
查看当前仓库的所有提交日志(包括回退版本前的)
git diff 查看更改前后的差别
分支
git branch 显示本地所有分支
git branch -a
查看包括远程仓库的所有分支master 表示当前只有一个分支,并且正在master分支下开发
remote/origin/HEAD
remote/origin/gh-pages
ps: remote/表示远程仓库的分支
git checkout -b 创建并切换到分支
以当前分支去创建,并切换到新分支
git checkout -b newBranch
切换分支
git checkout newBranch
分支一般分为
主干分支(master)
,和特性分支
.git merge 合并分支
假设需要把newBrach分支合并到master分支上:
git merge --no-ff newBranch
然后输入合并信息git reset 回退历史版本
用
git log
查看历史修改记录的哈希值然后:
git reset --hard 哈希值
消除冲突
当提交,回退,合并操作时发生代码冲突,会提示冲突的文件名,删除冲突的1项代码后,执行:
git add和git commit
git rebase -i 压缩历史
删除分支
- 删除本地分支
git branch -D newBranch
- 删除远程分支
git push origin :newBranch
远程仓库
git remote add 添加本地的远程仓库
git remote add origin git@github.com:youGitHubName/youGitHubProject.git
设置当前的项目的远程仓库地址,名称为origin
git push 推送至远程仓库
git push -u 当前项目的远程仓库名称 以当前分支git push -u origin master
or
git push -u origin newBranch
git clone 获取远程仓库
- 获取主分支(clone下来的项目默认是在master分支下):
git clone git@github.com:youGitHubName/youGitHubProject.git
- 获取其他分支:
假设clone下来的项目存在分支newBranch,
git branch
可以看到分支信息里有newBranch执行下面来创建一个分支newBranch指向当前项目的newBranch工作树,会自动获取分支数据来源
git checkout -b newBranch origin/newBranch
git pull 获取最新的仓库分支
git pull
git pull origin master
git pull origin newBranch
GitHub
发送pull request
打开github上需要pull request的项目主页。
点击fork github会把项目拷贝到当前账户的项目仓库里。
把当前账户项目仓库里的这个项目clone到本地来。
git clone git@github.com:仓库所有人名称/仓库名称
cd 仓库名称
在本地创建并切换到特性分支work(分支功能名称,方便识别pull request)
先
git branch -a
查看clone出的仓库的分支remote/表示远程分支
修改代码
对项目进行了修改之后:
git commit -am "work changes"
push并创建远程分支work
git push origin work
git branch -a
可以查看远程仓库 remote/origin/work 已经被创建打开github的用户项目仓库。切换到刚刚push的work分支.
点击clone按钮下面的compare查看分支间的差别。
确认完毕后,点击create pull request,填写pull的理由后,点击send pull request.
Pl成功。
其他
可以在开发过程中就pull request 在标题前注明“WIP”表示正在开发中。
如果不想每次修改都让大家fork,可以为每一个开发人员赋予权限,可以直接创建自己的分支
因为开发的代码是fork来的,不能保证用户仓库的代码是该源项目仓库的最新版本。所以需要给本地仓库设置原仓库地址:
先clone下在githubfork来的用户仓库
git clone git@github.com:用户名/test
然后给本地项目设置远程仓库为源仓库(假设这个项目是baishiup/test)
git remote add yuancku git://github.com/baishiup/test.git
获取远程仓库最新代码与自己的仓库代码合并
git fetch yuancku
接收pull request
团队开发
分支master必须一直保持在可部署状态。必须保证这个状态!
有新的需求或者修改,可以从master创建新的分支,新分支要具有项目-分支描述性
在新分支下完成需求或修改,在本地分支提交。
在github端创建同名分支,push。
如果需要团队帮助或反馈时创建pull request,以pull request进行交流。
与master合并
nm