一.Git命令(bash)
一.1.安装
Linux:先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了
Window:从官网下载安装即可。https://git-scm.com
Window版安装完后,右键菜单下出现两个git功能,git bash(命令)和git gui(界面)。我们推荐使用命令操作
一.2.配置用户名和密码
用于提交代码
git config --globaluser.name "Your Name"
git config --globaluser.email"email@example.com"
注意:
加上global,所有的系统都会使用这个账号,也可以在每个项目中使用不同的用户,去掉global在项目下运行命令即可。
一.3.创建git项目
在你想要使用git控制版本的项目目录下,执行git init,会将这个项目纳入到git管理。(目录下会多出个.git的文件夹,类似svn)
一.4.添加项目到git仓库
第一步:加入到暂存区,git addreadme.txt
第二步:将暂存区提交,git commit-m“写段注释”
我们可以时刻看看暂存区是否有代码要提交,git status,类似于svn的同步
上图表示修改过readme.txt,但是还没有提交。
我们还可以使用git diff文件名来查看该文件修改过什么地方了。
一.5.查看历史记录
git log [--pretty=oneline --graph ]
前面一大段字符串是版本id,后面1.txt commit是本次操作
一.6.回退到历史记录
git reset --hardHEAD^
Head在git里表示最新版本的意思head^表示上一个版本。
如果要会退到指定版本,那么可以先查一下历史记录,找到要回到的版本号
git log [--pretty=oneline --graph ]
接着执行回退命令
git reset --hard3628164
3628164是版本号,不用写全,写几位就可以了,git会自动匹配,也不要写太少,否则会有多个版本
git reset --hard52918e
如果想从历史版本回到最新版,现在历史记录git log已经查不到了,但是通过命令
git reflog可以查到,接着执行命令git reset --hard
一.7.撤销修改
git checkout -- file或者
git reset HEAD file退回到该文件最新版本
一.8.删除文件
git rm文件并且提交git commit
如果删除还没有提交,还可以还原
git checkout--文件名
如果删除提交了,只能用回复历史记录了git reset --hard 版本号
一.9.远程仓库
一.9.1.远程仓库授权代码提交权限
如果远程项目开源,可略过此步
参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
第1步:创建自己的公钥SSH Key
ssh-keygen -t rsa -C"youremail@example.com"
第2步:登陆远程服务器如GitHub,打开“Account settings”,“SSH Keys”页面
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
点“Add Key”,你就应该看到已经添加的Key:
一.9.2.添加到远程库
取得远程仓库的地址如:git@github.com:xxx/learngit.git
关联远程仓库
git remote add origin git@github.com:xxx/learngit.git
把本地内容推送到远程仓库(第一次推送加-u,这样会将本地的master和远程master关联)
git push -u origin master
以后再提交就不需加-u
git push origin master
一.9.3.从远程仓库下载(克隆)
git clone git@github.com:xxx/gitskills.git
注意:一般的git都会有多种协议 如https ssh git等
一.10.分支管理
一.10.1.创建和合并分支
Git默认一个master分支(主分支)
我们来创建一个dev分支
git checkout -b dev
Git checkout:创建 加上-b表示创建后切换到dev
等价于:git branch dev git checkout dev
我们看到所在的分支后面的任何操作都是在当前分支下操作,不会影响其他分支
如上图,dev下我们开发的代码已经是最新版里,但是master是旧的,我们需要将dev合并到master主分支上
首先:切换回主分支git checkoutmaster
然后:执行合并git mergedev
接着:合并完后,dev其实没用了,可以删除git branch -ddev
一.10.2.解决冲突
同svn冲突一样,git也会出现冲突,当多个分支代码都更新后
如上图,分支master和分支feature1都修改了一个文件并且提交
这个时候任意一个分支执行合并都会出现冲突
<<<<<<
=======CreatinganewbranchisquickANDsimple.
>>>>>>> feature1
解决一个分支后继续提交即可,如下
看一下历史记录
$ git log --graph --pretty=oneline --abbrev-commit
*59bc1cb conflict fixed
|\
| *75a857cANDsimple
* |400b400 & simple
|/
* fec145a branch test
一.10.3.远程分支
在前面步骤中,我们关联上了远程代码,下面直接提交代码
git push originbranch-name
branch-name要和自己本地库中分支对应
关联方法(两种):
1、git push -u origindev提价本地并在远程创建并关联
2、git checkout -b branch-name origin/branch-name创建本地分支名字和远程一样
git branch --set-upstream branch-name origin/branch-name关联上
一.10.4.标签
创建标签:git tag v1.0
在分支上创建,标签就属于某个分支的
git push origin 可以推送一个本地标签
git tag -d 可以删除一个本地标签
git push origin :refs/tags/可以删除一个远程标签
一.10.5.忽略文件
有一些文件比如.classpath,或者系统生成的文件,对我们的项目没有任何作用,但是git会管理。我们需要忽略他们
编写.gitignore文件
内容是你要忽略的文件名
二.git客户端(gui)
三.eclipse的git插件使用
第一步:安装好git插件
第二步:打开git视图
从远程下载(可以是github或者其他远程服务器如oschina)
选择Clone URI
指定下载到本地路径,其他默认即可,点finish完成下载
导入的eclipse里,随意修改一个文件,提交
出现git gui一样的界面,填上你的用户名和密码(如果要推送到远程服务器,用户必须是git服务器认证过的,除非服务器没有设置权限认证)
如果远程服务器已授权,可以推送到远程服务器
实际开发中是自己公司的远程服务器