Git教程:
http://www.liaoxuefeng.com/wi...git
1.设置用户名,邮箱github
git config --global user.name "yourname"
git config --global user.email "blackironman@163.com"app
2.pwd 查看当前的工做路径
3.mkdir test 建立文件夹test
4.ls 查看当前目录下的文件
5.git status 查看当前状态
6.git diff 查看修改的信息
7.添加远端仓库(用origion 代替 后面的地址) 能够添加多个,修改origin命名就好;git remote -v查看远程库的信息ssh
git remote add origin git@github.com:blackironman/gitstudy.git
推送到远端fetch
git push -u origin master或者 分支名
下载github上的文件编码
git pull git@github.com:blackironman/study.git(本地git库已和远程库建立关联) git clone 地址(github上的SSH地址):git@github.com:blackironman/study.git(本地git库未与远程库建立关联)
从远程仓库拉下来(git fetch)合并(git merge)
(多人共同操做一个文件时,需手动合并)
git pullspa
添加github合做者:(推送权限)
生成ssh-key
在Windows下打开Git Bash输入:ssh-keygen -t rsa -C "youremail@example.com" 一直回车使用默认值
最后在github右上角的图标 ---Settings---SSH keys -- add SSH Keys title任意,在key文本中粘贴 (查看:C:用户a.ssh)id_rsa.pub文件的内容。指针
8.使用Windows的童鞋要特别注意:
千万不要使用Windows自带的记事本编辑任何文本文件。缘由是Microsoft开发记事本的团队使用了一个很是弱智的行为来保存UTF-8编码的文件,他们自做聪明地在每一个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到不少难以想象的问题,好比,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,并且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM便可:日志
建立版本库:code
Git init 初始化仓库 --- git clone ssh/http地址 ---- git add git.txt添加文件 --- git commit -m “提示信息"
版本回退:
1.git log 查看提交日志
2.git reflog 查看全部的版本信息(包括已经删除得commit记录)
3.git reset --hard HEAD^ 回退到上一个版本,上上个版本是HEAD^^,上100个版本HEAD~100。
4.git reset --hard 10994a(commit id)回退到指定版本。版本号不必写全,前几位就能够
了,Git会自动去找。固然也不能只写前一两位,由于Git可能会找到多个版本号,就没法肯定是哪个了。
5.git cherry-pick合并某个commit : git cherry-pick能够选择某一个分支中的一个或几个commit(s)来进行操做(操做的对象是commit)。(要切换到须要操做得分支而且拉取代码)
HEAD指向的版本就是当前版本,所以,Git容许咱们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log能够查看提交历史,以便肯定要回退到哪一个版本。
要重返将来,用git reflog查看命令历史,以便肯定要回到将来的哪一个版本。
工做区和暂存区:stage为暂存区
管理修改:
Git跟踪并管理的是修改,而非文件。
用git diff HEAD -- git.txt命令能够查看工做区、暂存区和版本库里面最新版本的区别。
撤销修改:
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另外一个分支”的命令。
让这个文件回到最近一次git commit或git add时的状态。
1.在工做区中撤销就回到版本库中最新的状态同样。
2.提交了暂存区撤回,就回到add工做区。
以前学过的git reset HEAD <file> 回退版本,git status 查看状态仍是能看到提示说什么文件进行了修改。
小结:
场景1:当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时,用命令git checkout -- file。 场景2:当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操做。 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,进行版本回退,不过前提是没有推送到远程库 分支:(修复bug分支和新功能开发分支) 查看分支:git branch 建立分支:git branch <name> 切换分支:git checkout <name> 建立+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name> 强行删除:git branch -D <name>
一般Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
若是要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就能够看出分支信息。
git merge --no-ff -m "merge with no-ff" dev --no--ff表示禁用Fast forward,由于建立新的commit,故加上 -m “提示信息”
当你要临时解决一个紧急bug的时候,能够用git stash把当前工做区的内容储藏起来。经过创建分支去解决bug。
工做现场还在,Git把stash内容存在某个地方了,可是须要恢复一下,有两个办法:
1.用git stash apply恢复,可是恢复后,stash内容并不删除,你须要用git stash drop来删除; 2.用git stash pop,恢复的同时把stash内容也删了: 你能够屡次stash,恢复的时候,先用git stash list查看,而后恢复指定的stash,用命令: $ git stash apply stash@{0}
多人协做模式:
查看远程库信息,使用git remote -v;若是没有推送权限看不到push地址 1.首先,能够试图用git push origin <branch-name>推送本身的修改; 2.若是推送失败,则由于远程分支比你的本地更新,须要先用git pull试图合并; 3.若是合并有冲突,则解决冲突,并在本地提交; 4.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功! 若是git pull提示no tracking information,则说明本地分支和远程分支的连接关系没有建立,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
标签管理:
标签就是指向某个commit的指针,不能移动;分支能够移动。
建立标签:git tag v1.0 或者git tag v0.9 f788882(指定的commit id)
查看标签信息:git show v0.9
还能够建立带有说明的标签,用-a指定标签名,-m指定说明文字:
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
注意:标签老是和某个commit挂钩。若是这个commit既出如今master分支,又出如今dev分支,那么在这两个分支上均可以看到这个标签。
命令git push origin <tagname>能够推送一个本地标签; 命令git push origin --tags能够推送所有未推送过的本地标签; 命令git tag -d <tagname>能够删除一个本地标签; 命令git push origin :refs/tags/<tagname>能够删除一个远程标签。 在GitHub上,能够任意Fork开源仓库; 本身拥有Fork后的仓库的读写权限; 能够推送pull request给官方仓库来贡献代码。