git重要命令

sudo apt-get install git       安装


//设置,都是GitHub的用户名和注册邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"






//建立版本库
git init
//文件添加到版本库
git add filename
//把文件提交到仓库
git commit -m "wrote a readme file"      //冒号里的信息只是本身加的提示信息,不会放到文件里;最后一段字符,你输入的是什么,放进去就是什么。





//查看文件状态,是否被修改
git status
//查看文件被改了什么
git diff    //只能查看工做区的修改状况,要查看工做区文件和加入到暂存取的修改的不一样之处用 git diff HEAD -- readme.txt




//查看文件修改日志记录
git log    
//日志记录文件一行显示
git log --pretty=oneline    //显示的最开头的字符串就是commit id,id记录前面7个就够了
//版本回退(回退是从分支master放到stage)
git reset --hard HEAD^      //一个^表示上一个版本,^^上两个版本,多个能够 HEAD~100(上100个版本)
git reset --hard 17fc687878b872dbe0957609f96a35337bf28f8d    //不须要这么长,只要前面7个数字就能够了
git reset HEAD readme.txt
//查看历史命令
git reflog
在一个目录下,使用git init命令把当前目录初始化,他会在这个目录下新建一个隐藏的.git文件
git版本控制库分两个部分, 一个是工做区(Working Directory), 好比咱们如今初始化的目录下就是
                     一个是版本库(Repository)
   //git add把文件放到stage,git commit把stage里的文件所有提交到分支master
 
Git比其余版本控制系统设计得优秀,由于Git跟踪并管理的是修改,而非文件。

git diff HEAD -- readme.txt 命令能够查看工做区和版本库里面最新版本的区别



//撤销修改,丢弃工做区的修改
git checkout -- file     //git checkout 就是用版本库里的版本替换工做区的版本
场景1:当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时,用命令git checkout -- file。
git checkout -- filename
场景2当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操做。
git reset HEAD filename
git checkout -- filename
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
git reset --hard "commit id"   (HEAD~前几回,用这个命令一次就恢复了)
git reset HEAD filename
git checkout -- filename
//从版本库中删除文件
git rm filename  
第1步:建立SSH Key。在用户主目录下,看看有没有.ssh目录,若是有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,若是已经有了,可直接跳到下一步。若是没有,打开Shell(Windows下打开Git Bash),建立SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥
第2步: 登录GitHub,打开“Account settings”,“SSH Keys”页面:
而后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
为何GitHub须要SSH Key呢?由于GitHub须要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,因此,GitHub只要知道了你的公钥,就能够确认只有你本身才能推送。
固然,GitHub容许你添加多个Key。假定你有若干电脑,你一下子在公司提交,一下子在家里提交,只要把每台电脑的Key都添加到GitHub,就能够在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人均可以看到喔(但只有你本身才能改)。
添加远程库
已经在本地建立了一个Git仓库后,又想在GitHub建立一个Git仓库,而且让这两个仓库进行远程同步,这样,GitHub上的仓库既能够做为备份,又可让其余人经过该仓库来协做,真是一举多得。首先,登录GitHub,而后,在右上角找到“Create a new repo”按钮,建立一个新的仓库:repo-name
git remote add origin git@github.com:meihao1203/learngit.git   
//本地仓库与刚才新建的仓库关联
远程库的名字就是origin,这是Git默认的叫法,也能够改为别的,可是origin这个名字一看就知道是远程库。

若是在GitHub创建仓库的时候带上了README.md,push会失败,出现错误的主要缘由是github中的README.md文件不在本地代码目录中,要执行下面这个命令
git pull --rebase origin master
git pull origin master
  //个人windows电脑和Linux上都在往项目里push代码,这就形成了两个push的时候master分支不一致,这是后就要用这个命令进行分支合并,再push
//这个是直接用远程仓库的分支合并本身本地的,这样操做后本地就和远程同样,可是不安全
git fetch origin master   //首先从远程的origin的master主分支下载最新的版本到origin/master分支上
git log -p master origin/master   //比较本地的master分支和origin/master分支的差异
git merge origin/master   //合并


//推送
因为远程库是空的,咱们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在之后的推送或者拉取时就能够简化命令。
git push -u origin master    //如今github上的东西就和咱们本地的同样了
git push origin master   //之后push只要这个命令
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
关联后,使用命令git push -u origin master第一次推送master分支的全部内容;
此后,每次本地提交后,只要有必要,就可使用命令git push origin master推送最新修改;
从远程库克隆
登录GitHub,建立一个新的仓库,名字叫gitskills:
git clone git@github.com:meihao1203/gitskills.git
//从网页上下载
https://github.com/meihao1203/gitskills


git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/meihao1203/gitskills.git
git push -u origin master
相关文章
相关标签/搜索