大致流程:本地仓库 -> (add)本地缓存区 -> (commit) Head -> (push)远端仓库
1 远程端
1.1 进入Github首页,点击New repository新建一个项目
1.2 填写相应信息后点击create即可
Repository name: 仓库名称
Description(可选): 仓库描述介绍
Public, Private : 仓库权限(公开共享,私有或指定合作者)
Initialize this repository with a README: 添加一个README.md
gitignore: 不需要进行版本管理的仓库类型,对应生成文件.gitignore
license: 证书类型,对应生成文件LICENSE
1.3 点击Clone or dowload会出现一个地址,注意这个地址后面需要用到。
2 本地端
2.1 若创建新仓库
git clone http://地址/项目名.git
cd 项目名
touch README.md
git add README.md
git commit -m “add README”
git push -u origin master //命令解释: git push -u <远程主机名> <本地分支名>,如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样以后就可以不加任何参数使用git push
2.2 若文件夹已存在
cd 文件夹
git init //会生成一个隐藏的文件夹 .git
git remote add origin 之前创建的git地址 //此时在config文件中可以看到添加的网址信息
(git地址:前面第3点提到过,Clone or dowload会出现一个地址,复制过来即可)
ubuntu终端设置账户(需要和github账户设置一致, 如果之前忘了设置,没关系,后面操作的时候也会提示设置):
git config --global user.name 用户名
git config --global user.emai 邮箱
你可以提出更改(把它们添加到暂存区),使用如下命令:
git add
或
git add *
当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可使用-a标识,-m是注释说明
git commit -a -m "Initial commit"
git push origin master //此时会提示:输入用户名和密码
//注意:2020年10月1日后,git默认主分支由master变成main了,而master变成了子分支,要想在主分支main下,则上面命令改为:
git push origin main
注意:在以上分支上执行上述命令之前,要先确定,
1.要推送到哪个远程分支(前提:远程仓库存在多个分支)
2.现在处于哪个本地分支
3.考虑要不要先更新一下你的本地仓库至最新改动,执行:
git pull origin 分支名 (origin表示远程的仓库)
2.3 分支创建、切换、删除
创建:git branch 分支名称
切换:git checkout 分支名称
git checkout -b 分支名称(创建并切换)
删除:git branch -d 分支名称
2.4 对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后使用合并。
git checkout master
git merge 分支名称 //把分支合并到当前分支
3 Git本地分支和远程分支关联
查看本地分支
git branch
查看远程分支:
加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话)
*表示当前所处分支
git branch -a
如果远程新建了一个分支名为develop,本地没有该分支。
1.新建本地分支develop并切换: git checkout -b develop
2.本地分支与远程分支相关联 : git pull origin develop (origin表示分支为远程的)
如果本地新建了一个分支 branch_name,但是在远程没有。或者远端也有是要有同名分支
1.在本地新建分支 git checkout -b branch_name
2.和远程分支关联并创建远程分支 git push -u origin branch_name -u为关联意思
4.详解git pull和git fetch的区别
有人说git pull=git fetch+git merge,真的是这样吗?
参考:详解git pull和git fetch的区别
5.远程分支和本地分支
先查看本地和远程分支有哪些
git branch -a
如果远程有个新建的名为check的分支,用上述命令可能看不到 origin/check
远程分支 ,此时, 本地分支也要新建一个check分支并切换
git checkout -b check
在本地check分支下,拉取远程代码
git fetch origin
拉取成功的后,再用命令:git branch -a
应该就可以看到远程分支 origin/check
后续再进行 add commit push等操作到远程check分支就不会报错误了
***(合并分支的操作要小心)
常见错误:
1.在对本地库中的文件执行修改后,想git push推送到远程库中,结果在git push的时候提示出错:! [rejected] master -> master (non-fast-forward)
error: 无法推送一些引用到 ‘git@github.com:GarfieldEr007/XXXX.git’
提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如 ‘git pull …’)。详见
提示:‘git push --help’ 中的 ‘Note about fast-forwards’ 小节。
解决方案:
因为当前分支的最新提交落后于其对应的远程分支,所以我们先从远程库fetch到更新再和本地库合并,之后就可以git push操作了.
git remote add origin 远程地址
git fetch origin
git merge origin/master
上述是master远程分支,如果远程分支是develop,则第三行改为:
git merge origin/develop
参考文献:
1.Git使用方法(精心整理,基本够用)
2.如何将本地的代码上传到github
3.git分支的理解