美文网首页
二、git常用操作

二、git常用操作

作者: 卡农me | 来源:发表于2018-06-13 15:39 被阅读37次

将工作区的代码提交到暂存区,再提交到当前的本地分支

# 将代码从工作区提交到暂存区
git add index.html
# 将暂存区的代码提交到当前的本地分支
git commit -m "提交了修改"

工作区 ----- add------> 暂存区 ---- commit ----> 当前本地分支

查看修改的地方:git diff index.html(工作区和暂存区diff)或者git diff HEAD -- index.html(工作区和版本库里面最新版本diff)
查看暂存区的文件状态:git status


版本回退

  1. 回退到上一个版本
git reset --hard HEAD^

在git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD^...上100个版本就是HEAD~100

  1. 回退到某个版本
# 1094a是版本号,可以不写全
git reset --hard 1094a

查看版本号:git log
查看版本号(简易显示):git log --pretty=oneline
查看历史出现过的所有版本号:git reflog


第一次修改 -> git add -> 第二次修改 -> git commit

执行git commit后,被提交的修改只有第一次的,而没有第二次的,因为第二次的修改仍在暂存区,所以若要把第二次修改也提交,需再执行一次 git add -> git commit


撤销修改,回到暂存区

git checkout -- readme.txt

git checkout -- readme.txt会把readme.txt文件在工作区的修改全部撤销,但有两种情况:
1、readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
2、readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commitgit add时的状态。

我的理解:该命令就是将工作区的文件回退到暂存区的样子,因为第一种情况下文件修改后还没有被放到暂存区,所以暂存区和版本库里是一样的,所以第一种情况下回到版本库也是回到暂存区

抛弃暂存区的修改

修改了文件,又git add到暂存区了,但并未commit,这种情况下撤销缓存区:

git reset HEAD readme.txt

git reset命令既可以回退版本,又可以撤销暂存区

撤销总结

情形:修改第一次---- add ----> 修改第二次

git status打印:


场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>抛弃缓存区,这样缓存区干净了,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退git reset --hard HEAD^,不过前提是没有推送到远程库。

删除文件

情形:添加了新文件test.txt,并commit到了git

若直接在本地rm test.txt后,git status会提示有文件被删除了,也就是版本库里依然有这个文件
所以要git rm删掉,并且git commit,这样版本库中才被删除


分支

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
克隆指定分支:git clone -b name url

Fast forward模式合并分支,解决冲突

情形:在master上新建dev分支,切回master分支,在master上加上A and B,执行addcommit,再切到dev,在dev上加上了A & B,然后执行addcommit,切回master,在master上将dev合并到当前分支git merge dev,出现冲突

出现冲突后:
1.解决冲突,将master的两个箭头二选一,选择A and B
2.执行addcommit
若要查看分支合并图:git log --graph

如果master上有修改,而并未addcommit,就切换到dev上,则master的修改也会带到dev

不使用Fast forward模式合并分支

情形:在master分支上新建并切换到dev分支,在dev分支上做了修改并addcommit,再切回到master分支,执行非快速合并git merge --no-ff -m "合并" dev,再git log --graph

保存工作现场

情景:现在在dev分支上修改了一堆文件,突然来了一个任务,需要切到别的分支上去,而dev上的修改又不能commit,如果直接切到新的分支上,那么当前的修改也会带过去,即使add了修改文件也会把修改带过去

git stash

这个命令会把工作现场保存起来,如果用git status查看工作区,就是干净的(除非有没有被Git管理的文件,如新增的文件)

查看工作现场:git stash list
恢复现场但不删除stash:git stash apply
删除stash:git stash drop
恢复现场并删除stash:git stash pop

推送分支

#将本地的dev分支,推送到,远程origin仓库的ff分支,远程没有ff分支将创建ff
git push origin dev:ff
#将当前分支push到远程的dev上
git push origin dev

查看远程库:git remote
查看远程分支:git branch -a

将远程某个分支拉下来

#将远程的dev分支拉到本地,并新建为dev
git checkout -b dev origin/dev

如果拉取不下来,提示远程没有origin/dev,则是本地没有更新,git pull一下


push冲突

情景:我再origin/dev分支上做了修改,另一人也在origin/dev做了修改并先我一步push了上去,现在我要push的时候冲突了

#解决冲突要先pull
git pull
#执行pull后,就有提示,要先解决冲突,方法跟合并分支时遇到冲突的解决方法一样
#修改冲突后,add、commit
git add ...
git commit ...
#再push,就没问题了
git push

丢掉commit,回到commit之前的、编辑过的、待commit的状态

场景:a状态工作空间是干净的,然后编辑某个文件,到了b状态,再add、commit,到了c状态,现在发现多commit了一个文件,想丢掉commit,回到之前编辑的状态b

  1. git log,找到上一个commit的id,也就是a状态的id,从上往下第二个,叫huifu_id
  2. git reset huifu_id

将远程仓库的多个commit合成一个

#先将本地的多个commit合成一个,40111daac是最早提交的一个id
git reset --soft 40111daac
git commit --amend
#强制push到远程
git push origin tangchao-essensial -f

将文件回退到某个版本

场景:想将file.js文件回退到某个commit
git checkout commit_id file.js

arc

arc land 分支(不写默认当前分支) --onto develop-test : 将当前分支合到另一个分支

Your branch and 'origin/master' have diverged, and have 1 and 1 different commits each, respectively

当我们在本地提交到远程仓库的时候,如果遇到上述问题,我们可以首先使用如下命令:
git rebase origin/master
然后使用
git pull --rebase
最后使用
git push origin master

相关文章

  • 二、git常用操作

    将工作区的代码提交到暂存区,再提交到当前的本地分支 工作区 ----- add------> 暂存区 ---- c...

  • 组件化(第一篇)

    组件化 git 常用操作指令 cocoapods的基本使用 cocoapods本地私有库 一、git 常用操作指令...

  • git的常用操作

    git的常用操作

  • GIt 操作补充

    常用的git操作命令 常用的git操作命令已经能够满足日常的工作需求 现补充一些高级命令 git branch -...

  • git使用整理

    git使用常用操作-常用基本命令 克隆:git clone 【url】 查看修改状态: git status (g...

  • git 常用命令汇总

    一、git常用命令: 二、团队协作git操作流程: 三、git工作流 更多咨询请关注:1、Git 汇总2、VUE3...

  • GIT 版本管理 常用命令

    Git 常用命令流程图 Git常用操作命令: 初始化创建:$ git init //检出仓库:$ git clon...

  • 🍏常用 git 操作指北

    ? 常用 git 操作指南 ? git图形界面操作软件 ? 开发流程 git clone 拉取项目代码,不必多说 ...

  • git常用操作 🎀

    git常用操作 ? 基本知识 查看git信息 修改git配置 提交类操作 分支类操作 创建分支 查看分支 修改分支...

  • git常用操作命令

    git常用操作命令 1 git工作原理图 2 git远程操作 2.1 git clone 远程操作的第一步,通常是...

网友评论

      本文标题:二、git常用操作

      本文链接:https://www.haomeiwen.com/subject/jgijeftx.html