首页 > 其他 > 详细

GitHub学习

时间:2020-04-11 10:28:29      阅读:74      评论:0      收藏:0      [点我收藏+]

复习一下昨晚 涛兄带我们一起学习的一些在git bash 上使用的GitHub简单操作。

基本使用

预备状态

新建文件夹,初始化为Git仓库

mkdir 文件夹名
cd 文件夹名
git init (这部是核心,他会将当前文件夹设置为master)

添加文件

vi 文件名

查看文件状态

git status(可缩写成git st;查看当前文件状态,如果不知道下一部要做什么的话也可以使用这个命令查看提示)

添加文件到暂存区

git add 文件名

提交commit -m 代表添加一个“提交信息”

git commit -m "简述操作的内容"

推送到GitHub(在GitHub上创建空白仓库,并复制仓库地址)

先添加远端参考

git remote add origin(自定义命名 一般为origin) 仓库地址

查看远端操作(会显示 fetch和push)

git remote -v

推送到远端仓库(使用SSH协议需要配置SSH免密登录)

先生成本地公钥,将他配置到仓库中
git push -u origin master

-u:指定默认远端仓库别名,下一次推送只需使用git push

origin:远端仓库的别名(默认origin)

master:分支名称

仓库克隆

克隆仓库到本地(可以使用HTTPS或者SSH协议)

git clone (复制下图箭头所标的仓库地址链接)
技术分享图片

Git会新建一个与仓库名同名的文件夹,进入文件夹

cd 文件夹名

如果这个仓库已经克隆很久了,本地和远程可能存在差异了,可以拉取远程仓库最新状态到本地仓库

git pull(先保持本地与远端仓库一致)

分支管理

已经克隆仓库到本地

开始工作前,先拉取远程最新修改(可能同事已经修改代码并提交了commit)

git pull

新建并跳转到dev分支(也可使用git branch -b dev)

git switch -c dev

查看分支情况

git branch

可以在dev分支上修改代码做add和commit

推送dev分支到远程(需要拥有远端仓库的权限)

git push origin dev

如果需要重命名远端分支则加上 :f1

git push origin dev:f1

删除远端dev分支

git push origin :dev

合并dev分支到master(需要先切换到master分支,在merge的过程可能需要解决冲突)

git switch master
git merge --no-ff dev

解决冲突

可以直接vi 要提交的文件名,或者输入code .(提前装好vscode)他会弹出本目录下的vscode 更直观的修改
例如出现下图的情况,以"="为分界线,"<<<<<<<"到"="为在你克隆后到你push期间别人修改的内容,"="到">>>>>>>"之间为本次你修改的内容,如果需要添加在别人修改的后面,即把"<<<<<<<""="">>>>>>>"这些行全删掉。即可实现添加
技术分享图片

查看分支合并情况

git log --graph --pretty=oneline --abbrev-commit(或者直接git lg)

删除本地dev分支

git branch -d dev

merge和rebase

新建并跳转到experiment分支

git switch -c experiment

添加并提交c4

vim c4
git add c4
git commit -m "c4"

切换回master分支

git switch master

添加并提交c3

vim c3
git add c3
git commit -m "c3"

merge

使用merge方式合并分支

先切换到master分支

git switch master

合并分支(会弹出commit message的编辑框,:wq 保存退出)

git merge experiment

查看分支合并情况

git log --graph --pretty=oneline --abbrev-commit

rebase

使用rebase方式合并分支

先切换到experiment分支

git switch experiment
技术分享图片
— merge示意图 引用自《Git Pro》

????????使用merge合并分支,相当于三方合并,合并c2,c3,c4(未新建experiment分支前的修改c2、新建分支后master分支的修改c3、experiment分支的修改c4)

????????直接使用git merge <要被merge的分支名> ,没有冲突的情况下默认使用参数:–f 即:Fast-forward(快进式合并)
????????推荐使用–no-ff 即:git merge –no-ff <要被merge的分支名>
????????这个参数的意思是禁止快进式合并,合并时会自动创建一次commit提交,保证提交链的完整性
????????而Fast-forward合并分支会丢掉分支信息

rebase分支

git rebase experiment

先切换到master分支

git switch master

将experiment合并到master

git merge experiment

查看分支合并情况

git log --graph --pretty=oneline --abbrev-commit
技术分享图片
— rebase示意图 引用自《Git Pro》

????????rebase的原理是:找到c3和c4共同的祖先c2,暂存共同祖先c2到当前分支(expriment)的修改内容,然后将分支指向master的c3,并应用之前暂存的修改内容
????????我们可以这么理解:rebase就是当前分支(experiment)提交的修改(c4)放到最前面,而把其他分支(master)已经提交的代码(c3)放到后面去,这样做的好处就是:自己写代码(experiment分支上的)将出现在master最新的一次commit中,一目了然

????????rebase:黄金法则:绝对不要在公共分支使用rebase,rebase会重写提交历史

本文根据自己回忆昨晚学习的操作结合林涛Git笔记而写,图文仍有些不明白的,还需要巩固学习。

GitHub学习

原文:https://www.cnblogs.com/TieJiang13/p/12677796.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!