Git常用命令总结
2016-08-31 18:48
441 查看
一、本地工作区基本操作
说明:
1.工作区:在电脑中可以看到的这个learngit文件夹就是一个工作区。
2.版本库:工作区有一个隐藏的目录.git,这不算一个工作区,而是Git的版本库
版本库中存放了很多东西,其中最重要的就是stage暂存区,还有Git为我
们自动创建的第一个分支master,以及指向这个master的一个指针HEAD.
说明:
命令git checkout --readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到刚添加到暂存区后的状态。
总之,就是让这个文件回到最近一次gitcommit或gitadd时的状态,
另外命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。
gitcheckout -- test.txt git checkout其实是用版本库里的版本替换工作区的版本,
无论工作区是修改还是删除,都可以“一键还原”。
二、Github远程仓库基本操作
使用Github作为远程仓库
可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSHKey的秘钥对,
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
2.
登陆GitHub,打开“Accountsettings”,“SSHKeys”页面:
然后,点“AddSSH
Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支
内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,
在以后的推送或者拉取时就可以简化命令,直接使用gitpush
origin master。
GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。
实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
三、分支管理
说明:
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。
截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指
向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,
就表示当前分支在dev上。从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev
指针往前移动一步,而master指针不变。
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接
把master指向dev的当前提交,就完成了合并。
多人协作的工作模式通常是这样:
首先,可以试图用git
push origin branch -name推送自己的修改;
如果推送失败,则因为远程分支比你的本地分支的版本新,需要先用gitpull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用gitpush
origin branch-name推送就能成功!
如果git
pull提示“notracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git
branch --set-upstream branch-name origin/branch-name。
1. git init //创建版本库/仓库 2. git status //查看仓库当前的状态信息 3. git diff filename //查看当前文件和上次提交的文件有何区别 4. git add filename //追踪文件,.表示当前改动的所有文件,实际上就是提交到暂存区 5. git commit -m "info" //提交追踪的文件(暂存中的文件)到仓库 6. git log //得到由最近到最远提交的历史记录 7. git reset --hard HEAD^ //回退到上一个版本,HEAD表示当前版本 8. git reflog //得到每次命令记录,包括commit_id、操作类型 9. git reset --hardcommit_id //回到回退之前的版本
说明:
1.工作区:在电脑中可以看到的这个learngit文件夹就是一个工作区。
2.版本库:工作区有一个隐藏的目录.git,这不算一个工作区,而是Git的版本库
版本库中存放了很多东西,其中最重要的就是stage暂存区,还有Git为我
们自动创建的第一个分支master,以及指向这个master的一个指针HEAD.
10.git diff HEAD -- readme.txt //查看工作区和版本库里面最新版本的区别 11.git checkout -- file //丢弃工作区的修改
说明:
命令git checkout --readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到刚添加到暂存区后的状态。
总之,就是让这个文件回到最近一次gitcommit或gitadd时的状态,
另外命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。
12.git reset HEAD file //把暂存区的修改撤销掉(unstage),重新放回工作区 //使用后暂存区是干净的,工作区有修改 13.删除文件:从版本库中删除该文件,那就用命令gitrm删掉,并且gitcommit 14.有一种情况是在工作区中文件删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
gitcheckout -- test.txt git checkout其实是用版本库里的版本替换工作区的版本,
无论工作区是修改还是删除,都可以“一键还原”。
二、Github远程仓库基本操作
使用Github作为远程仓库
1. 创建SSHKEY:ssh-keygen-t rsa -C "youremail@example.com"
可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSHKey的秘钥对,
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
2.
登陆GitHub,打开“Accountsettings”,“SSHKeys”页面:
然后,点“AddSSH
Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
3. git remote add origingit@github.com:michaelliao/learngit.git:把一个已有的本地仓库与之关联 4. git push -u originmaster:是把当前分支master推送到远程
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支
内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,
在以后的推送或者拉取时就可以简化命令,直接使用gitpush
origin master。
5. git clonegit@github.com:michaelliao/gitskills.git:克隆远程仓库
GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。
实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
三、分支管理
说明:
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。
截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指
向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,
就表示当前分支在dev上。从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev
指针往前移动一步,而master指针不变。
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接
把master指向dev的当前提交,就完成了合并。
1.git checkout -b dev //创建dev分支,然后切换到dev分支 2.git branch dev //创建dev分支 3.git checkout dev //切换到dev分支 4.git branch //查看当前分支 5.git merge dev //合并指定的分支到当前分支 6.git branch -d dev //删除指定的分支 7.git log --graph //查看分支合并图 8.git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作 9.git stash list //显示“储藏”的记录信息(stash内容),每次“储藏”作为一条记录信息显示 9.git stash apply //将“储藏”的文件恢复到工作区,但是对应的stash内容不会删除 10.git stash drop //删除stash内容 11.git stash pop //恢复的同时将stash内容删除了 12.git branch -D <name> //删除一个没有被合并过的分支,如果使用-d会报错 13.git remote //查看远程仓库的名称,远程仓库默认名称为origin 14.git remote -v //查看远程仓库的详细信息 15.git push origin master //把该分支上的所有本地提交推送到远程库 16.git pull //把最新的提交从origin/dev抓下来
多人协作的工作模式通常是这样:
首先,可以试图用git
push origin branch -name推送自己的修改;
如果推送失败,则因为远程分支比你的本地分支的版本新,需要先用gitpull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用gitpush
origin branch-name推送就能成功!
如果git
pull提示“notracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git
branch --set-upstream branch-name origin/branch-name。