Git是什么
Git是一款免费、开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,功能强大。
与常用的版本控制工具CVS、Subversion等不同的是它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git的速度很快,最为出色的是它的合并跟踪的能力。
Git当初是Linus Torvalds为了帮助管理Linux内核源码替换BitKeeper 而开发的一个开放源码的版本控制软件。
Git安装与配置
Git的官网网址:
在各个平台上都有对应版本。安装过程比较简单,过程略。
安装完成后,可以配置客户端的用户和邮箱,方便clone,pull和push。
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
--global:表示全局配置,会在用户的HOME目录下的.gitconfig中加入配置。Windows下的home目录一般为:C:\Users\用户名.gitconfig。
例如:
$ git config --global user.name "Misout"
$ git config --global user.email "292814282@qq.com"
当然Git还有很多配置,例如配置用户和密码,避免每次都需要输入用户名和密码。在此不是重点,略。
Git常用命令
● Workspace:工作区
● Index / Stage:暂存区
● Repository:仓库区(或本地仓库)
● Remote:远程仓库
【分支】
1.创建本地分支:git checkout -b dev
2.创建远程分支(分两步):
$ git checkout -b dev
$ git push origin dev:dev
3.checkout远程分支:git checkout -b dev origin/dev
4.列出所有远程分支:git branch -r
5.列出所有本地及远程分支:git branch -a
如果此命令看不到所有远程分支,执行git fetch命令进行更新
6.本地分支与远程分支建立关联:git branch --set-upstream-to=origin/<branch> master
7.查看本地分支与远程分支是否有关联:git branch -vv
8.丢弃本地已改动但未提交的文件:git checkout -- pom.xml
9.删除远程分支:git push origin :分支名(origin后面有空格)
删除本地和远程分支完整语法:git push origin [本地分支名]:[远程分支名],如果本地分支名为空格,表示只删除远程分支
10.删除本地分支:git branch -d 本地分支名
11.暂存工作:git stash
12.查看暂存的列表:git stash list
13.合并分支:git merge dev,将dev分支的代码合并到当前所在分支
14.取消合并:git merge --abort,如果执行合并命令后有冲突,又不想快速解决,想撤销此次合并就可以用这个命令了。
15.获取远程最新分支列表:git fetch -p
【克隆】
1.从远程代码库克隆,并指定目录名:git clone git://github.com/schacon/grit.git mygrit
默认克隆的是master分支
2.克隆指定分支:git clone -b master git://github.com/schacon/grit.git
【合并】
1.快速合并分支:git merge master
2.将分支A上的某个提交合并到分支B上(在B分支上执行):git cherry-pick [A分支上commitId],注意cherry-pick中间"-"前没有空格
3.合并代码还未提交,可以放弃合并:git merge --abort
【提交】
1.提交到本地:git commit -m "提交备注信息"
2.推送到远程相同分支名的分支上:git push origin
【历史记录】
1.查看历史记录:git log
这种形式的命令如果log很多,会占满屏幕,并不会退出。在英文输入法下按Q退出。
2.查看历史记录(每条一行显示):git log --pretty=oneline
【撤销修改】
1.撤销已commit但未push的提交
分两步:先找到回退版本的ID,再执行reset命令
git log --pretty=oneline
git reset --hard [想回到的提交commit_id]
2.撤销Unstaging和已staging的文件:git checkout -- filename
3.撤销未提交的修改:git checkout -- fileName
4.从已add的暂存列表中撤销到未add前的状态:git reset HEAD fileName。不加文件名参数代表将所有文件还原到add前的状态。