GIt及Github操作
今天Github宣布个人私有库免费无限量使用,虽然私有库的合作者限制在了3人
下面分享一些git及github的操作命令的总结
-
git特点
* 分布式
* 版本控制-
git init 初始化git仓库
- .git为隐藏目录,这是版本库
-
查看
- git log 查看版本记录
- git reflog 查看历史操作记录
- cat 文件 查看文件内容
- git status 查看工作树的状态
- git log --graph --pretty=oneline 分成一行查看提交记录
-
回到某一版本
- get reset --hard HEAD^ 回到当前版本的前一个版本
- get reset --hard HEAD~n 回到当前版本的前n个版本
- get reset --hard 版本编号(前7位)
-
工作区(Working Directory) 暂存区index/stage 版本库(Repository)
- git add 把文件修改添加到暂存区
- git commit 把暂存区的所有内容提交到当前分支
- git checkout – 文件 丢弃工作区的改动
- git reset HEAD 文件 把暂存区的修改撤销掉,重新放回工作区
-
对比文件的不同
- git diff HEAD – 文件1 对比文件1工作区中和HEAD版本中的不同
//其中 -代表HEAD中文件的内容 +代表工作区中文件的内容 - git diff HEAD HEAD^ – 文件1 对比文件1的HEAD和前一版本的不同
- git diff HEAD – 文件1 对比文件1工作区中和HEAD版本中的不同
-
删除文件
-
rm 文件1
- 继续删除:git rm 文件1,git commit
- 撤销删除:git checkout --文件1
-
-
分支
-
git branch 查看分支
-
git branch dev 创建分支
-
git checkout master 切换分支
-
git checkout -b newDev 创建并切换分支
-
git merge dev 合并分支(先切换到master,然后merge 其它分支)
- Fast-forward快进模式,直接把master指向dev的当前提交,所以合并速度非常快
-
git branch -d dev 删除分支
-
-
解决冲突
-
1.master和dev在同一文件下各有修改,合并时,用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
-
2.master和dev在不同文件下各有修改,合并时,不能进行快速合并, 所以git提示输入合并说明信息,输入之后合并内容之后git会自动创建一次新的提交
-
强制禁用fast forward模式,git就会在merge时生成一个新的commitgit merge --no-ff -m “”
**如果有冲突-先沟通-没问题,删除掉产生的无用行.重新编译,编译没有问题,提交代码 * BUG分支-暂存代码 -
每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
-
git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
-
git stash list 查看工作区现场
-
git stash pop 恢复工作区现场
-
git stash clear 清空git栈场景:
-
1.在dev上开发,反馈的bug要马上处理
-
2.git stash
-
3.切换到master,创建bug001分支
-
4.修复bug并提交
-
5.切换到master,合并分支,最后删除bug001分支.
-
6.切换回dev分支,git stash pop恢复现场
-
-
使用github
- git clone git地址
- 创建分支
- 提交文件
- git push origin 分支名称 //推送分支
- git branch --set-upstream-to=origin/远程分支名称 本地分支名称//将本地分支跟踪服务器分支
- git pull origin 分支名称 //从远程分支上拉取代码
-
开发过程
- 在自己的电脑上,生成ssh公钥,然后把公钥给项目经理,项目经理把它添加的服务器上面。
- 项目经理会给每个组员的项目代码的地址,组员把代码下载到自己的电脑上。
- 创建本地的分支dev,在dev分支中进行每天的开发。
- 每一个员工开发完自己的代码之后,都需要将代码发布远程的dev分支上。
git merge 每天上班前:保证代码为主分支最新代码
git push 每天下班前:上传到主分支
正常开发每日流程:git clonegit checkout dev
切换分支写完代码后git pull master
git checkout dev
git merge master
编译没有问题
git push origin dev -