查询git版本命令:(git是因liux系统研发而来所以懒的话可以用tab键来补齐) git ?--version 通过命令来追踪到底谁做了修改,我们需要配置对应的用户名与邮箱地址: git config --global user.name "写名字"; git config --global user.email 写邮箱地址; git config --list ?查询配置结果
工作流程详解: 提交的时候要经过暂存区 stage files 提交到暂存区 commit 然后在提交到本地仓库 当我拉出来的时候不需要经过暂存区直接能拉出来 checkout the project 拉取到工作区当中
git命令: 初始化git本地仓库 git init ? ?本地初始化完了以后是一个空仓库 执行git add 命令就能将文件添加到暂存区 通过 git status 查看工作目录与暂存区文件状态 看一下哪些文件有被追踪到那么没有被追踪到? 追踪到就是绿色没有就是红色 最后通过 git commit提交到本地仓库就是一个完整的流程 提交的时候要 加-m 单引号里面写注释一定要写 ? ? ? ‘ ?注释 ?’ 完整命令就是 :git commit -m ‘ 注释 ’ 怎么去看提交的信息呢通过命令 git log去看完整的提交日志信息
文件的修改与提交: 比如修改了文件里面的内容此时就需要 git add进行一个提交 到暂存区接着查询git status 进行查询有没有被追踪到 接着将修改后的文件进行 git commit -m ‘注释’ ?光写 git commit会强制进入vim编辑当中 需要通过i 进行插入在最顶部编写注释 写完Esc :wq保存退出即可再次查询 git log就可以看见之前提交和这次提交的记录了 如果修改了文件数据没有进行暂存区的而是直接进入到本地仓库在查询追踪就会报错此时就可以去查看git本地库和工作区的这个文件的区别通过命令 git diff HEAD --文件名 就可以查看变动之前和变动之后文件的一个区别 查询结果详解: ---:表示变动前的文件 +++:表示变动后的文件 “@@”作为起始和结束“@@” @@ -1,2 +1,3@@:减号表示第一个文件,“1”表示第一行,“2”表示连续2行。同样的,“+1,3”表示变动后,成为第二个文件从第一行开始连续3行。
文件撤销:(如果不小心提交错了到暂存区了就可以用此功能) 撤销命令:git restore --staged 文件名 ?(后面可以跟多个文件名)这个不仅暂存区本地仓库的提交的文件也可以移除 这个命令也可以进行撤销:git reset HEAD 文件名 ? ?只能取消上一次的操作 只能取消暂存区文件
版本回退: 文件修改后提交的次数很多时,对于版本库中存放的文件就会出现不同的版本,在多人开发的项目环境中 通常会对不同版本文件进行查看甚至回退去查看一下之前的一个的情况。(项目中突然有一个bug,这个bug 不清楚是这次版本提交的bug还是之前版本的我可能要往退一下退回版本之前看看有没有报错如果没有 那肯定这次提交的有bug如果没有回退就要一点一点的去找哪范围就会很大!所以就要用到回退) 查看版本具体命令:git log --pretty=oneline 这个命令可以查看具体的日志也可以看HEAD箭头指向的master就是当前版本 回退之前先输入这个命令查看所有版本信息 回退命令: git reset --hard HEAD^ 回退一次 在加一个^就回退两次三次就以此类推如果要50次100次怎么办呢? 用这个命令 git reset --hard HEAD~写要回退的次数就可以了写比如50就写50 就可以了 但是要是想回退到具体版本又很多版本一个一个找不是太慢你就用这个命令git log --pretty=oneline查看所有版本的具体编码(b0679e31类似这个的编码标识)然后输入 git reset --hard+空格+标识码 就可以回到对应标识的版本两个命令配合使用一个查看一个根据查看结果来去回退版本 比如:git reset --hard b0679e31 但是你回退完之后 后悔了想再前进 也可以用这个 git reset --hard+空格+标识码 而此时记录也没有了重新打开了或者清空了没有标识码了怎么办? 通过命令git reflog 就可以查看所有记录包括之前 回退过的记录也有 然后再加上 git reset --hard+空格+标识码 就可以了
文件删除: 一: 查看本地仓库文件命令: git ls-files 当我们直接去操作磁盘文件手动点击删除但是你通过上面命令发现仓库中还是有存在已经手动删除的文件的 这时你是还可以通过:git checkout 加文件名 ? ?进行恢复自然磁盘中的文件也会删除 那么你如何也把git'仓库里面的文件也删除掉呢? 通过命令: git add +文件名 或者 git add . 指当前文件? 查看一下暂存区是否有 你要删除的文件前面跟了个deleted 并且是绿色 有就说明磁盘中已经被删除了 此时就可以通过 ?git commit -m ' 删除+文件名' 就可以了 ? 此时在此查看git ls-files命令就会发现仓库已经没有这个文件了 (上面每一步都要操作不让删不掉) 二: 如果显麻烦可以直接用命令:git rm 文件名 即可? 就可以删除磁盘中和仓库中的文件了 再通过git ?ls-files查看确认就可以了
分支操作-本地操作: 在开发企业项目一般多人合作的项目不会直接在主干master上调试和操作而是会开发出新的分支在新的分支上进行调试啊开发啊当你的项目测出来没有问题的时候才会把你的分支项目的代码合并到主干master上面去 如果是新开的项目(master)的话是无所谓的? 如果说项目已经上线了已经有用户在访问了这时想添加新功能修复线上的bug的时候我不可能直接去主干上面去开发主干上面的项目是已经提供在线上的一个项目如果说真的要去添加新的功能这个功能有bug 导致项目挂掉了这时bug又搞了两三天用户早就另选app了 像这种情况就可以去拉一个分支 分支上面的任何操作都不会影响主干的 等我们的分支调试都没有任何问题了 就可以合并了直接发布上线就可以了
分支命令: ? ? ? ? ?git branch(查看所有分支)有*号标记的呢就是当前分支 后面蓝色括号也能看出 ? ? ? ? ?git checkout -b 分支名 (创建分支并且切换到该分支)? 此时分支里面有什么内容? 主干里面有什么内容这个分支里面就有什么内容
? ? ? 命令: ? ?? ? ? ? ? ?git checkout 分支名 (切换分支) ? ? ? ? ?git branch -m 旧分支名 ?新分支名字 ?(重命名修改分支名字)
合并分支:(切记一定记住先切回到主干)千万不能在分支上合并主干虽然不会报错但是有影响 ? ? ? ? ?git merge 分支名(合并分支) 此时在去看主干就会发现主干上就有分支的操作的东西了 这个合并后的分支就没用了就需要删掉了 命令:git branch -d 分支名 (删除分支切记如果要删除分支不能在要删除的分支下面删除分支) 强制删除就是 git branch -D 分支名(如果你的分支和主干内容不一样就会不让你去删就需要用到这个命令)
分支操作-远程操作: 命令: git branch -a(就是“查看所有”本地分支加上远程分支) git push origin 分支名 (将需要分支“推送”到远程仓库当中并创建远程分支) git push origin :分支名 (“删除”远程仓库分支) git checkout -b 分支名 ?origin/远程分支名 (“拉取远程分支”拉取之前要先获取最新分 支的一个状态就要通过命令:git fetch 此时通过 git branch -a就可以看到要拉取远程分支了然后再用远程拉取的命令就可以拉取到了 并且在本地创建了远程分支并切换到该分支)
分支冲突问题-本地: 通俗理解就是提交的同一个文件同一行出现的内容不同如果是同一个 文件不同行是没用冲突的 如何解决? 这个需要去根据实际工作需求去解决 如果没有定死一个方案规定怎么去做就 可以,以主干为准 可以以分支为准 也可以把主干内容和分支内容合并起来看具体工作 需求来定 比如:以主干为准进行提交 分支和主干的一个文件同一行发生冲突就以主干为主进修改后重新进行提交就可以了此时提交的时候 后面的括号里面就会出现(master/MERFING)处于合并的一个状态 再次提交 先add 然后commit提交 提交后就会恢复就解决了冲突当然这就是以主干内容为准 这个具体以实际情况来定 还可以通过命令来看分支冲突的情况: 以前不是通过 git log --pretty=oneline查看版本具体命令信息? 这个命令:git log ?--graph ? --pretty=oneline 能够以图标的形式通过最左边的星号和红绿竖杠("|") 来看有没有分支冲突和合并情况
多人协同操作冲突: 就是在多人开发当中A修改分支内容并进行提交操作此时B在分支提交的时候 也去修改了这个文件的内容并且已经提交到了远程仓库中仓库内容已经发生了变化 A在合并分支的时候发现 内容已经被修改发生了冲突的情况两个人同时改了一个文件在文件合并的时候发生了冲突 提交的同一个文件同一行出现的内容不同 上面本地的是自己一个人去做的知道自己主干和分支怎么写的可以去修改在合并解决的 那么多人从远程拉取合并的时候发生冲突你就不知道它是怎么写的没办法控制? 如何避免多人冲突呢? 尽可能在发生冲突之前先去拉取最新的代码 git pull这边就会提示有冲突没有就直接推送? 这样在去推送就能避免大部分情况下的一个冲突 有冲突就去解决根据实际工作情况来解决 可以合并解决可以以他的为主或者以自己看情况 比如合并:我就把合并的那一行挪一下就解决了问题在推送就可以了
|