git 远程分支和本地分支
一:建立本地分支和远程分支关联:
有时候我们需要把自己修改的代码放在新的分支上,对原来的分支保持不变。你可以按照以下的步骤试一试。
建立本地分支:git branch dev(dev为分支名称)
建立远程分支:git push origin dev(在远程仓库建立与本地分支同名的分支。)
执行git pull之后,如果本地和远程没有进行关联,会提示拉取失败。此时需要把本地分支和远程分支关联起来。
执行git branch --set-upstream-to=origin/dev会建立本地分支和远程分支的关联。
二:合并分支到另一分支上:
以dev分支合并到master分支为例(注意合并分支的时候两个远程分支应该存在)
切换分支:git checkout master 首先需要切换到要合并的分支上,比如想合并到master分支上:
执行merge:git merge dev 把dev分支和master分支上的内容合并。
三:提交代码到远程分支上:
查看修改的状态:git status
添加修改到本地暂存区:git add . .是添加所有,你也可以指定添加哪个文件,添加的时候写多个文件名。
提交缓存区的内容:git commit -m "提交代码" -m"" 中可以写提交的记录信息,以便日后查看提交记录
push到远程分支:git push (push到关联的分支上,注意已关联分支git push才会直接推送到远程库)
本地分支和远程分支关联:
git branch --set-upstream-to=origin/remotename
git branch --set-upstream-to origin/remotename
两者均可行,建立远程关联的时候确保在要建立关联的本地分支上
push到远程分支git push origin dev 这条命令表示,将本地的dev
分支推送到origin
主机的dev分支。如果dev
不存在,则会被新建
四:把不想要的代码,commit到本地仓库中了,但是还没有做push操作:
1.文件被修改了,但未执行git add
操作(working tree内撤销):
git checkout fileName 撤销对某个文件的提交
git checkout . 撤销对所有变动的提交
2.同时对多个文件执行了git add
操作,但本次只想提交其中一部分文件
git add . 添加了多个文件的修改操作
git status 查看提交的状态
git reset HEAD <filename> # 取消暂存
3.文件执行了git add操作,但想撤销对其的修改(index内回滚)
git reset HEAD fileName # 取消暂存
git checkout fileName # 撤销修改
4.已在本地进行了多次git commit
操作,现在想撤销到其中某次Commit
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD] #撤销到其中某次Commit
五:线上更新的代码出现问题了,需要还原这次提交的代码
1.撤销指定文件到指定版本
git log <filename> # 查看指定文件的历史版本
git checkout <commitID> <filename> # 回滚到指定commitID
2.删除最后一次远程提交
方式一:使用revert
git revert HEAD
git push origin master
方式二:使用reset
git reset --hard HEAD^ #退到上一次提交
git reset --hard commit_id #退到/进到 指定commit_id
git push origin master -f
二者区别:
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
3.回滚某次提交
git log # 找到要回滚的commitID
git revert commitID # 回滚操作
六:删除某次提交
git log --oneline -n5 # 查看所有的commit
git rebase -i "commit id"^ # 需要注意最后的^号,意思是commit id的前一次提交
pick 5b3ba7a test2 (5b3ba7a 是commit id ,test2 是提交的备注)
#在编辑框中删除相关commit,然后保存退出(如果遇到冲突需要先解决冲突)!
git push origin master -f # 最后强制推送到远程分支上
git push origin HEAD --force #推送到远程分支
七:从master(其它分支)拉一个新的分支
git checkout master # 切换到要拉的分支
git pull # 拉取远程分支最新代码
git checkout -b newBranchName # 拉出新分支,此时新分支的本地代码是最新的master的代码
git push origin newBranchName(远程分支名称) # 本地新建分支的代码提交到远程分支上
git branch --set-upstream-to=origin/newBranchName #本地分支与远程分支建立关联
附:
git branch -a #查看所有分支
git branch -r #查看远程分支
git remote update origin --prune #更新远程分支:这里注意,如果你的remote branch不是在origin下,你需要把
origin换成你的名字。默认的话主机是origin 除非闲的没事去修改配置文件的主机名
git branch --unset-upstream #断开本地分支和远程分支的连接:
git log #查看提交日志
git reset --hard HEAD^ #回退到上个版本
git reset --hard commit_id #退到/进到 指定commit_id
git reflog # 查看每次的操作
git push origin HEAD --force #推送到远程分支
git branch -d branch_name #删除本地分支
git push origin --delete branch_name #删除远程分支
git branch -vv #查看本地分支于远程分支的连接状态
git reset --hard origin/master #本地强制更新成远程分支 放弃本地的修改
git fetch remotebranchName #更新远程分支的所有变动
git stash git stash pop #将本地工作区的内容暂存,恢复暂存的服务。