GIT_01_我常用的命令

日常工作中常用的命令

代码先敬为上

git add . : 将工作区的代码全部添加到暂存区.
git commit -m "xxxMessagexxx" : 将暂存区里面的提交到本地仓库.
git fetch : 将远程仓库分支信息更新到本地.
git pull : 将远程仓库分支合并到本地分支上.
git push : 将本地修改推送到远程分支上面.

解释

上述系列git命令操作,是我日常工作中常用到的git命令,应用日常开发场景.

前提

  • 此时修改代码是在开发分支上.
  • 此开发分支是和远程分支建立了连接的.

为什么在推送本地修改之前还有pull操作

  • 很多时候,特别是团队合作迭代开发的时候,在你提交之前,很有可能其他人提交了代码,这样很容易代码冲突,此时的代码冲突需要注意,有些IDE会自动帮你合并,或者做一些你不知道骚操作,导致你的或者其他人的代码覆盖,或者是直接出现异常代码(直接抛错的那种).
  • 个人觉得对流程规范点,不仅对你个人友好,对其他人也方便;喜欢搞骚操作可以,但别作死!!!!(还是那种拖累人的作死)

问:为什么git pull之前还要git fetch,git pull不是相当于 git fetch + git merge吗?
答:我也听说git pull = git fetch + git merge,但是我遇见过git pull并没有把最新的代码拉下来情况,怎么都没有用,那次还是我准备上线的时候,我当时的操作是把最新的origin/master合并到我的开发分支上,但是就是死活没法把最新的修改pull到我的分支,搞不懂为啥,最后先fetch,然后再pull就OK了,自此每次我pull之前都会先fetch.
个人推测:idea开发工具有缓存,和git无关的那种,要么就是git版本的BUG.

为什么有时候直接git pull 和 git push不行

  • 一般会出现这种情况,都是因为你纯粹用git命令开发(建分支),并没有通过IDE帮你从远程分支上面新建分支,一般通过IDE创建分支,默认都是和远程分支建立连接的.
  • 如果出现没有关联的git提示信息,可以参考链接中的关联远程分支部分.

commit之前不建议git pull

  • 前面提到过,你再提交之前,很有可能别人有提交,在团队迭代开发的时候,如果你此时有修改+执行pull操作+别人和你代码冲突,基本上你的代码会被覆盖掉,建议先commit然后pull.(此时坑的是自己)

问题:我还没有开发完,我就是不想要commit,但我还必须pull操作,咋搞?(我就是矫情)

没有开发完,不想commit,但是需要pull

  • 先上代码
git stash : 将工作区和暂存区里面的变动, 缓存.
git fetch : 更新远程分支变动信息.
git pull : 更新代码.
git stash pop : 弹栈, 把缓存里面的东西放出来
  • 原理:stash命令能把未commit的变动存储起来,存储起来后就相当于没有修改,此时执行pull命令是OK的,pull之后再通过stash命令放出缓存的东西,就实现了在最新的commit(以远程分支最新commit为准)的基础上修改代码,即使你的修改在最新修改之前.

GIT命令

branch命令

  • git branch : 列出本地所有分支,当前分支前面会有*标记.
  • git branch -r : 查看远程仓库所有分支.
  • git branch -a : 查看本地和远程仓库所有分支.
  • git branch dev : 在当前分支上,创建一个名为dev分支,此时分支依然停留当前分支.
  • git branch -d dev : 删除dev分支.
  • git branch -D dev : 强制删除dev分支.
  • git branch -vv : 查看本地分支,及其对应的远程分支.
  • git branch -m oldName newName : 给分支重命名.

checkout命令

  • git checkout path/fileName : 放弃指定文件的修改(工作区的那种).
  • git checkout . : 放弃当前工作区所有的修改(无法删除文件).
  • git checkout branchName : 切换到名为branchName的分支.
  • git checkout -b newbranchName : 在当前分支基础上,创建一个名为newbranchName的分支,并且切换到新分支.
  • git chekcout --help : 查看checkout命令的帮助信息.

add命令

  • git add . : 将工作区所有变动放到暂存区,包括新增文件和修改文件.
  • git add -u . : 将工作区所有修改和删除文件放到暂存区,不包括新增文件.
  • git add -A(–all) : 将工作区所有修改文件,新增文件,删除文件都放到暂存区.

commit命令

  • git commit -m “xxxMessagexxx” : 将暂存区的改动提交到本地仓库.
  • git commit -a -m “xxxMessagexxx” : 将暂存区的改动以及已经跟踪但未add(工作区)都提交到本地仓,注意检查文件是否提交,慎用,一般先add然后commit.
  • git commit --amend : 追加提交,将暂存区改动追加到上一次commit,并且提交到本地仓库,如果远程分支有改动,慎用.

stash命令

  • git stash : 将当前工作区和暂存区的变动隐藏存储起来(栈的形式),可以重复使用,每次都会新增一个stash@{num},num是编号,不太建议连续多次使用,容易遗漏/冲突.
  • git stash pop : 恢复最新的一个stash@{num},弹栈.
  • git stash list : 查看所有stash栈区,就是stash列表.
  • git stash show stash@{num} : 查看指定num隐藏的内容.
  • git stash clear : 清楚stash所有存储,命令较危险慎用.
  • git stash apply stash@{num} : 恢复指定num隐藏的内容,stash依然保存该编号隐藏.(没走弹栈,有点获取的感觉)
  • git stash drop stash@{num} : 删除指定的stash隐藏.
  • git stash --help : 查看stash命令的帮助信息

push命令

  • git push origin remoteBranch : 将本地分支推送到远程仓库,如果远程仓库不存在remoteBranch名字的分支,会创建一个新远程分支,然后再推送.(没有建立连接也可以用该方式提交代码,如果想建立连接可以加入 -u)
  • git push : 将本地仓库中的提交推送到远程.(本地分支和远程建立了连接)
  • git push -f : 强制推送远程分支,commit有被覆盖的风险,一般撤销远程commit的时候会用该命令(可参考中的场景八),慎用.

log命令

  • git log : 查看所有日志信息.
  • git log --oneline : 一行一行查看所有日志信息.
  • git log --oneline num : 一行一行查看前num条日志信息.

其他命令

  • git init : 初始化git,一般是刚创建开发git目录的时候执行.
  • git clone url : 根据URL将制定项目通过git克隆到当前目录. git status : 查看当前目录下,工作区和暂存区的变动.
  • reset 命令 : 可以参考链接中撤销add commit部分.
  • rebase命令 : todo (用得不多,不想弄)

todo…

你可能感兴趣的:(GIT,git,命令模式)