Git是什么
Git是目前世界上最先进的分布式版本控制系统,重点是它不仅开源而且免费!当多个开发人员协调工作时,能有效监听修改历史,且可以离线操作,受众非常广。
Git的安装和设置
下载并安装Git,去Git官网下载windows下面的最新版本即可(本人电脑是win7 32位)。接下来一直点next安装,若有疑问也可去网上搜安装教程。
安装完成后,鼠标右键会出现下图,点击Git Bash,会跳出一个命令行窗口。
命令行窗口如下:
安装完成后设置用户名和邮箱1
2$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com" //--global参数表示这台机器上所有的仓库都会使用这个配置
Git的操作
创建仓库
创建版本库即创建仓库(reposity)1
2
3$ mkdir xx //创建一个新的文件夹
$ cd xx //进入这个新建的文件夹
$ pwd xx/xx/xx //显示当前仓库位于何处(即当前的目录)
注意: 请确保所有的目录名都不包含中文
初始化仓库
1 | $ git init |
git init命令可以把新建的文件夹变成git可以控制管理的仓库。
提交文件到仓库
git add 添加文件到仓库
1
2$ git add 文件名 //添加某个指定的文件
$ git add . //添加全部文件git commit 把文件提交到仓库
1
$ git commit -m "此处为提交的内容说明"
查看状态
git status命令可以告诉我们当前的仓库状态,如是否有文件被修改、是否有未提交的文件等。
但是git status只能告诉我们仓库的状态,若是想知道当前仓库具体发生了那些改变需要用git diff命令,他可以告诉我们详细的修改内容。1
2$ git status //查看仓库状态
$ git diff //查看详细的修改内容
git log命令可以告诉我们所有的详细的历史操作记录。
git log –pretty=oneline 命令会显示精简版的历史操作记录。1
2$ git log //显示从最近到最远的提交日志(提交历史),比较详细
$ git log --pretty=oneline //显示从最近到最远的提交日志(提交历史),简略
版本回退
在Git中,用HEAD来表示当前版本,HEAD^表示还是那个一个版本,那么上上一次版本就是HEAD^^。
版本的回退命令是 git reset。1
$ git reset --hard HEAD^ //回退到上一个版本
若是想回到原来的版本(即原来的HEAD版本),需要用git reflog命令,他可以记录你的每一次命令。
在git reflog命令下找到你想要的版本的commit id后用git reset –hard commit id 命令即可返回。1
2$ git reflog //显示你所有的命令历史
$ git reset --hard commit_id //利用commit id 回到想要回到的版本
撤销修改
git checkout –文件名称 可以丢弃工作区的修改,让这个文件回到最后一次git commit或者git add的状态。
注意:此命令是丢弃工作区的修改,即修改的文件还没有git add或者git commit。1
$ git checkout -- 文件名称
修改过但是你不想要的文件已经Git add到暂存区,但并没有git commit
用命令git reset HEAD file可以把暂存区的修改撤销掉,重新放回工作区1
24 git reset HEAD 文件名 //把暂存区的东西回退到工作区
$ git checkout -- 文件名 //丢掉工作区的修改注意:git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
- 若是已经Git commit了,直接版本回退即可。
文件删除
1 | $ rm 文件名 //直接删除文件 |
远程仓库
本地推送到远程
- 注册github账号。
- 生成并设置密匙,新建github仓库。
运行如下命令将本地仓库和远程仓库关联。
1
$ git remote add origin git@github.com:你的用户名/你的仓库名.git
通过如下命令将本地库的内容推送到远程库
1
$ git push -u origin master //只有第一次推送时候才需要-u
远程克隆至本地
- 新建github仓库并选择Initialize this repository with a README。
- 使用如下命令将远程仓库克隆至本地:
1
$ git clone git@github.com:你的账户名/你的仓库名.git
分支管理
创建并应用分支
使用如下命令创建并切换至分支dev1
$ git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:1
2
3$ git branch dev //创建新分支
$ git checkout dev //切换至新分支
Switched to branch 'dev'
然后,用git branch命令查看当前分支,这个命令会列出所有分支,当前分支前面会标一个*号。1
2
3$ git branch
* dev
master
切换回master分支1
$ git checkout master
将分支dev的工作成果合并到master分支上,当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。1
$ git merge dev //git merge命令用于合并指定分支到当前分支
注意:通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
准备合并dev分支,请注意–no-ff参数,表示禁用Fast forward:1
$ git merge --no-ff -m "merge with no-ff" dev
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
删除dev分支1
$ git branch -d dev
用git log –graph命令可以看到分支合并图。
命令总结
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
分支的临时存储
Git提供了一个stash功能,可以把当前进行中的工作存储起来以备后续。1
$ git stash
用stash list可以查看分支的储存地址1
$ git stash list
用git stash apply恢复,但是恢复后,stash内容并不删除.
用git stash pop,恢复的同时把stash内容也删了。1
2$ git stash apply //恢复后不删除stash
$ git stash pop //回复的同时删除stash