Git&GitHub

来源:互联网 发布:直播混音软件 编辑:程序博客网 时间:2024/05/22 07:46

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 //是将文件提交到暂存区stagegit 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//恢复但不删除stashgit stash drop //和上面配合将储藏删除 git stash apply stash@{}//选择储藏进行恢复
git stash //储藏当前分支

远程仓库使用(GitHub)

远程仓库环境配置

  • 参考廖雪峰GitHub。

将仓库推送到远端(GitHub)

//路径为本地仓库git remote add origin https://github.com/icanactnow/icanactnow.gitgit push -u origin master//第一次提交使用git push -u origin master//以后提交就简化-ugit 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 rm 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. 在切换到主分支就可以看到有一个要求合并的请求。
0 0