Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
NotificationsYou must be signed in to change notification settings

cinowu/gitskills

Repository files navigation

#gitskills前言##工具

#windows安装Git客户端:

Git本来是在linux下开发的,后来又支持了windows版本。

Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样。Cygwin的安装和配置都比较复杂,就不建议你折腾了。不过,有高人已经把模拟环境和Git都打包好了,名叫msysgit,只需要下载一个单独的exe安装程序,其他什么也不用装,绝对好用。msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

  • Git Bash 乱码解决方法,bash窗口输入: git config --global i18n.commitencoding utf-8
  • Git Gui 乱码解决方法,bash窗口输入: git config --global gui.encoding utf-8

###另外github官方的客户端也很棒http://windows.github.com/

github官方教程:http://try.github.io/levels/1/challenges/1

#使用Git(参考雪峰童鞋的)
##自报家门

安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

注意:git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

##初始化git仓库

初始化一个Git仓库,新建一个仓库目录,使用git init命令。

添加文件到Git仓库,分两步:

第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;

第二步,使用命令git commit -m "",完成。

##查看git实时状态

要随时掌握工作区的状态,使用git status命令。

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

##版本穿越

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

情况一,修改了工作区的文件,添加了很多内容,还没有git add,想撤销修改,如下:】

撤销刚刚工作区的修改,git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

【情况二,修改了工作区的文件,已经git add,想撤销这次已经发生的git add,如下:】

git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区]

【情况三,现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。

不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把“stupid boss”提交推送到远程版本库,你就真的惨了……】

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

##删除和恢复版本

命令git rm用于删除一个文件,从版本库中被删除了,这个没法恢复,

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git >

checkout -- file。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,

你会丢失最近一次提交后你修改的内容。

##本地git仓库关联上github公开仓库

本地git仓库关联github上公开的仓库:

在本地git仓库根目录下执行: git remote add origingit@github.com:cinowu/hellogit.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库

第一次推送本地仓库内容到远程github仓库:

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样从现在起,只要本地作了提交,就可以通过命令: git push origin master

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;

或者git remote add originhttps://github.com/cinowu/gitskills.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

##下载github公开仓库到本地

从远程github仓库中拷贝到本地git仓库:

git clonehttps://github.com/cinowu/gitskills.git

或者git clonegit@github.com:cinowu/gitskills.git

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

【警告】不要使用https:开头的仓库地址,不仅慢,还会导致一系列问题,只需要将git@github.com:cinowu/gitskills.git这个中的用户名cinowu换成github用户名,gitskills换成github仓库名即可。

##git分支

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout -b name

合并某分支到当前分支:git merge name

合并完之后可以删除分支,但是一般分支不建议删除:git branch -d name

##解决冲突

当Git无法自动合并分支时,就必须首先解决冲突,手动在master上修改。解决冲突后,再提交,合并完成。

用git log --graph命令可以看到分支合并图。

git log --graph --pretty=oneline --abbrev-commit

##合并文件

git merge --no-ff -m "merge with no-ff" dev

请注意--no-ff参数,表示禁用“Fast forward”:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

##分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

#BTW友情附赠国外网友制作的Git Cheat Sheet,建议打印出来备用:Git Cheat Sheet

也可以在googlecode上创建git协议的publis repository
参见我用cino.wu账户在googlecode上创建的git协议的项目https://code.google.com/p/cino-learn-svn/
https://code.google.com/p/cino-learn-svn/source/checkout
创建google code project入口:https://code.google.com/intl/zh-HK/

#PS创建在github上的站点,定制自己的域名:http://pages.github.com/
我的已经建好了http://cinowu.github.io

参考怎样创建好看的站点界面和项目:http://www.worldhello.net/gotgithub/03-project-hosting/050-homepage.html

作者:@岁月静好--似水流年
2014-01-15 星期三 10:45:21

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp