注:本文非标准教程,仅是总结个人学习过程,可能存在纰漏,如有错误之处欢迎留言告知,非常感谢
本文是基于ubutun操作的。
Ubuntu 安装git
$ sudo apt-get install git
win下载地址 https://www.git-scm.com/download/
常用功能小结
git init //创建仓库
git add 文件名 //添加文件入库
mkdir 文件名 //创建文件名
git status //查看所有文件
pwd //查看所处位置
git commit -m "log" //该命令会将git add .存入暂存区修改内容提交至本地仓库中,若文件未添加至暂存区,则提交时不会提交任何修改。
git config --global username."名字" //关联你的gitHub.com账号 "名字"里填你的gitHub里的名字
git log //用于查询版本的历史
git reset --hand commit id // 回退以前某个版本 id为你的某一个版本
git clone 地址 //(最好在新建文件夹里使用) 地址是你gitHub上的地址
git checkout -b brankName //创建并切换分支 brankName是你所创建的分支名
git branch //查找所有分支(*是指你现在所处的位置)
详细教程
Git 关联 Github
1.注册Github账号
2.Github上面新建仓库
3.到本地 clone 已经新建的仓库
$ git clone https://github.com/~ //自己仓库Clone 的链接
进入克隆的目录下
$ cd /myWorkSpace
初始化一个git 仓库(在选定目录下)
$ git init //创建仓库
获取SHH Key
$ ssh-keygen -t rsa -C "xxx@xxx.com" //xxx是你自己注册GitHub的邮箱
获取SHH Key成功以后
进入到主目录下的 .ssh 路径
$ cd /home/~/.ssh
ls -a
会看到目录下有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。
gedit id_rsa.pub
打开文件后复制其中内容
然后转到Github上设置自己的 SHH Key 在其中添加复制的内容
然后终端输入
$ ssh -T git@github.com
输入yes然后回车,成功后开始设置username和email,Github每次commit都会记录他们
$ git config --global user.name "name"//你的GitHub登陆名
$ xxx@xxx.com"//你的GitHub注册邮箱
然后就可以继续了,把你想要上传的东西复制到你相应的本地git仓库
然后
$ cd ~/ // ~ 为你的仓库名,如从上面按教程往下,可忽略此步骤(因为你一直在此路径下)
$ git branch name //新建分支 name 为你的自定义的新建分之的名称
$ git checkout name //切换到 name 分支下
$ git add --all //如果有本地仓库中有新增文件可执行这一句
$ git commit -m 'xxx' //提交并增加一个注释,让自己知道这个版本提交了什么 'xxx'为注释内容
$ git push origin name //上传提交的内容到Github上,成功后可在自己的Github上看到
如果确认提交的内容无误后,可选择合并主分支与新建分支
这一步可在Github网页上执行,也可以在本地通过bash执行
$ git checkout master //切换到 master 主分支
$ git merge name //将名称为name的分支合并到当前分支
$ git push //提交更新
一些拓展操作
$ git remote add origin git@github.com:xxx.git //关联一个远程库命令, git@github.com:xxx.git 这个是自己远程库
git push -u origin master //关联后,第一次上传master分支的所有内容命令,此后,每次本地提交后,就可以使用命令git push origin master推送最新修改
补充:
github工作原理之一
本地库和远端库路径要同步.
出现的问题:我将本地库的整个文件夹(包含.git)移动了,
然后git push origin [branch_name]
首先报这个错: fatal: ‘origin’ does not appear to be a git repository
fatal: Could not read from remote repository
证明本地分支和远程分支断开连接
git branch
——*master 只显示master
*表明你现在所处的位置
然后查看自己想上传的分支
git remote –v
——若什么都没有,则和上游已断联系,拉不了代码也推不了代码
加关联
git remote add origin git@github.com:[yourusername]/[repository].git
(如果加不了,就用git remote remove origin 删除即可)
然后再push,报错
error: failed to push some refs to ‘https://github.com/GDDXZ/RobotDenso.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 changes
hint: (e.g., ‘git pull …’) before pushing again.
情况1
:它检测到一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并
1.强制推送
使用这个强制的方法
git pull origin master --allow-unrelated-histories
后面加上 --allow-unrelated-histories
, 把两段不相干的 分支进行强行合并
后面再push就可以了 git push origin master
2.正常解决
从远端库拉下来代码 , 本地要加入的代码放到远端库下载到本地的库, 然后提交上去 , 因为这样的话, 你基于的库就是远端的库, 这是一次update了
git clone [github仓库地址]
本地要加入的代码放到远端库下载到本地的库
git add --all
...
git pull origin master
PS:情况2这种情况也出现在:两人同时fetch了一个分支。 第一个人修改后提交,第二个人提交就失败。
两种方法
1.强制推送
$ git push -f
可以提交,会将remote上第一个人的改动冲掉,比较暴力,不太好。
2.正常解决
git fetch origin 然后git merge origin/master, 和本地分支合并, 之后再push
git 重命名仓库、修改远程仓库地址、修改仓库配置可参考:https://blog.csdn.net/u011884440/article/details/71246572
补充:
SSh Keys的创建
https://www.cnblogs.com/wx1993/p/6646973.html
https://blog.csdn.net/itmyhome1990/article/details/39668349
Github常见操作和常见错误!
https://www.jianshu.com/p/feb3a14c24ef