git常见操作
场景:本文主要记录git的常见操作
# clone项目
git clone 地址
#查看远程分支(推荐第一种)
git branch -a git branch -r git branch -v
# 拉取远程分支到本地
1、git pull <远程库名> <远程分支名>:<本地分支名> git pull origin gina:gina git pull origin gina 但是这个方式有的时候居然会Please specify which branch you want to merge with.解决方案如下: git branch --set-upstream gina origin/gina 2、git fetch origin 远程分支名:本地分支名 3、git checkout -b 本地分支名 origin/远程分支名
# 查看本地分支
git branch
# 获取当前分支的远程分支地址
git remote -v
# 本地新建分支并切换
方法1:创建新分支,切换新分支 git branch branch_name git checkout branch_name 方法2:git checkout -b branch_name
# 新建分支提交到远程
-u参数与--set-upstream这一串是一个意思,所以用-u就好了,如果local_name和remote_name一样可以缩写成一个
git push -u origin local_name:remote_name git push -u origin branch_name
# 关联本地分支和远程分支
git branch –set-upstream master origin/master
# 合并其他分支到当前分支
git merge release1.0 git push -u origin gina
# 取消merge
1、如果没有add,取消合并 git merge --abort 2、如果add了先查看历史操作,然后在回退到之前的状态 git reflog git reset --hard commit id
# 回滚操作
1、本地切换到要回滚的分支,git log黄色字体中 commit后面的一串码就是每一个版本号对应的码之后
git reset --hard f7f4ecb2b2
再强制回滚远程的分支:
git push origin HEAD --force
2、强制更新到最新版本
git reset --hard origin/release1.0
3、强制覆盖本地某一分支
git fetch --all && git reset --hard origin/sandy && git pull
4、如果还没add想要取消的话
git checkout .
5、如果已经add了还没commit的话可以
git log <fileName>
git reset <commit-id> <fileName>
6、已经commit但是还没有push
退回到add状态:git reset --soft HEAD^
退回到add前状态:git reset --hard HEAD^
7、如果commit注释写错了不用撤回,直接通过amend修改即可,之后可以直接push
git commit --amend
# 查看commit修改记录
https://www.jianshu.com/p/efff46d60986
# 存储stash相关操作
1、stash当前内容,并附上一些备注信息 git stash save "save message" 2、查看当前存储list git stash list 3、查看做了哪些改动,默认第一个 git stash show 4、查询哪个stash的具体变动 git stash show stash@{1} 5、恢复存储 git stash pop stash@{1} //存储被删了 git stash apply stash@{1} //存储实际未被删除 6、删除存储 git stash drop stash@{1} //指定的删除存储 git stash clear //删除所有的存储
# 文件提交的正常流程
git status git add . git commit -m "修改xxx" git push
#git删除分支
场景一:git本地删除远程分支
备注:如果报错error: unable to delete 'origin/gina_compare_data': remote ref does not exist,可以试试去掉分支名的origin: git push origin -d gina_compare_data
删除分支之前可以先更新一下本地分支存储信息,如果有的分支已经和远程分支信息不同步直接执行分支信息会有问题,所以建议这样操作
git fetch -p origin; git branch -a; git push origin -d 分支名; git push origin -d 分支名(不带origin)
场景二:git删除本地分支,但是远程分支已经不存在了
git branch -D 本地分支名
-D和-d的区别:-d如果该分支有提交未进行合并,则会删除失败,-D如果该分支有提交未进行合并,强制删除成功。
场景三:分支是否同步
git remote show origin
# 场景一:从远程下载代码并开始开发
流程: 下载项目->查看本地分支和远程分支->拉取远程分支到本地->新建本地分支(用于开发)->更新当前最新代码->开发功能并提交
git clone 项目地址 git branch git branch -r git pull origin release1.0:release1.0
git reset --hard origin/release1.0 #如果不要本地的内容,想强制更新远程最新代码可以执行该操作 git branch git branch gina git checkout gina git merge release1.0 开发新功能... git status git add . git commit -m "修改xxx" git push origin gina