@(关键字)[版本控制|git]
说明
按照此教程进行学习,可能因为机器或个人原因,中间会出现一些问题,不妨先参考文章末尾的一些问题总结.
一、注册github
注册地址:使用邮箱在github注册;
二、下载git并安装
- 下载地址:
两个链接都是可以的,第二个只需要选择windows版本即可。<哪个访问速度快,用哪个就好
安装下载下来之后,直接点击
.exe
文件,选择自己想安装到的目录,安装时,其他选项只需要选择默认的就好。在安装完成之后,在桌面空白处,点击鼠标右键,即可看到git bash here
和git gui here
两个选项。配置(全部在git bash 中操作)点击右键,打开
git bash here
,之后输入以下命令:
$ git config --global user.name "Your github Name"
$ git config --global user.email "email@example.com"
注意:
git config
命令的--global
参数,使用这个参数,表示这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
4. 将bash客户端与github关联起来
可参考 github help,按照步骤就可以将你的客户端和github账号联系起来
最后别忘了Testing your SSH connection
三、使用git的工作流程
使用git的工作流程及相关命令如下,分两类:
新建的项目
- 在github上New一个Repository
git bash
窗口,输入命令:
git init \\初始化
注
:在输入上述命令之后,项目目录中会生成一个.git
的隐藏文件夹。
3.提交项目文件到github中的仓库,首先需要将文件添加到git中:
git add logback.xml //添加logback.xml文件
4.提交文件,并加入注释
git commit -m 'logback.xml file commit' //提交更新,并注释信息“logback.xml file commit”
5.连接远程github项目
//连接远程github项目,
git remote add origin git@github.com:sombie007/testGit.git
6.从远程获取最新的项目代码
git pull --rebase origin master
7.将本地项目更新到github上去
git push -u origin master //将本地项目更新到github项目上去
已存在的项目
- 克隆 Git 资源作为工作目录。
git clone git@github.com:facebookarchive/linkbench.git
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
四、基本操作命令
- git查看提交历史
git log #打印提交历史
git log --oneline ##查看历史记录的简洁的版本
git log --oneline --graph #查看历史中什么时候出现了分支、合并,开启拓扑图选项;
git reflog #查看命令历史
- git版本回退/撤销修改/删除文件
#HEAD表示当前版本,HEAD^表示上一版本
git reset --hard HEAD^ #回退到上一版本
git reset --hard 8237462 #回退到commit id为8237462的版本
git checkout -- file #撤销file文件中的修改内容<未提交到暂存区时使用>
git check HEAD file #暂存区的修改撤销掉
git rm file #删除file
- 分支管理
git branch #查看当前有哪些分支,当前使用的分支前面会有*号
git branch <name> #创建分支
git checkout <name> #切换分支
git checkout -b dev #创建dev分支,并切换到dev
git checkout master #切换到master分支
git merge dev #合并指定(dev)分支到当前分支
git branch -d dev #删除dev分支
git branch -D dev #强制删除dev分支```
4. 保存工作现场
git statsh #保存工作现场
git statsh list #查看保存的工作现场
git statsh apply #恢复工作现场
git statsh drop #删除工作现场
git statsh pop #返回工作现场,恢复的时候会同时删除statsh
5. 多人协作
git remote -v #查看远程库信息
git push origin branch-name #从本地推送分支,若推送失败,则使用git pull
命令抓取远程的最新提交
git checkout -b branch-name origin/brance-name #在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name #建立本地分支和远程分支的关联
6. 标签管理
git tag #查看所有标签
git tag v1.0 #打一个新的标签
git show <tagname> #查看标签信息
git tag -a <tagname> -m "tag info" #创建指定标签信息的标签
git tag -s <tagname> -m "tag info" #创建带有PGP签名的标签
git tag -d <tagname> #删除tag
git push origin :refs/tags/<tagname> #删除远程的tag,在删除远程之前,需要删除本地的tag
git push origin <tagname> #强标签推送到远程
git push origin --tags #一次性推送所有的标签
7. 远程仓库
git remote #查看当前远程仓库
git remote #查看远程仓库的实际链接地址
git fetch #从远程仓库下载新分支和数据
git pull #从远端仓库提取数据并尝试合并到当前分支
git push <alias> <branch> #将自己的branch分支推送到alias远程仓库删的branch分支下
git remote rm <alias> #删除远程仓库
>**`git fetch`**与**`git pull`**的区别
>`git fetch`仅仅是将分支和数据get到,但是并不会merge到你本地所在的分支,所以在执行完`git fetch`后需要执行`git merge 远程分支`才可以到你所在的分支。
>`git pull`就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支
##踩过的坑
>>**`错误 1`**:在提交代码时,出现以下错误
>```
>$ git push -u origin masterfatal: unable to access 'https://github.com/sombie007/testGit.git/': SSL certificate problem: self signed certificate```
>**原因及解决方案**:windows中出现这种问题,可以在bash中输入以下命令解决问题
>```
>git config --global http.sslVerify false
>```
>
>------
>>**`错误 2`**:在提交代码时候,出现以下错误
>```
>$ git push -u origin masterTo github.com:sombie007/SpringRain.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:sombie007/SpringRain.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changeshint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.>```
>**原因及解决方案**:执行以下命令:
>```
>git pull --rebase origin master>git push origin master
>```
>**参考于**[stackoverflow](http://stackoverflow.com/questions/24114676/git-error-failed-to-push-some-refs-to)
##反馈与建议
非常感谢您阅读这份帮助文档。点击分享按钮,分享给更多的人呗。
- 微博:[\[@SombieFF\]](http://weibo.com/3178494643/profile?topnav=1&wvr=6)
- 邮箱:<shexd1001@gmail.com>
- 微信:WeChatId:wxxdong2102
--------
![wechat.jpg](http://upload-images.jianshu.io/upload_images/3269064-ed314734718e273a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
---------