一.直接手动在仓库中下载zip,解压后在文件夹创建本地仓库
第一步:
进入解压后的代码文件夹,右键Git Bash Here
git init(初始化仓库)——>git add .(将所有修改添加到暂存区)——>git status(查看暂存区和工作区的状态)——>git commit -m 'first commit'(将暂存区的修改添加到工作区)
第二步:
若果远程仓库出现修改,需要拉取代码时,由于本地仓库和远程仓库是独立的两个仓库,拥有不同的history,因此需要以下操作:
git remote add origin 远程仓库地址(关联远程仓库)——>git pull origin dev -- allow-unrelated-histories (拉取dev分支代码,因为两个仓库不相关,所以在pull的时候需要增加参数)
第三步:
之后修改了本地库,需要push代码了
git remote -v (查看远程库地址别名) ——>git checkout -b dev(新建并切换分支,本地和远程都会切换)——>git push origin dev(本地库dev分支推送到远程库,分支必须指定)
二.使用git clone得到本地库
(1) git clone 远程库地址(功能:①完整的克隆远程库为本地库,②为本地库新建origin别名,③初始化本地库)
(2) git checkout -b dev(本地新建并切换到dev分支,远程也会切换到dev分支)
(3) 本地进行开发
(4) git add .(将所有修改添加到暂存区)
(5) git commit -m '提交说明'(将暂存区的内容提交到本地库)
(6) git remote -v:(查看远程库地址别名)
(7) git pull <别名> <分支名> (把远程库的修改拉取到本地,该命令包括git fetch,git merge)
(8) git push <别名> <分支名> (本地库某个分支推送到远程库,分支必须指定)
三.一些常用本地操作
1.日志操作
git log:查看历史提交(空格向下翻页,b向上翻页,q退出)
--pretty=oneline:以漂亮的一行显示,包含全部哈希索引值
--oneline:以简洁的一行显示,包含简洁哈希索引值
git reflog:以简洁的一行显示,包含简洁哈希索引值,同时显示移动到某个历史版本所需的步数
2.分支操作
新建本地分支
使用 git brach 命令可以新建一个分支
$git branch dev-xxx
新建完分支后可以使用 git checkout 切换到刚才新建的分支
$git checkout dev-xxx
如果你想一条指令完成新建并切换到新分支,git checkout -b会是最佳选择.
$git checkout -b dev-xxx
Switched to a new branch 'dev-xxx'
此时你可以先将该分支同步到远程,也可以等你完成所有开发工作后一次性同步,
现在你可以在自己的分支上折腾。
第三步 同步到远程
使用git push命令会将本地的修改同步到远程仓库,此时别人即可以看到你所有的修改,在push前所有的更改都在你的本地缓存。
$git push origin dev-xxx
git branch -v:查看本地所有分支,-a为查看本地和远程所有分支
git branch -d <分支名>:删除分支
git branch -m <旧分支名> <新分支名>:重命名分支
git branch <分支名>:新建分支
git checkout <分支名>:切换分支,-b <分支名>包含新建和切换两个步骤
git merge <被合并分支名>:合并分支
注意:
1.如master分支合并 hot_fix分支,那么当前必须处于master分支上,然后执行 git merge hot_fix 命令
2.合并出现冲突
①删除git自动标记符号,如<<<<<<< HEAD、>>>>>>>等
②修改到满意后,保存退出
③git add <file name>
④git commit -m "日志信息",此时后面不要带文件名
3.常用的分支:
-
Production分支(主线分支用于发版,不会直接改)
-
Master分支,这个分支只能从其他分支合并,不能在这个分支直接修改
-
Develop分支(开发分支)这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
-
Feature分支(新功能分支)这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
-
Release分支(偏向测试)当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
-
Hotfix分支(紧急bug发布)当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
3.版本控制
git reset --hard 简洁/完整哈希索引值:回到指定哈希值所对应的版本
git reset --hard HEAD:强制工作区、暂存区、本地库为当前HEAD指针所在的版本
git reset --hard HEAD^:后退一个版本,一个^表示回退一个版本
git reset --hard HEAD~1:后退一个版本,波浪线~后面的数字表示后退几个版本
注意:
--soft参数:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
--hard参数:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉,因此要慎用。
4.比较差异
git diff:比较工作区和暂存区的所有文件差异
git diff <file name>:比较工作区和暂存区的指定文件的差异
git diff HEAD|HEAD^|HEAD~|哈希索引值 <file name>:比较工作区跟本地库的某个版本的指定文件的差异