美文网首页
Git常用命令和常见问题

Git常用命令和常见问题

作者: 回到唐朝做IT | 来源:发表于2020-03-03 15:34 被阅读0次

    git官网

    一、git常用命令

    1.常用命令
    git clone 地址             // 克隆远程仓库
    git clone -b 分支名 地址   // 克隆分支的代码到本地
    git status                // 查看状态
    git add 文件名            // 将某个文件存入暂存区
    git add b c              //把b和c存入暂存区
    git add .                // 将所有文件提交到暂存区
    git reset HEAD test.txt   //撤回暂存区文件到工作区
    git reset .              //撤回所有暂存区文件到工作区
    git add -p 文件名        // 一个文件分多次提交
    git stash -u -k         // 提交部分文件内容 到仓库 例如本地有3个文件 a b c 只想提交a b到远程仓库 git add a b 然后 git stash -u -k 
                            //再然后git commit -m "备注信息" 然后再push push之后 git stash pop 把之前放入堆栈的c拿出来 继续下一波操作
    git commit -m "提交的备注信息"  // 提交到仓库
    //若已经有若干文件放入仓库,再次提交可以不用git add和git commit -m "备注信息" 这2步, 直接用
    git commit -am "备注信息"      // 将内容放至仓库 也可用git commit -a -m "备注信息"
    git branch -d 分支名           // 删除分支
    git log --oneline  //查看提交信息   英文状态按 q 取消
    
    
     //常用提交步骤,多人合作开发,push之前先commit防止冲突
    git add . ==> git commit -m '提交信息'  ==> git push      
    
    2.分支
    git branch 分支名       // 新建分支
    git branch             // 查看当前所有分支
    git checkout 分支名    // 检出分支
    git checkout -b 分支名 // 创建并切换分支
    git checkout commitId 文件名(文件路径下的文件名)// 还原这个文件到对应的commitId的版本
    //(例如src/page/attendance/attendanceSum.vue我想把它还原到2个版本之前 首先git log //src/page/attendance/attendanceSum.vue找到对应想要还原的版本
    //复制版本提交的commitID 然后执行git checkout commitID src/page/attendance/attendanceSum.vue
    //这样就把attendanceSum.vue这个单个文件 还原到了对应版本)
    git branch -v                  // 查看分支以及提交hash值和commit信息
    git merge 分支名               // 把该分支的内容合并到现有分支上
    git branch -d 分支名           // 删除分支
    git branch -D 分支名           // 强制删除 若没有其他分支合并就删除 d会提示 D不会
    git branch -m 旧分支名 新分支名 // 修改分支名
    git branch -M 旧分支名 新分支名 // 修改分支名 M强制修改 若与其他分支有冲突也会创建(慎用)
    git branch -r                 // 列出远程分支(远程所有分支名)
    git branch -a                 // 查看远程分支(列出远程分支以及本地分支名)
    git fetch                     // 更新remote索引
    git push -u origin 分支名      // 将本地分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push 也可解决 git建立远程分支关联时出现fatal ... upstram的问题
    
    3.远程操作
    git remote -v                     //显示所有远程仓库
    git remote show <remote>          //显示某个远程仓库信息
    git remote add <remoteName> <url> //添加一个新的远程仓库,并命名
    git fetch <remote>                //下载远程仓库的所有变动
    git pull <remote> <branch>        //下载远程仓库的变化,并与本地分支合并
    git push <remote> <branch>        //上传本地指定分支到远程仓库
    git push <remote> --force         //强行推送当前分支到远程仓库,即使有冲突
    git push <remote> --all           //推送所有分支到远程仓库
    git push --tags                   //上传所有标签
    
    4.撤回操作
    git reset HEAD test.txt      //撤回暂存区文件到工作区
    git reset .                  //撤回所有暂存区文件到工作区
    git checkout [file]          //恢复暂存区的指定文件到工作区
    git chectout [commit] [file] //恢复某个commit的指定文件到暂存区和工作区
    git rm --cached [file]       //将指定文件从暂存区删除,工作区依然存在,避免提交了
    git reset [file]             //重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
    git reset --hard             //重置工作区与暂存区,与上一次commit保持一致
    git reset [commit]           //重置当前分支的指针为指定commit,同时重置暂存区,工作区不变
    git reset --hard [commit]    //重置当前分支的hard为指定commit,同时重置暂存区与工作区,与指定commit一致
    //如:git reset --hard a1d566d      git reflog查出要回退到merge之前的版本号
    
    5.对比工作区,暂存区,仓库的差异
    git diff                    // 查看变更 工作区与暂存区的差异比对
    git diff --cached           // 暂存区与提交版本的差异
    git diff HEAD               // 工作区与仓库中最后一次提交版本的差别
    git diff 版本哈希值 版本哈希值 // 查看这2个版本哈希之间的区别
    或者 git diff HEAD~数字 HEAD~数字
     
    git tag tt HEAD~4          //给倒数第5次提交打一个tag tag名字是tt
    git diff tt                // 就是倒数第5个版本与第一个版本之间的差异
    git diff --cached tt       //暂存区与倒数第5个版本之间的比对
    
    6.查看提交信息
    git log --oneline  //查看提交信息   英文状态按 q 取消
    git log            //自己提交时间记录
    git reflog         //查出要回退到merge之前的版本号
    git show HEAD      // 查看最后一次提交修改的详细信息 也可以用git show 哈希值 查看对应的内容
    git show HEAD^     // 查看倒数第二次的提交修改详细信息
    git show HEAD^^ 或者git show HEAD~2 //查看前2次变更
    git show HEAD 或 git show 哈希值 或者git show tag(标签名) //都可以查看最近一次提交的详细信息
    
    7.git忽视文件

    在仓库根目录创建一个 .gitignore文件

    (1)node_modules    //忽视指定文件
    (2)css/index.js    //忽视指定文件夹中的指定文件
    (3)css/*.js        //忽视css文件夹下的所有js文件
    (4)css             //忽视整个文件夹
    
    
    8.创建文件命令
    touch a         // 创建一个a文件,自定义文件类型  a.html
    echo 1234 >> a // 把1234这个内容放入a文件
    cat a         // 打开a文件 读取出a文件中的内容
    mkdir test   // 创建test文件夹
    rm 文件名   // 删除文件
    pwd       // 打印当前工作路径
    
    9.文件信息
    ls          // 查看当前路径下面的所有文件名
    ls 文件夹名 // 查看对应文件夹中的内容
    ls -l     // 拉出最近git提交记录以及对应修改的文件名
    ls -l -a // 拉出最近git提交记录以及对应修改的文件名,隐藏的文件也会显示
    
    10.cd快速切换路径
    cd ~          // 将工作路径快速切换到root
    cd -          // 将工作路径切换到上一状态
    cd ../        // 切回到上一个工作路径
    cd 文件夹名   // 进入某个目录
    cd /         // 进入根目录
    
    Tips常用名词:

    常用名词
    Workspace:工作区
    Index / Stage:暂存区
    Repository:仓库区(或本地仓库)
    Remote:远程仓库
    功能(feature)分支
    预发布(release)分支
    修补bug(fixbug)分支

    二、常见问题

    问题1:[暂存区无内容]
    E:\QC\review_vue\shop_admin>git commit -m '测试提交'
    nothing to commit, working tree clean
    
    解决:

    错误的原因就是:暂存区没东西或者东西都提交到版本库当前分支

    工作区:也就是本地文件的区域
    版本库中暂存区:就是使用git add命令之后,本地工作区的文件加到暂存区
    版本库当前分支:也就是使用 git commit 之后,暂存区的东西到版本库当前分支。

    问题2:[换行问题]
    E:\QC\review_vue\shop_admin>git add .
    warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory
    
    解决2:

    你是 Windows 程序员,且正在开发仅运行在 Windows 上的项目,可以设置 false 取消此功能,把回车保留在版本库中:

    //提交检出均不转换
    $ git config --global core.autocrlf false
    
    问题3:[远程无仓库]
    E:\QC\review_vue\shop_admin>git push
    fatal: No configured push destination.
    Either specify the URL from the command-line or configure a remote repository using
    
        git remote add <name> <url>
    
    and then push using the remote name
    
        git push <name>
    
    解决3:

    因为没有远程仓库,所以没法提交,需在码云中创建远程仓库
    1.创建完后,执行添加命令git remote add <name> <url>
    <name>:自定义变量名origin
    <url>:创建仓库后的SSH地址

    git remote add origin git@gitee.com:XXXXX/shoping_admin.git
    

    2.再次提交到远程仓库

    git push -u origin master
    

    tips:不用每次提价都需要加上-u,只要第一次提交需要加上-u,表示提交的内容和当前的远程仓库绑定,以后提交只需要命令git push就可以了

    问题4 [缺少known_hosts文件]
    E:\QC\review_vue\shop_admin>git push -u origin master
    The authenticity of host 'gitee.com (212.xx.xx.xxx)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    
    解决4:

    在新生成密钥之后,在.ssh文件夹(之前的文章有提到过)中少了一个known_hosts文件,本来密钥文件应该是三个,现在是两个,便报了这样的错误,此时选择yes回车之后,便可,同时生成了缺少了的known_hosts文件:

    问题5 [push、clone无权限,无存储ssh密钥]

    clone或者push出现没有访问权限情况

    git@gitee.com: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
    解决5

    出现改问题的原因是git服务器没有存储本地ssh密钥。
    1.步骤一、打开终端按如下命令输入自己码云账号来生成 sshkey:

    ssh-keygen -t rsa -C "xxxxx@xxxxx.com" 
    

    输入提示完成后三次回车,看到类似下面图形表示已经生成 ssh key。
    | . . |
    |o o * . . ...|
    |E oo o . o.. |
    | B . o S . ... |
    | .B=+%. |
    +----[SHA256]-----+

    2.步骤二:输入如下命令可查看已经生成的ssh key(若提示cat不是内部命令,可关掉终端,再次输入查看)

    cat ~/.ssh/id_rsa.pub
    

    具体步骤可以参考:码云生成/添加SSH公钥步骤
    若上面方法是依然查看不了已生成的ssh key,可以直接找到文件目录就是:C:\Users\Administrator/.ssh/id_rsa,用记事本打开id_rsa.pub复制里面的内容到码云添加公钥处即可。
    可能有的目录不在这,可以在命令行直接输入ssh-keygen.exe回车键后也可看到文件位置。
    id_rsa:私钥,放在自己本地电脑就好
    id_rsa.pub:公钥,复制里面内容给到码云或者GitHub的SSH公钥处

    问题6 [提交远程无分支]
    E:\QC\review_vue\shop_admin>git push
    fatal: The current branch chuang has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
        git push --set-upstream origin chuang
    
    解决6

    出现上述问题,说明在本地新建了一个分支,远程并没有感知到本地新建的这个分支,提示运行 git push --set-upstream origin chuang与远程仓库建立关联,运行后即可通过git push推送成功。

    问题7 [提交合并需解释]

    Please enter a commit message to explain why this merge is necessary
    Please enter a commit message to explain why this merge is necessary.**
    请输入提交消息来解释为什么这种合并是必要的

    image.png
    解决7

    git 在pull或者合并分支的时候有时会遇到这个界面。可以不管(直接下面3,4步),如果要输入解释的话就需要:
    1.按键盘字母 i 进入insert模式
    2.修改最上面那行黄色合并信息,可以不修改
    3.按键盘左上角"Esc"
    4.输入":wq",注意是冒号+wq,按回车键即可

    问题8: remote origin already exists错误解决办法
    E:\QC\H5\full_screen_plugin>git remote add origin git@gitee.com:three_cases_demo/full_screen_page.git
    fatal: remote origin already exists.
    
    解决8 (报错远程起源已经存在 )

    1.先删除远程 Git 仓库

    $ git remote rm origin
    

    2.再重新添加远程 Git 仓库即可

    $ git remote add origin git@github.com:xxxxxxxxxxxxxxxxxx
    

    【后续会继续补充】

    相关文章

      网友评论

          本文标题:Git常用命令和常见问题

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