Git使用¶
学习branching的小网站 Learn Git Branching
简单工作流¶
初始化仓库,并且添加远程仓库
git init
git add .
git commit -m "Initial commit"
git remote add origin <repository-url>
git push -u origin main
工作区修改完代码以后,跑通测试,查看当前状态
明确添加的文件,并且提交
查看当前日志
明确当前所在分支以及远程分支以后,推送到远程
分支操作¶
创建分支
这样可以在新分支上commit
合并分支,例如我要把new-feature分支合并到main分支 先切换到main分支
然后合并分支
或者rebase
merge和rebase的区别在于,merge会创建一个新的合并提交,而rebase会将提交历史线性化,直接从分支节点剪掉当前分支接到要合并的分支上。
远程操作¶
查看远程仓库
Tip
如果发现是别人的仓库,先fork一份。
如果已经在别人的origin/main下游有本地的提交,可以先替换成自己的库
如果没有冲突,这将成功把origin替换成自己的。
先把远程的分支拉下来,指定分支名
看一下log
然后merge或者rebase(假设目前已经在main分支)
fetch和合并可以用pull代替
然后更新远程的main分支
这样远程的main分支就有本地main分支的所有提交记录
其他操作¶
在分支之间切换
重置当前分支(分支指针和HEAD一起回退)
Tip
reset --hard会丢弃当前工作区和暂存区的所有修改,把工作区重置到指定的提交,之后的提交也会丢失。 如果用--soft选项,会保留工作区和暂存区的修改,只移动HEAD指针。 如果用--mixed选项(默认),会保留工作区修改,但清空暂存区。
还可以用checkout命令来查看某个历史提交,进入detached HEAD状态
临时储藏工作区修改
查看储藏列表
恢复储藏的修改
删除储藏
这里stash同时保留工作区和暂存区的状态,恢复时会尽量保持原来的状态。
如果要把工作区某个文件恢复到某个提交的状态,可以用
注意此时HEAD不会改变。
这个时候如果要从上游提交开始再创建新的分支
这相当于在上游提交的基础上创建了一个新的分支,HEAD指针会指向new-branch分支.