git使用
基础
- 提交时,需要添加提示信息,这些信息会显示在仓库页面上,且会显示最后依次修改时的commit信息,故不同的文件展示的信息可能不同
- 展示文件夹的commit信息时,会以其内部文件中的最后一次提交为准
- 版本标志针对的是文件,而不是整个项目,只要两个文件的版本一致,即不会产生冲突
- 在每次commit前,都要pull最新的代码,然后再把此次commit给提交上去,不要积攒commit
- git checkout,用于创建和切换分支,当分支不存在时,需要使用-b参数
- git branch branchName 创建分支
- reset模式:
- 在idea,soft和mix都不会改变文件,可以用来清理无效的commit
- hard 会改变文件
- 在idea 中 ,add操作会执行git add 命令,commit操作会执行同时执行add命令和commit命令
操作
- fectch 命令,会同步远程分支到本地,以远程分支为主,会更新本地存储的远程分支的状态
- FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
- git pull 的运行过程:
- git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。
冲突情况
- 同一个文件,下拉之后,远程被修改,同时,本地也被修改;此时进行pull操作
- 此种情况下,仍然提示冲突,需要合并
- 当从远程仓库拉下最新代码后,本地修改某个文件,同时,在此期间,别人也修改了该文件,此时,进行push
- 在push时会提示冲突,需要进行合并操作
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-forLYREk-1573981295893)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1573976695582.png)]
- 合并操作完成后,需要重新push一次
- 该操作的本质为将远程代码再下拉一次,然后进行代码修改,保证本地下拉的代码是最新代码
- 本地下拉最新代码并commit之后,并没有push上去,此时远程代码版本改变
- 此时,本地无论下拉还是push,都会出现版本冲突,需要进行合并操作才能提交
- 远程修改会显示为额外分支,顺序按修改时间排序
- 本地修改a文件,同时,残酷中b文件被修改,此时,本地提交a文件:
- 此时若进行push操作,仍需要进行合并操作,将远程代码下拉到本地,然后进行提交,此操作为保持本地版本记录与远程一致,a文件的改动不会被丢弃
- 若是进行合并操作,则无影响,本地b文件会被直接更改,同时,a文件的修改操作无影响;因为a的修改的版本和远程是连贯的
分支
- 再当前分支的基础上产生新的分支,会继承之前的记录
- 分支切换时,若工作区内容没有提交,则这部分更改会被携带到其他分支,故切换分支前,需要将本分上的更改提交
- 合并分支时,若合并本地分支,会提示删除,合并远程分支时,不会提示(且两者内容可能不同)
idea 使用
- 改变远程仓库的地址:
- 通过vcs git 中的remotes 来管理远程地址
- 配置不需要提交的内容
- 不是所有的文件都要提交,不需要被提交的文件或者目录可以写.ignore文件中,可以使用.ignore插件
- 添加文件夹时,以/开头
- 不是所有的文件都要提交,不需要被提交的文件或者目录可以写.ignore文件中,可以使用.ignore插件
- 创建项目
- 现在gitlab上创建项目,得到项目的地址
- 直接push即可
- 现在gitlab上创建项目,得到项目的地址
- 分支:
- 通过右下方指定分支,切换分支时,内容随之而改变
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tPUTjznK-1573981295894)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1573979998104.png)]
- push操作时,可以选择将那个分支的内容提交到远程仓库中,同时远程仓库会建立相应的分支,不会自动合并
- 可以先选中主分支,然后点击其他分支执行merge into current 将其他分支合并到主分支中,合并操作完成后,其他分支并不会被删除,仍旧可以被使用,但其开始点为上一个合并点
- 可以通过delete来删除分支
被删除,仍旧可以被使用,但其开始点为上一个合并点 - 可以通过delete来删除分支
- 通过右下方指定分支,切换分支时,内容随之而改变
比较文件
- 在git 提交log 中,点击对应tag文件的比较,则为本tag 和上一个tag的比较
- 在文件中比较,为当前工作区中文件 ,和最新tag的比较
- 可以通过vcs git compare ,使当前文件和任意分支,任意tag的文件进行比较
删除无用标签
- 当标签过多时,可以使用reset使其回退到之前的某个tag,然后需要重新commit(tag b)一次,在push上去,此时,会提示需要merge,merge后,会将b与之前的tag全部覆盖为一个新的tag,然后执行提交(新tag的内容不能自定义)
- 若在reset后没有本地提交,则会在push时,将rest的标签全部复原
- 在reset前,要保证本地代码和远程代码相同,否则需要进行代码的合并
- 正确做法,本地可以comit多次,但直到最终确定后再push到远程;本地commit的内容再未提交前可以随意reset,不会有冲突
- reset时,会使当前的记录保持为所选中位置,在该位置后的内容都属于未提交状态,如果向将该部分内容提交shangqu,则需要再commit一次