前言
整理的git流程,基本上工作都能满足。
平时拉代码
git clone 项目地址
创建分支
git branch 分支名 git push origin 分支名
查看分支&分支切换
git branch -a //查看其他分支 git checkout -t origin/xxx //xxx指你要切换的分支名,默认是master,一般我们都是拉develop分支的代码 git branch //此时可以看到修改后的分支 git checkout 分支名 //后面用这种方式切换分支即可
重新修改分支名
git branch -m 原分支名 新分支名 git push -d origin 原分支名 git push origin 新分支名 git branch --set-upstream-to origin/新分支名 //这里是绑定远程分支 也可以 git branch --track origin/新分支名
撤销本地分支与仓库的绑定
git branch --unset-upstream //这里取消绑定前,记得要checkout本地要取绑的分支
绑定本地分支与远程仓库
git branch --set-upstream-to=origin/远程仓库分支名 本地分支名
合并分支(这里写把develop合并到master)
git checkout 要被合并的分支名(例如develop) git pull git checkout 要合并的分支名(例如master) git pull git merge 要被合并的分支名(例如develop) git push origin 要合并的分支名(例如master)
撤销合并
git merge --abort
某一分支上的所有修改都移至另一分支上
git rebase 合并的分支 被合并的分支
或者
$ git switch 被合并的分支
$ git rebase 合并的分支
删除分支
git branch -d 分支名 //这个是删除本地分支 git push -d origin 分支名 //这个是删除远程分支
平时提交代码
git pull git add 要提交的项目文件 //嫌麻烦就git add . 表示提交全部 git push
隐藏不想提交的代码
git stash
重新显示隐藏的代码
方式一:git stash apply 恢复,恢复后,stash隐藏的内容并不删除,你需要使用命令 git stash drop 来删除。 方式二:git stash pop 恢复的同时把stash内容也删除了。
快捷代码回撤到上一版本
git reset --hard HEAD^ //回滚到上一版本,此时本地已经回滚,远程仓库还未回滚--不推荐 git reset --soft HEAD^ //回滚到上一版本,撤销了commit 代码依然保留--推荐使用 git push -f //回滚远程仓库版本
代码回撤到指定版本
git log -n //n表示查看哪次提交的commit,也可以git log 查看全部记录,看到后复制commit_id git reset --soft 填写刚刚复制的commit_id //推荐使用这个,本地代码不会回退 git reset --hard 填写刚刚复制的commit_id //这个会回退本地代码 git push -f //回滚远程仓库版本--推荐使用 git push origin 分支 //如果要指定git代码的分支就用这个
代码只是回撤到某次commit,但之后的commit不变
git log //查看自己要回撤的commit_id git revert -n "刚刚复制的commit_id" //这是单次commitid,多次的话就 commit_idA..commit_idB git commit "备注信息" git push
如果本地代码和git仓库有冲突,提示overwrite
git stash git pull origin 分支 git stash pop //此时再进行 git add git commit git push 等常规流程就可以啦~
撤销git commit但不撤销add
git reset --soft HEAD~1
撤销git commit同时撤销add
git reset --hard HEAD^
如果是多分支进行合并操作
//如果是多分支进行合并操作 git checkout 需要合并的分支名 git cherry-pick 本次提交的commit_id
git submodule 子模块管理
git clone <repository> --recursive 递归的方式克隆整个项目 git submodule add <repository> <path> 添加子模块 git submodule init 初始化子模块 git submodule update 更新子模块 git submodule foreach git checkout <分支> -f 切换子模块分支 git submodule foreach git pull 拉取所有子模块