github简易教程

 


【安装与配置】:

1.注册帐号: https://github.com/ 假设帐号xuxian ,密码123456,邮箱xuxian@126.com ;
2.安装msysGit(下载地址 http://msysgit.github.io/);
3.配置认证本地与github的帐号关联:
3.1 打开"git bash"命令工具
3.2 git config --global user.name "xuxian" //配置用户
3.3 git config --global user.email "xuxian@126.com" //配置邮箱
3.4 创建SSH Keys密钥 (检查是否安装):
3.4.1 cd ~/.ssh //进入ssh命令
3.4.2 ssh-keygen -t rsa -C "xuxian@126.com" //生成密钥
3.4.3 成功后找到对应的id_rsa.pub文件,并复制所有文本(密钥)
3.4.4 在github网站中找到添加SSH key, 将文本(密钥)粘贴到key中,title可选命名。
3.4.5 ssh -T git@github.com //测试连接是否成功

【创建Repository(仓库或项目)和管理】:

1.在github网站新建一个仓库(Repository),假设命名proj,勾选Init...README;
2.创建用于管理proj仓库的目录:
2.1打开"git bash"命令工具
2.2. mkdir proj //新建目录
2.3 cd proj //进入目录
3. 与仓库建立连接:
3.1 git init //初始化配置
3.2 git remote add origin git@github.com:xuxian/proj.git //建立仓库远程连接
3.3 git pull origin master //拉取远程数据
4. 本地文件上传
4.1 在将文件拷贝到当前目录
4.2 git add .
git commit -m "添加新内容"
git push origin master

完,补充知识[Git远程操作详解] : http://www.ruanyifeng.com/blog/2014/06/git_remote.html

【关于中文乱码】:

1.进入git安装目录
2.etc\gitconfig文件中添加:
[gui]
encoding = utf-8
[i18n]
commitencoding = utf-8
logoutputencoding = gbk
[svn]
pathnameencoding = gbk
[core]
quotepath = false
3.etc\git-completion.bash添加:
alias ls='ls --show-control-chars'
4.etc\inputrc修改:
set output-meta on
set convert-meta off
5.etc\profile添加:
export LESSCHARSET=utf-8

 

【分支管理】:

补充知识[Git分支管理策略]: http://www.ruanyifeng.com/blog/2012/07/git.html

例子:
1.

git branch //查看分支, 参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支
git branch name //创建分支
git checkout name //切换分支
git checkout -b name //创建+切换分支:
git checkout -b feature-x develop //创建一个继承分支
git checkout -b 分支名 远程仓库名/分支名 //。。。
git merge name //合并name分支到当前分支:
git merge --no-ff develop //快进式合并develop分支到当前分支
git branch -d name //删除分支,只能删除已经被当前分支所合并过的分支,而要强制删除没有被合并过的分支,可以使用-D。
git branch -m oldbranch newbranch //-M用来强制重命名,如newbranch已经存在的时候。


【git pull 用法】:

git pull <远程主机名> <远程分支名>:<本地分支名> // 取回远程主机某个分支的更新,再与本地的指定分支合并
git pull origin next:master //取回origin主机的next分支,与本地的master分支合并
git pull origin next //如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull origin next == git fetch origin 操作 + git merge origin/next操作
git branch --set-upstream master origin/next //指定master分支追踪origin/next分支。建立一种追踪关系(tracking),允许手动建立追踪关系.
git pull origin //本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并
git pull //当前分支自动与唯一一个追踪分支进行合并。
git pull --rebase <远程主机名> <远程分支名>:<本地分支名> //如果合并需要采用rebase模式,可以使用–rebase选项。

【git push 用法】:

git push <远程主机名> <本地分支名>:<远程分支名> //将本地分支的更新推送到远程主机
git push origin master //将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建
git push origin :master //如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
git push origin :master == git push origin --delete master
git push origin //将当前分支推送到origin主机的对应分支.
git push //如果当前分支只有一个追踪分支,那么主机名都可以省略
git push -u origin master //上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git push --all origin //将所有本地分支都推送到origin主机
git push origin --tags //git push不会推送标签(tag),除非使用–tags选项。


【git remote 用法】:

git remote //列出所有远程主机
git remote -v //参看远程主机的网址
git remote show <主机名> //查看该主机的详细信息
git remote add <主机名> <网址> //用于添加远程主机
git remote rm <主机名> //用于删除远程主机
git remote rename <原主机名> <新主机名> //用于远程主机的改名

【git fetch 用法】:

git fetch <远程主机名> //将某个远程主机的更新,全部取回本地,默认情况下,git fetch取回所有分支(branch)的更新。
git fetch <远程主机名> <分支名> //如果只想取回特定分支的更新,可以指定分支名
git fetch origin master //比如,取回origin主机的master分支,要用”origin/master”的形式读取.
git branch -r //结果:origin/master
git branch -a //结果 master remotes/origin/master
git checkout -b newBrach origin/master //取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。
git merge origin/master //在本地分支上合并远程分支

【git clone 用法】:

git clone <版本库的网址> //从远程主机克隆一个版本库
git clone https://github.com/jquery/jquery.git //克隆jQuery的版本库,该命令会在本地主机生成一个目录,与远程主机的版本库同名.
git clone <版本库的网址> <本地目录名> //如果指定不同的目录名.
//git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子
git clone -o jQuery https://github.com/jquery/jquery.git //使用的远程主机自动被Git命名为origin,如果想用其他的主机名,-o选项指定

 

【其他注意】:

补充知识 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1.初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:git add <file>; git commit;
2.HEAD指向当前版本,在版本的历史之间穿梭,使用命令git reset --hard commit_id,
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
3.理解工作区,暂存区,版本库,工作区就是你在电脑里能看到的目录,暂存区是存放在.git目录里的。
4.如果不add到暂存区,那就不会加入到commit中。
5.场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
6.命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,
但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
7.要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
8.要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快
9.Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
10.Git分支十分强大,在团队开发中应该充分应用,(git merge --no-ff -m "merge with no-ff" dev)
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
11.修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
12.开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D name强行删除。
13.查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突
14.命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;
-a tagname -m "blablabla..."可以指定标签信息;
-s tagname -m "blablabla..."可以用PGP签名标签;
15.命令git push origin tagname可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d tagname可以删除一个本地标签;
命令git push origin :refs/tags/tagname可以删除一个远程标签。
命令git tag可以查看所有标签;
16.查看状态git status
记录删除或修改了哪些文件:git commit -a
删除一个文件: git rm 文件名
删除多个文件,cd 到你要删除的目录下,当然 * 可以换成指定目录: git rm * -r
追踪关系一般指的是本地和远程两者同名;

 

posted @ 2014-10-10 15:51  许仙来了  阅读(272)  评论(0编辑  收藏  举报