zoukankan      html  css  js  c++  java
  • Git学习笔记

    先去申请个GitHub账号方便后面远程仓库管理

    一.准备工作

    1.安装:http://msysgit.github.io/

    2.配置账号信息:  

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

    git config --list     查看配置的信息                            

    git help config       获取帮助信息

    :使用git config命令的--global参数之后,表示当前机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的usernameEmail地址

     

     3.配置密钥(使用远程仓库必备)

    $ ssh-keygen -t rsa -C "youremail@example.com"

    一路回车,使用默认值即可,配置完后用户主目录里找到.ssh目录,里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件。

    进github官网登陆账号打开设置,点击SSH and GPG keys,创建一个key,然后复制id_rsa.pub里的内容粘贴到key,添加即可。

     

     二.新建仓库 

    $ mkdir <name>      //创建一个本地目录
    $ cd <name>        //进入目录
    $ git init         //初始化一个Git仓库    
    $ git add <file>   //添加文件到Git仓库,命令git add --all  可添加多个文件
    $ git commit -m "描述"  //提交到仓库
    $ git remote add origin git@github.com:<giihub-name>/<name>.git   //关联远程库
    $ git push -u origin master  //-u用于第一次推送master分支的所有内容到远程仓库,以后不需要用了。 

    当第一次使用Git的clone或者push命令连接GitHub时会得到一个警告,输入yes回车即可 

    也可以直接从远程现有仓库克隆

    $ git clone git@github.com:<github-name>/<name>.git

    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

    git add readme.txt 报错 pathspec 'readme.txt' did not match any files

    解决办法 
    1.手动创建一个文件 
    2.通过git命令创建touch readme.txt

    基本命令

     

    $ cat <file>    //查看文件
    $ git help   //获取命令的帮助信息
    $ pwd   //显示当前目录
    $ git rm <file-name>   //移除文件,移出后记得要git commit
    
    $ git status    //命令查看当前仓库的状态;
    $  git diff    //查看修改的内容
    $ git diff HEAD -- <name> //查看当前版本文件和远程仓库版本的区别
    
    $ git log    //查看历史记录,显示从最近到最远的提交日志。
    $ git log --pretty=oneline  //日志行状显示
    $ git reflog   //查看命令历史列表;
    
    $ git reset --hard <版本号> //直接返回到指定版本,版本号没必要写全,前几位就可以了
    $ git reset --hard HEAD^   //版本回退到上一个版本
    HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,上100个版本简写成HEAD~100
    
    $ git reset HEAD <file-name>    //取消已经暂存的文件
    $ git checkout -- <file-name>   //撤销修改,让这个文件回到最近一次git commit或git add时的状态 

     

    git 回退到某版本后,再在此版本上更新,无法push的问题

    $git reset --hard HEAD^回退版本,这种“回退”就是在否认历史,如果仅仅你自己在使用,那么强制push,命令是 $ git push -f origin

    如果是与人合作,用$ git revert <版本号>,现在查看log,发现多了一次commit,其内容就是回到了原来的那个阶段

     

    分支

     

    $ git checkout -b <branch-name>    //新建+切换到改分支
    $ git checkout -b <branch-name2> <branch-name1>    //基于分支1新建分支2并切换
    $ git branch      //查看本地分支
    $ git branch -r   //列出远端分支
    $ git branch -a    //列出所有分支
    $ git branch -v    //查看各个分支最后一个提交对象的信息
    $ git branch --merge    //查看已经合并到当前分支的分支
    $ git branch --no-merge   //查看没有合并到当前分支的分支
    
    $ git branch <branch-name>     //新建分支
    $ git checkout <branch-name>   //切换分支
    
    $ git branch -d <branch-name>    //删除分支
    $ git branch -D <branch-name>   //强制删除分支
    
    $ git merge <branch-name>    //将<branch-name>分支合并到当前分支
    $ git rebase master     //将master分之上超前的提交,变基到当前分支  

     

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

    git log --graph命令可以看到分支合并图。

     

    分支管理策略
    Git默认使用Fast forward模式,在该模式下,删除分支后,会丢弃该分支的信息;
    使用--no-ff参数禁用Fast forward方式的merge,禁用后,git会在merge时生成一个新的commit,由此从该分支历史上可以看出分支信息,
    使用命令

    $ git merge --no-ff -m '描述' <branch-name>

    完成操作;

    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

     

    标签

     

    $ git tag   //列出现有标签    
    
    $ git tag v0.1    //新建标签
    $ git tag -a v0.1 -m 'my version 1.4'    //新建带注释标签
    
    $ git checkout tagname    //切换到标签
    
    $ git push origin v1.5    //推送分支到源上
    $ git push origin --tags     //推送所有分支
    
    $ git tag -d v0.1    //删除标签
    $ git push origin :refs/tags/v0.1    //删除远程标签
    

     

      

    多人协作的工作模式: 

     

    $ git remote -v     //查看远程库详细信息
    $ git pull    //从远端仓库提取数据并尝试合并当前分支
    

     

    首先,可以试图用git push origin branch-name推送自己的修改;

    如果推送失败,则因为远程分支比你的本地更新,需要先用git pull抓取远程的新提交;

    如果合并有冲突,则解决冲突,并在本地提交;

    没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

     

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/amumustyle/p/5574184.html
Copyright © 2011-2022 走看看