您的位置:首页 > 其它

Git常用命令总结

2016-08-31 18:48 441 查看
一、本地工作区基本操作

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: