Git

  基本操作:

  1.git config --global user.name '  '        //配置名字

  2.git config --global user.email ' '          //配置邮箱

  3.git init                                //初始化一个Git仓库

  4.git add  ‘  ’ (git add -A)            //把文件添加到暂存区,可反复多次使用,添加多个文件;

  5.git commit -m  '   '              //把暂存区的所有内容提交到当前分支

  6.git status        //查看仓库当前状态

  7.git diff            //看具体修改了哪些内容

  8.git log  --pretty=oneline              //显示从最近到最远的提交日志,加上后面这句话,看的更清楚

  关于回退:

  9.git reset --hard HEAD^              //回退到上一个版本。在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写成HEAD~100。例如先回退到上一个版本(HEAD^),然后会发现最新的那个版本已经不见了,如果想再次回到最新的那个版本,就通过git log找到commit id,再通过git reset --head commit_id回退 ,这个commit id写前几位就可以了,没必要写全。如果commit id找不到了,可以通过git reflog查看你之前的每一次命令。

  PS:必须先git add 文件放到暂存区再git commit提交,否则无效

  10.git checkout -- file                //丢弃工作区的修改 。一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;另一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

  PS:就是你在电脑上看到的目录,比如目录下gitskills里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

  11.git reset HEAD <file>        //撤销掉暂存区的修改,重新放回工作区,然后再通过git checkout -- file 撤销掉工作区的修改。

  自我理解:工作区 --> 暂存区(git checkout) -->版本库(git reset,git checkout) -->远程版本库?

  回退总结:

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  12. rm file             //删除文件,如果是真的想要删除这个文件,在执行完rm以后,再用git rm(此时同git add操作),然后再提交,这样在工作区和版本库中就都没有了这个文件。如果是删错了,用git checkout -- test.txt回退就可以了,因为版本库里面还有这个文件。

  远程仓库:

  13.ssh-keygen -t rsa -C "youremail@example.com"        //常见SSH key。设置成功以后可以在用户主目录(C盘-->用户/user-->Administrator)下找到.ssh目录,里面有id_rsaid_rsa.pub两个文件

  PS:在设置ssh的时候最后一步记得用ssh -T git@github.com验证,否则把本地仓库推送到远程仓库的时候会提示remote origin already exists.参考http://phpstudy.php.cn/c.php/35363.html

  14.git remote add origin https://github.com/username/reposityname.git     //把本地仓库与远程仓库相关联

  15.git push -u origin master                 //把本地仓库内容推送到远程仓库

  PS:从这时候开始只要本地仓库提交了,就可以直接通过git push origin master推送内容了

  从远程库克隆:

   16.git clone git@github.com:用户名/仓库名.git     (git clone github上的https地址)   //都可以,Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

  分支管理:

  17.git checkout -b 分支名         //创建加切换分支

  18.git branch                        //查看当前分支     git branch -r(远程分支)         git branch -a  (本地分支和远程分支)

  19.git checkout 分支名            //切换分支

  20.git merge 分支名               //用于合并指定分支到当前分支(只能看到当前分支信息)         git merge --no-ff -m ' 提交信息' 分支名 (可以从分支历史上看到分支信息)

  PS:合并分支时,加上-no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  21.git branch -d 分支名            //删除分支

  22.cat 文件名                        //查看文件内容

  23.git log --graph --pretty=oneline --abbrev-commit                //查看分支历史

  24. git branch 分支名                 //创建一个新的本地分支,需要注意,此处只是创建分支,不进行分支切换,在当前分支的基础上,创建新分支,所以新建的分支的基本情况和当前分支一模一样

  25.git reflog  查看所有的操作记录

 PS:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。

   

 
原文地址:https://www.cnblogs.com/yaoya/p/9264554.html