不止不觉已经过了两个月了,慢慢的收敛自己,慢慢的积累。在公司使用到了Git,我们都知道写代码的人不可能一个人完成所有的项目,庞大的代码群,毕竟人不是神,这就需要大家的合作,那么为了解决我们所修改的地方被下一个读者或者其他正在修改的人熟知而不造成冲突,那么这就需要使用到Git这个傻瓜式内容追踪狂魔。
先简单介绍一下git:git是一个开源分布式控制系统,git是用于linux内核开发的版本控制工具。
这里说一个小故事话说linux之父linus对于CVS、SVN这种集中式的版本管理非常的不爽花了四天的时间搞出了最原始的git,但是它并不能满足其他的开发者,迫于压力linus不得不使用BitKeeper–一种版本管理工具。(*当时linux社区只有免费使用BitKeeper的权利)所以这使得社区里的很多大牛非常的不满,然后试图反编译BitKeeper,不过被该公司发现取消了linux社区免费使用的权利,这也让linus感觉到必须要有自己的工具,进而促使了Git的诞生。
话不多说上干货:
1、安装
1)在linux上安装Git
先查看有没有安装Git,如果没有则通过一条sudo apt-get install git 就可以完成安装 如果是老一点版本的ubuntu linux 可以试试将命令改为sudo apt-get install git-core。如果都不行的话,那就通过源码安装。从官网下载,然后解压根据脚本依次输入:./config, make, make install;这几个命令。
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
2)在Windows上安装Git
从git官网https://git-scm.com/下载程序,默认安装即可。
安装成功后可以在菜单栏中找到如下说明安装成功,
在进行最后一步配置,在弹出的窗口中命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2、基本命令操作(这是我在公司刚开始接触到git时用的比较多的一些命令)
1)使用git init创建版本库(仓库)
long@ubuntu:~$ mkdir testgit
long@ubuntu:~$ cd testgit
long@ubuntu:~/testgit$ pwd
/home/long/testgit
long@ubuntu:~/testgit$ git init //命令把这个目录变成可以管理的仓库
Initialized empty Git repository in /Users/michael/learngit/.git/
long@ubuntu:~/testgit$ ll
total 20
drwxr-xr-x 3 long long 4096 Sep 4 01:19 ./
drwxr-xr-x 25 long long 4096 Sep 4 01:19 ../
drwxr-xr-x 8 long long 4096 Sep 4 01:23 .git/
-rw-r--r-- 1 long long 17 Sep 4 01:19 LICENSE
-rw-r--r-- 1 long long 125 Sep 4 01:18 readme.txt
建立好仓之后我们会发现隐藏的.git/文件夹其实就是git的库所在的地方,里面的配置最好不要乱修改不然会发现奇奇怪怪的东西。
2)使用两个命令来完成一次提交
①git add 与②git commit
在目录下vim test.txt 随便输入一些东西wq保存退出,这里需要注意的一定是要在testgit目录下进行,因为这是一个仓,如果把文件建立在外面,就算在厉害的工具也检查不到。
$ git add . //告诉Git,把文件添加到仓库,此时是将修改添加到暂存区,可add 多次
$ git commit -m '本次提交的备注' //告诉Git把文件提交到仓库,此时是吧暂存区的所有内容提交到当前分支,可一次提交很多文件
3)用git status与git diff 时刻了解仓的状态
$ git status //查看版本库状态,什么被修改过但还没提交的
$ git diff //查看当前相对上一次提交修改的内容
4)若不想提交修改可以使用git checkout – xxx撤销修改
5)版本的撤回(这个就像读取游戏的存盘一样好玩)
$ git log //显示从最近到最远的提交日志
$ git log --pretty== oneline //显示log,但是不显示很多凌乱的信息
q //显示log版本信息有很多,使用q键停止查看
git reset —hard head^ //回退到上一个版本
git reset —hard head^^ //回退到上上个版本
git reset —hard head~100 //回退到之前100个版本
git reset —hard +commit_id //回到某个版本号的版本
git reset — hard 版本号 //版本回退多次后需要恢复最新版本
$ git reflog //查看曾经使用过的命令
附录:命令汇总整理
1、远程仓库相关命令
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName][localBranchName]
2、分支(branch)操作相关命令查看本地分支: git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name] 或 $ git push origin :[name]
创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
$git symbolic-ref HEAD refs/heads/[name]
r
m
.
g
i
t
/
i
n
d
e
x
g
i
t
c
l
e
a
n
−
f
d
x
3
、
版
本
(
t
a
g
)
操
作
相
关
命
令
查
看
版
本
:
g
i
t
c
l
e
a
n
−
f
d
x
3
、
版
本
(
t
a
g
)
操
作
相
关
命
令
查
看
版
本
:
g
i
t
c
l
e
a
n
−
f
d
x
3
、
版
本
(
t
a
g
)
操
作
相
关
命
令
查
看
版
本
:
g
i
t
t
a
g
创
建
版
本
:
rm .git/index gitclean−fdx3、版本(tag)操作相关命令查看版本: git clean -fdx3、版本(tag)操作相关命令查看版本:gitclean−fdx 3、版本(tag)操作相关命令查看版本: git tag 创建版本:
rm.git/indexgitclean−fdx3、版本(tag)操作相关命令查看版本:gitclean−fdx3、版本(tag)操作相关命令查看版本:gitclean−fdx3、版本(tag)操作相关命令查看版本:gittag创建版本: git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
合并远程仓库的tag到本地:$ git pull origin --tags
上传本地tag到远程仓库:$ git push origin --tags
创建带注释的tag:$ git tag -a [name] -m ‘yourMessage’
4、子模块(submodule)相关操作命令
添加子模块:$ git submodule add [url] [path]
如:gitsubmoduleaddgit://github.com/soberh/ui−libs.gitsrc/main/webapp/ui−libs初始化子模块: git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs初始化子模块:gitsubmoduleaddgit://github.com/soberh/ui−libs.gitsrc/main/webapp/ui−libs初始化子模块: git submodule init ----只在首次检出仓库时运行一次就行
更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
删除子模块:(分4步走哦)
$ git rm --cached [path]
编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
编辑“ .git/config”文件,将子模块的相关配置节点删除掉
手动删除子模块残留的目录
5、忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target
bin
*.db
这篇博客我会继续更新,因为现在正在使用Git,还有很多不明白的地方,所在暂时写到这里,希望能对大家有点帮助。