zoukankan      html  css  js  c++  java
  • git常用命令及多人协同开发及遇到的问题

    一)git多人协同开发

    假如现在有dev分支和master分支

    1. git add . 提交自己的代码到暂存区。
    2. git add -u:将文件的修改、文件的删除,添加到暂存区。
      git add .:将文件的修改,文件的新建,添加到暂存区。
      git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区。
    3. -u就是update的意思,只会标记本地有改动(包括删除和修改)的已经追踪的文件
    4. git commit -m '备注信息' 提交代码到仓库。
    5. git push  推送代码到dev分支。
    6. git checkout master 切换到master分支。
    7. git pull 先拉取最新代码。
    8. git merge dev 合并代码到master分支。
    9. 遇到冲突解决冲突并手动合并。
    10. git checkout dev切换到dev分支。
    11. git stash 临时保存现场。
    12. git stash pop 返回现场。
    13. git stash 在文件冲突时会继续暂存。
    14. 在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。(cherry-pick vt. 择优挑选)。
    15. git stash list  查看stash内容。
    16. git branch dev 创建dev分支。
    17. git checkout -b dev  或  git switch -c dev 创建并切换dev分支。
    18. git push origin localbranch:localbranch 把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名)
    19. git push origin :localbranch 删除远程分支 我比较喜欢的简单方式,推送一个空分支到远程分支,其实就相当于删除远程分支 也可以使用  git push origin --delete localbranch
    20. git branch -d dev 删除分支  git branch -D dev 强删分支。
    21. 删除最后一次远程提交

      方式一:使用revert

      git revert HEAD
      git push origin master

                方式二:使用reset

                git reset --hard HEAD^
                git push origin master -f  (谨慎使用)

           17. git 暂时存储

             如: dev分支正在开发的代码开发到一半,突然其他分支有bug需要改,可以先暂存。

       git stash, git stash save  '备注'

       git stash show, git stash list  查看暂存

       git stash pop,  git stash pop stash@{0, ...} 取出

               git stash apply stash@{...}  取出

       git stash drop stash@{...} 删除

        


    二者区别:

    revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
    reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

     17. git add 撤回

    git status 先看一下add 中的文件 
    git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 
    git reset HEAD XXX.js 就是对某个文件进行撤销了

    18. git commit 撤回

    git reset --soft HEAD^  HEAD^上一个版本  == HEAD~1 ... HEAD~100 ... HEAD~n

    这样就成功的撤销了你的commit

    注意,仅仅是撤回commit操作,您写的代码仍然保留。

    几个参数含义:

    --soft 

    不删除工作空间改动代码,不撤销git add . 撤销git commit 

    --mixed

    不删除工作空间改动代码,撤销git add . 并且 撤销 git commit
    这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
    --hard
    删除工作空间改动代码,撤销 git add . 并且 撤销 git commit
     

    顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:

    git commit --amend

    此时会进入默认vim编辑器,修改注释完毕后保存就好了。

    vim 操作方法

    按 i 进入编辑

    按 esc 退出编辑进入命令

    按 :w 保存

    按 :q 退出

    按 :wq 保存退出

    互联网参考链接:https://www.cnblogs.com/hezhiyao/p/9418468.html

    二)git 常用命令或其他

    1. git branch 或 git branch -a  查看分支(前面带*号的为当前分支)。
    2. git remote 或 git remote -v 查看远程信息。
    3. git status 查看当前状态
    4. git log 或 git log --graph --pretty=oneline  等查看日志信息。
    5. pwd 显示当前所在工作目录的全路径.
    6. ls 列出目录下的文件。
    7. :wq! 或 :q! 或q 一些命令窗口的退出方式。
    8. ls 某个文件夹 如: src/customer/...  列举文件夹下文件
    9. git log  或  git log --oneline 或 git log --pretty=oneline

    三)git 操作遇到的问题

    1. 出现 .MERGE_MSG.swp 。 

    解决方法详细参考链接:https://blog.csdn.net/qq_32452623/article/details/78395832?locationNum=3&fps=1 。

    来自互联网参考学习:https://www.liaoxuefeng.com/wiki/896043488029600/897271968352576

    git remote -v | --verbose 查看项目远程地址

    mkdir test  创建一个文件夹 test

    mkdir -p | --parents test/test1  如果存在 test 文件夹就在其下创建 test1 文件夹, 如果没有父文件夹就先创建父文件夹 test。

    rmdir test 移除一个文件夹

    rmdir -p test/test1 移除test1及其父级 test

    rmdir test/test1 移除 test1

    一、通常我们修改一个文件并且将文件提交到本地的分支并且推送到远程服务器的操作如下:
    
    git add .
    git commit -m "some str"
    git push
    
    二、我们也可以将上面的三大步简化一下:
    git commit -am "some str"
    git push
    
    三、针对第一步中的git  add .命令的作用就是将本地修改过的文件且已经追踪的文件添加到本地的暂存区,然后使用git commit -m "str"命令将暂存区的代码提交到本地仓库,最后将本地仓库的代码推送到远程服务器端;
    第二部其实就相当于第一步的结合,但是有区别的是git commit -am 'str'命令只能提交已经追踪过且修改了的文件,新添加的文件就必须使用第一步的命令; 
    

      git 某些错误参考:https://www.cnblogs.com/kevingrace/p/6259905.html

      git 提交报错  以下错误 解决办法 

    $ git commit -m 'fixed'
    husky > pre-commit (node v10.16.3)
    Stashing changes... [started]
    Stashing changes... [skipped]
    → No partially staged files found...
    Running linters... [started]
    Running tasks for src/**/*.{js,vue} [started]
    eslint --fix [started]
    eslint --fix [failed]
    →
    Running tasks for src/**/*.{js,vue} [failed]
    →
    Running linters... [failed]
    
    
    
    × eslint --fix found some errors. Please fix them and try committing again.
    
    D:车享
    obotvoice-robot-uivoice-robot-adminsrcviewslayoutLayout.vue
    20:5  error  The "Navbar" component has been registered but not used  vue/no-unused-components
    
    ✖ 1 problem (1 error, 0 warnings)
    husky > pre-commit hook failed (add --no-verify to bypass
    

      有时候会有413等文件过大报错:解决办法1.网上有改大小等没试成功过 2.检查某些文件是不是不改提交却提交了用.gitignore过滤下 3.可以文件分开提交。

    网友参考:https://www.cnblogs.com/wangduojing/p/12509161.html

  • 相关阅读:
    static、final、this、super关键
    细节二:参数、引用类型、实例化
    枚举类型
    单例模式
    细节一:字符串、switch、默认值、数组
    类属性和类方法
    装饰器模式
    TreeSet
    可见参数和增强for以及自动拆装箱
    静态导入
  • 原文地址:https://www.cnblogs.com/jiaqi1719/p/9817551.html
Copyright © 2011-2022 走看看