目录
2,本地建一个名为project的项目,为了方便管理仓库的名称跟项目名称保持一致
3,git commit遇到的问题:The file will have its original line
1,push时发生 remote:HTTP Basic: Access denied
一,准备工作
俗话说巧妇难为无米之炊,前期准备如下
1,在github上创建一个名为project的仓库
2,本地建一个名为project的项目,为了方便管理仓库的名称跟项目名称保持一致
3,本地下载安装 git客户端 下载链接
一点到底,安装成功的提示
二,GIT是什么,跟SVN的区别
1,GIT是什么
GIT是一个开源的分布式版本控制系统,可有有效,告诉的处理从新校到非常大的项目版本管理; GIT每台电脑都有一个版本库,可以在本地做版本管理;速度快,远大于大部分版本管理系统,比如说svn(git每个项目下又一个.git版本控制,svn是每个目录下); 强大的分支管理功能能,活跃的开源社区GITHUB。前几天不是还把2月2日之前的代码放北极了么。
2,GIT与SVN的区别
1)GIT是分布式SVN不是
2)GIT与SVN版本机制不同
3)GIT不需要联网
4)GIT内容完整性优于SVN
svn是集中式管理,服务器需要很未定,做集群成本又高
三,GIT本地
1,GIT本地提交命令
git init 初始化一个本地仓库,在统计目录下回出现一个隐藏的.git文件
git config -l 查看配置
git config xxx 配置属性(user.name 和 user.email)
//三级文件配置,优先级 1>2>3
1,项目仓库下/.git/config
2,当前用户目录下/.gitconfig
3,git安装目录/etc/gitconfig
//本地提交
git add .
git add -A 提交到索引(-A代表全部)
git commit -m ‘版本描述’ 提交到文件库
git commit -am‘版本描述’ 一部完成提交
.跟-A的区别 .把新增修改的文件都加入缓存库。-A 新增修改删除的文件
2,GIT本地提交图例
3,git commit遇到的问题:The file will have its original line
系统换行符不同导致,git是linux规范。也就是说文件在存储的时候,会有一些转换,一旦文件中有一些\r\n符号的话,它都会帮你换成\n。
四, GIT远程
1,https,需要在弹出窗口输入密码
git remote add project https://github.com/xinlingjushi/project.git 建立远程链接
git remote 查看远程链接
git remote -v 查看远程链接详情
git remote rm 远程仓库别名 移除远程仓库
git push -u project master 把代码推送到远程主机
git clone 'https://github.com/xinlingjushi/project.git' 'project' 克隆代码
git push -u project master 推送本地修改至远程git文档库
git fetch project master 将远程主机的最新内容拉到本地,不进行合并
git pull project master 将远程主机最新内容拉下来后直接合并
我是因为删除了代码,再次进行提交造成的原因。合并后再次提交,问题解决。
出错:
! [rejected] master -> master (fetch first) error: failed to push some refs to ' 。。。'
出现这个问题是因为github中的README.md文件不在本地代码目录中,可以通过如下命令进行代码合并
git pull --rebase origin master
2,ssh 需要在github配置公钥
1)生成公钥密钥
ssh-keygen -t rsa -C 791337069@qq.com 公钥和私钥
2)在github配置公钥
3)用SHH提交代码
具体操作 这里可以发现第一次提交,没有任何修改,版本是最新的会有提示。第二次提交我是只改了文件内容,没有把修改的内容提交到本地库,随即进行了本地提交,再次操作,执行成功。
五 ,其他命令
Git 完整命令手册地址:http://git-scm.com/docs
//分支 分支意味着你可以从开发主线(master)上分离开,在不影响主线的同时继续工作。
//创建分支
git branch 列出当前开发所有分支(默认会有master)
git branch a 创建一个a的分支(最新提交点)
git branch a 提交点 创建一个a的分支(指定提交点 提交点:可用ID或者标签)
git branch -D a 删除a分支
git checkout a 切换至a分支
git checkout master 切换至master分支(合并需要在master进行)
git merge a 合并分支a和主干master,合并后的提交点属于主干master
//HEAD HEAD 节点代表最新commit
git show HEAD 显示信息
//回退
git reset 选项 提交点 (选项:--hard 表示全恢复,提交点:可用ID或者标签)
git reset --hard 32822da (或者 one)
git reflog 查看所有提交点
//合并分支的起始点(不推荐)
git checkout master
git rebase a 合并分支a和主干master,合并后的提交点属于主干master
//日志
git log
git log --one1
图例
六 , 规范团队管理GIT
七 , 遇上的问题
1,push时发生 remote:HTTP Basic: Access denied
1)原因:
密码账号不匹配。
2)解决办法:
输入以下命令,并重新push,会让你重新输入账号密码即可解决。
git config --system --unset credential.helper
3)图例:
输入窗口就不截图了,再次$ git push -u 203_ep_http master 后会出现。
2,冲突的解决办法
1)原因
改代码时,没有先跟远程同步。我们都改了同一个文件,但他先提交,经过评估,选择解决方案是我覆盖他的代码。
2)报错
3)解决
3,远程覆盖本地
1)命令
git fetch --all
git reset --hard origin/master
git pull
2)图例
4,代码冲突--需要回退版本
1)命令
git reflog 查看所有提交点
git reset --hard 32822da (或者 one) 回退
git push -u http master -f 提交到远程