您的位置:首页 > 其它

git常用命令学习

2017-03-22 15:58 211 查看

安装git

windows下请下载安装 Git for windows;

Linux下直接输入:

sudo apt-get install git


基本命令

git config –global user.name “Your Name”

git config –global user.email “email@example.com”

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

git init :即可把当前目录变成仓库

git add : 把文件添加到仓库 (这一步是添加到git的暂存区),可以多次使用git add添加多个文件

git add . : 表示添加所有文件

git commit -m :”修改信息” 这一步是提交上一步(git add)的内容。

git status : 查看仓库的状态,看有没有需要提交的,没有则会显示仓库是空的,是clean(干净)的。

git diff : 查看修改了什么内容

git log : 显示从最近到最远的提交日志

git reset -hard HEAD^

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交的版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

git reset -hard 3628164

这个命令可以回到指定的某个版本 3628164是git提交的版本号的前面几个数字,因为git提交的版本号都是很长的数字,所以只需要写前面几个数字即可,但是也不只写一两个数字,那样git就会找到几个版本不知道回到哪一个 。

git reflog : 这个可以查看你每一次的命令,git用来记录你每一次命令的。

git checkout – file : 可以丢弃对工作区的修改

git reset HEAD file : 可以把暂存区的修改撤销掉(unstage),重新放回工作区

git checkout – file : 意思就是,把file文件在工作区的修改全部撤销,这里有两种情况:

一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令

删除文件:

如果在仓库中删除了某个文件,那么有两个选择

一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

git rm test.txt

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

git checkout – test.txt

添加和克隆远程库

添加远程库

添加远程库之前首先要在本地生成一个rsa的密钥,要把公钥添加到github你的帐号里面,这样你就可以克隆和关联远程文件。

输入命令:

ssh-keygen -t rsa -C"youremail@example.com"


使用上述语句 生成rsa密钥

系统会提示你保存在哪里,你按照提示操作即可;

不在你的github帐号中添加rsa密钥的话会出现以下错误提示:

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.


所以必须先把你的公钥添加到你的github帐号里面,这样你就可以克隆和关联任何远程文件了。

在github上创建一个仓库后,根据新仓库的提示输入下列命令:

git remote add origin https://github.com/AngryCodeDog/learngit.git

然后就可以关联上仓库了。

可以直接拉取:git pull origin master(如果你的仓库是完全新建的,这样就会在本地创建一个master分支,并且下载下远程仓库的内容,在本地文件夹也可以直接查看的到下载下来的文件)

git fatch origin master //这个是拉取远程仓库最近的更新内容,下载到本地后,你是直接查看不到文件的,因为下载到了某个分支,必须用git命令才可以查看。然后查看本地与远程文件有没有什么不一样,

git fetch [remote-name]此命令会到远程仓库中拉取所有你本地仓库中还没有的数据.运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个 分支合并到本地,或者只是取出某个分支,一探究竟.

如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下.所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新).有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并.(说 明:事先需要创建好远程的仓库,然后执行:

git remote add [仓库名] [仓库url],
git fetch [远程仓库名],


即可抓取到远程仓库数据到本地,再用

git merge remotes/[仓库名]/master


就可以将远程仓库merge到本地当前branch.这种分支方式比较适合独立-整合开发,即各自开发测试好后 再整合在一起.比如,Android的Framework和AP开发.

克隆远程库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

和添加远程库一样,要先在github中添加你的rsa密钥,然后再克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

git clone git@github.com:yourrepository/gitskills.git


地址是你自己的仓库,这样即可克隆仓库到本地;

git查看远程仓库地址:

git remote -v

第一次推送输入:

git push -u origin master


由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

以后就只要输入:

git push origin master


小结:

要关联一个远程库,使用命令

git remote add origin git@server-name:path/repo-name.git;


关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令

git push origin master


推送最新修改;

git分支使用

Git鼓励大量使用分支:

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>


注意

配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

git查看global全局变量:

git config -l


当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:

git submodule update –init –recursive

即可将子模块内容下载下来后工程才不会缺少相应的文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git 版本控制系统