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。

     

  • 相关阅读:
    第五周:函数
    第四周:循环控制
    第三周:循环
    第二周:判断
    第一周:简单的计算程序
    cocos2dx-lua采用pbc解析proto问题修正
    cocos2dx 3.9.1 mac模拟器log输出bug修正
    基于dragonbones的cocos2dx lua封装
    EF 3.0 要开启 数据库连接复用 MultipleActiveResultSets=true
    找不到资产文件“xxxxobjproject.assets.json
  • 原文地址:https://www.cnblogs.com/amumustyle/p/5574184.html
Copyright © 2011-2022 走看看