备注:
1.第一次使用git必须注册git账号,2种方式注册账号,一种是用git命令,另一种是登录github官网注册。
2.第一次本地工程上传至github上必须注册SSH,因为推送到远程默认使用的是SSH形式
3.从github上抓取远程工程有2种方式,一种是SSH形式另一种是https形式,默认情况下使用SSH形式,而且SSH形式比https形式快,具体实现方式如下:
SSH形式为:git clone git@github.com:xx/xxx.git (xx表示你github登录名,xxx.git表示该账号下某个工程)
https形式为:git clone https://github.com/xx/xxx.git (xx表示你github登录名,xxx.git表示该账号下某个工程)
以下为初学者第一次使用git常用命令:
1.初始化配置(常用)
官网下载git并安装,右击“Git Bash Here” 进行git账号注册:
git config --global user.name "you name" 注册git用户名
git config --global user.email "you@youdomain.example.com" 注册git邮箱
git config --list 查看git配置
或者登录github官网,注册git账号
把本地工程上传到远程github上则先创建SSH key,该方式提交代码不需要输入用户名和密码。github允许添加多个key,若是你自己笔记本操作,公司电脑操作,则需把每台电脑的key添加到github上,那么每台电脑就可以往github上传工程。
ssh-keygen -t rsa -C "youemail@example.com"
把生成的公钥复制到github上,具体操作参考:http://blog.csdn.net/u014079773/article/details/49555989
2.创建工程并上传至github远程服务(重点)
第一次创建工程并提交至远程服务首先登录github官网创建远程仓库,点击“Create A Repository”创建一个项目,点击“New Repository”,然后“Project Name”输入“learngit”,“Description”填写描述, 在本地创建一个Github文件夹,在里面再创建一个learngit文件夹,并将项目文件放进去,在“learngit”文件夹上右击“Git bash”出现命令框
git init 初始化仓库learngit
git add . 添加所有文件(add与“.”之间有空格,否则不识别的语法)
git commit -m 'version 1.2' 提交修改文件
git remote add origin git@github.com:somenone/learngit.git 提交远程仓库(用SSH的形式,关联一个远程仓库)
git push -u origin master 推送远程仓库
备注:由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
之后执行就是 git push origin master
3.修改本地文件上传至远程仓库(重点)
修改好本地文件后在“learngit”文件夹上右击“Git Bash Here”出现命令框
如果添加了内容则先要git add .
git commit -m "version 1.2" 提交修改
git commit -a -m "version1.2" 提交所有修改
git push origin master
4.文件管理
git add filename 修改文件提交到本地暂存区
git add . 修改所有文件提交到本地暂存区(注意add与“.”之间有个空格)
git commit -m "message" 提交修改
git commit -a -m "message" 提交所有修改
git checkout head readme.txt todo.txt 撤销1,2文件修改
git checkout head . 撤销所有文件修改
git status 查看当前文件状态
git rm filename 删除文件
git diff filename 查看修改文件具体内容即比较当前文件与暂存区文件差异
git reset filename 从暂存区恢复文件
git reset --hard HEAD^ 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
5.仓库管理
git init 初始化仓库
git clone git@github.com:someone/xxx.git 克隆远程仓库(SSH形式)
git clone https://github.com/someone/xx.git 克隆远程仓库(https形式)
git remote add origin git@github.com:someone/xxx.git 添加到到远程仓库master(SSH形式)
git push origin master 推送远程仓库
git push -u origin dev 首次将本地dev分支提交到远程dev分支,并且track
git pull https://github.com/someone/xxx.git 更新远程仓库(https形式,要先选中仓库)
git pull git@github.com:someone/xxx.git 更新远程仓库(SSH形式,要先选中仓库)
git remote -v 查看远程仓库
git remote add origin git@github.com:someone/xx.git 添加远程仓库
git remote rm name 删除远程仓库
$ git remote set-url --push origin [newUrl] 修改远程仓库
6.分支管理
git branch dev 创建一个分支dev
git chekcout dev 切换工作目录到dev
git chekcout –b dev 创建dev分支并切换到dev
git branch 查看分支(当前分支前面会有一个"*")
git branch -a 查看所有分支
git merge dev 合并dev分支到当前分支master(必须切换到当前master分支才可以合并分支,快速合并)
git branch –d dev 删除dev分支(合并完成后没有出现冲突删除分支)
git branch -D dev 强制删除为合并的分支dev
git checkout –b dev origin/dev 建立本地的dev分支追踪远程仓库的dev分支(本地分支最后与远程分支一致)
git merge --no-ff -m "message" dev 合并dev分支到当前master分支(禁用"Fast-Forward"合并可以生成merge提交)
git merge origin/master 将远程主分支合并到本地当前分支
git merge origin/dev 将远程dev分支合并到本地dev分支
git push 推送所有分支
git push origin master 推送本地主分支推到远程主分支
git push origin dev 推送本地dev分支到远程dev分支
7.历史记录管理(常用)
git log 查看所有历史记录(从最近到最远提交日志,显示详细信息)
git log filename 查看指定文件每次提交记录
git reflog 记录每一次提交记录(即查看所有分支所有记录)
git log --graph 查看分支合并情况
8.暂存管理
git stash 暂存当前分支
git stash list 查看暂存分支
git stash apply 恢复暂存区但不删除内容
git stash drop 删除暂存区
git stash pop 恢复暂存区并删除内容
9.标签管理
git tag V1.0 创建标签
git tag 查看标签
git show V1.0 查看标签信息
git tag -a V1.0 -m "version is 1.0" 创建带有指定说明标签(-a指定标签名 -m指定说明文字)
git tag -d V1.0 删除标签
git push origin V1.0 推送某个标签到远程
git push origin --tags 推送所有标签到远程
git push origin:refs/tags/V1.0 删除远程标签
10.忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target
bin
*.db
总结:
Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码也可以管理私人的文档和源代码。
git提交仓库在自己本地,每个人都可以拥有自己的本地仓库,互不干扰,最后提交到远程仓库。
git config --global user.name "you name"
git config --gloabl user.email "you@youdomain.example.com"
第一次使用git时,首先要进行用户配置,这是为了拥有git账号,可以提交到远程仓库,然后在远程仓库github上注册自己的账号,那么就可以在github上管理我们的项目。
git init:初始化本地仓库,即是本地已经创建好的项目,然后执行该命令使得该项目变成git可管理的版本仓库。
git add remote name url :若是你希望将本地初始化好的仓库提交到远程仓库,那么在远程服务器上创建仓库,进行本地仓库与远程仓库关联
git add:是将当前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步,例如'git add app/model/user.rb'就会增加app/model/user.rb文件到Git的索引中,该功能类似于SVN的add
git rm:从当前的工作空间中和索引中删除文件,例如'git rm app/model/user.rb',该功能类似于SVN的rm、del
git commit:提交当前工作空间的修改内容,类似于SVN的commit命令,例如'git commit -m story #3, add user model',提交的时候必须用-m来输入一条提交信息,该功能类似于SVN的commit
git push:将本地commit的代码推送到远程版本库中,例如'git push origin master'就会将本地的代码更新到名为orgin的远程版本库中的master分支上
git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update
git log:查看历史日志,该功能类似于SVN的log
git reflog:查看所有分支的所有记录包括commit和reset的操作
git branch:对分支的增、删、查等操作,例如'git branch new_branch'会从当前的工作版本创建一个叫做new_branch的新分支,'git branch -D new_branch'就会强制删除叫做new_branch的分支,'git branch'就会列出本地所有的分支
git checkout: Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚