复习一下昨晚 涛兄带我们一起学习的一些在git bash 上使用的GitHub简单操作。
mkdir 文件夹名
cd 文件夹名
git init (这部是核心,他会将当前文件夹设置为master)
vi 文件名
git status(可缩写成git st;查看当前文件状态,如果不知道下一部要做什么的话也可以使用这个命令查看提示)
git add 文件名
git commit -m "简述操作的内容"
git remote add origin(自定义命名 一般为origin) 仓库地址
git remote -v
先生成本地公钥,将他配置到仓库中
git push -u origin master
git clone (复制下图箭头所标的仓库地址链接)
cd 文件夹名
git pull(先保持本地与远端仓库一致)
git pull
git switch -c dev
git branch
git push origin dev
git push origin dev:f1
git push origin :dev
git switch master
git merge --no-ff dev
可以直接vi 要提交的文件名,或者输入code .(提前装好vscode)他会弹出本目录下的vscode 更直观的修改
例如出现下图的情况,以"="为分界线,"<<<<<<<"到"="为在你克隆后到你push期间别人修改的内容,"="到">>>>>>>"之间为本次你修改的内容,如果需要添加在别人修改的后面,即把"<<<<<<<""="">>>>>>>"这些行全删掉。即可实现添加
git log --graph --pretty=oneline --abbrev-commit(或者直接git lg)
git branch -d dev
git switch -c experiment
vim c4
git add c4
git commit -m "c4"
git switch master
vim c3
git add c3
git commit -m "c3"
git switch master
git merge experiment
git log --graph --pretty=oneline --abbrev-commit
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合并分支会丢掉分支信息
git rebase experiment
git switch 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笔记而写,图文仍有些不明白的,还需要巩固学习。
原文:https://www.cnblogs.com/TieJiang13/p/12677796.html