Git&GitHub

Git是一个很有用的东西,虽然我现在还没有真正的体会到Git的便捷之处,但是一定要尽最大努力将这个武器学好,感谢廖雪峰的教程,这是我的笔记不适合学习建议看廖老师的教程。廖雪峰Git教程.

  • 本人学习环境windows7,需要安装个软件来支持Git,还有一个软件是编辑文档的,这块附上链接方便需要的人。软件下载,提取码j8ck。

git安装

下载好软件后,按提示进行安装。在程序里面看到Git Bash表示安装成功。
安装好后使用git config 命令再设置一下账号以及密码即可,如下:

$ git config --global user.name "your name"
$ git config --global user.email "your email address"

本地仓库使用

创建本地仓库

mkdir learngit  //在当前路径下创建learngit文件夹
cd learngit     //进入learngit文件夹,pwd查看当前路径
git init //将文件夹初始化为git仓库

git仓库概念

  • 工作区与暂存区
    在创建git仓库的时候就创建了唯一的一个分支master
    这里写图片描述

添加文件至暂存区及本地合并分支

git add file //是将文件提交到暂存区stage,git add . 是提交所有修改
git commit -m //是将文件更改提交到master分支上
  • 其它相关命令
git status//列出仓库的状态
git diff  //查看文件更改

版本退回

cat  learngit.txt //用来显示文件内容
git log //打印出提交的历史
git reflog //打印所有版本,包括已经退回的所有版本。方便退回了又后悔了的人。。。
  • 版本退回方法
    git reset --hard "commit id"

  • commit id 还可是

HEAD^  //上一个版本
HEAD^^ //上上个版本
HEAD~x //上x个版本
git checkout filename //撤销未添加到暂存区的文件
git rm file //删除版本库里面的文件

git分支

分支创建删除

  • 创建分支
git checkout -b dev //创建并切换到了dev指针
//下面两行代码等同上面的
git branch dev //创建dev指针
git checkout dev //切换到dev指针
git branch //查看当前仓库所有分支
  • 删除分支
git branch -d dev //删除dev分支
git branch -D dev //强行删除dev分支
  • 修改历史查看
git log --graph
//打印出漂亮简洁的历史
git log --graph --pretty=oneline -abbrev-commit

分支合并与冲突

分支合并
git merge  dev  //合并dev分支到当前分支
  • 冲突产生
    如下图,两个分支都进行了修改,就不能进行快速合并.根本原因是合并分支的时候与创建分支的时候master的内容不一致了。
    这里写图片描述
冲突解决
//此时通过cat filename可查看冲突所在
cat fileName
//按提示进行修改并提交到分就可以合并了
  • 如果出现fatal: refusing to merge unrelated histories(禁止没有同源祖先的文件合并)
git pull origin branchname --allow-unrelated-histories

禁用Fast forward

遗留问题,还没有搞清楚这和快速合并的区别

Bug分支

  • 使用情景
    其他分支又需要紧急修改,当前分支不能直接退出,因为要添加提交到仓库才能切换分支,这时就需要将当前分支先储藏后再退出,处理完紧急任务后在取出继续。
git stash //储藏当前状态。可多次使用。
git stash list //列出储藏过的状态
git stash pop //恢复储藏并将储藏删除


git stash apply//恢复但不删除stash
git stash drop //和上面配合将储藏删除 

git stash apply stash@{}//选择储藏进行恢复
git stash //储藏当前分支

远程仓库使用(GitHub)

远程仓库环境配置

将仓库推送到远端(GitHub)

//路径为本地仓库
git remote add origin https://github.com/icanactnow/icanactnow.git
git push -u origin master
//第一次提交使用
git push -u origin master
//以后提交就简化-u
git push origin master
//瞬间就会发现CitHub上面的与本地的就一模一样。
git remote rm origin //删除仓库的远程仓库

克隆GitHub仓库到本地仓库

git clone git@github.com:icanctnow/gitskills
//或者下面也可以
git clone http://github.com:icanactnow/gitskills

//icanactnow 是我的Github账号gitskills是github上的仓库名
//git的分支管理就像薛定谔的猫一样,只不过git分支可以合并,量子力学里面的猫却永远处于平行的世界不会合并。

放弃本地修改

git checkout .  //放弃本地所有未提交的修改

删除远程文件

git rm -r file  //在本地删除文件
git commit -a -m "提示" //提交修改
git push//将修改推送到远端

Git多人协作

git remote -v //查看远程库详细信息

推送分支

git push origin branch-name

抓取分支

  • 首先要将SSH KEY 添加到Github上
git clone git@github.com:icanacatnow/name.git
//将远程仓库克隆到本地,只有可以进行自己的修改。

多人提交冲突

  • 当多人都对某一分支进行更改时会出现提交冲突
git pull //将远程分支抓取选来进行本地冲突解决。
git branch --set-upstream dev origin/dev //将本地dev分支与远程dev分支进行关联,再次进行git pull

标签管理

git tag <name> id //不谢id默认为最新
git tag -a <name> -m "spec" //带注释标签
git tag //常看标签
git show <tagName> //查看具体标签
git tag -d <tagName> //删除标签
git push origin <tagName> //推送标签到远程
git push origin --tags //推送所有标签到远程
git push origin :refs/tags/<tagName> //删除远程标签

创建push request总结

参考资料

对push request的理解

用于团队合作,当别人从你的仓库fork你的项目到自己的仓库中后,就可以进行自己的修改与合并,但是fork后只会有分支,不会有master分支。所以修改完后如果想要合并到主分支就要pull request

贡献者创建pull request

  1. 将别人的项目fork到自己的仓库
  2. 通过分支进行修改合并提交
  3. 在github上点击pull request 按键创建pull request
  4. 然后就完了,剩下的就看项目发起人愿不愿意将你的代码进行合并了。

自己创建pull request(用于练习)

  1. 在分支进行修改合并提交
  2. github上切换到分支,创建pull request
  3. 在切换到主分支就可以看到有一个要求合并的请求。
posted @ 2017-10-15 23:42  icanactnow  阅读(149)  评论(0编辑  收藏  举报