songziming / hippocampus

MIT License
0 stars 0 forks source link

Git使用(2) #5

Open songziming opened 9 years ago

songziming commented 9 years ago

这一部分将以Git的使用为主

Git与Github

许多人搞不懂Git与Github的区别。Git是一个工具,Github是一个使用Git并提供项目托管服务的网站,没有Github,Git照样能用。项目托管不一定Github,像BitBucket、CSDN Code、Git Cafe都是提供Git项目托管的服务。

安装配置Git

如果你用的是Linux,只需使用系统的包管理工具安装Git即可,例如在Ubuntu下,只需输入sudo apt-get install git就可以了。Windows下,访问Git-scm并点击页面右侧的“Download For Windows”链接,下载并安装Git。

这里要明确一点,Github也有Window客户端,但这只是Github客户端,而非Git,不要混淆。

Git安装完成后,Windows系统中会多一个程序“Git Bash”,启动它,将会看到一个命令行窗口,在其中可以输入常用的Linux命令,也包括git。首先要做的,是配置Git。

Windows系统打开Git Bash,Linux系统直接打开终端,输入以下内容(将“你的名字”、“你的邮箱”替换成对应内容)

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global push.default simple

解释一下,使用Git进行协作开发时,有必要在日志中记录下某次修改是谁做的,该人怎样联系。这些信息就是配置阶段设置的,配置好这些信息之后,每次执行git commit就会自动将你的名字和邮箱记录在日志文件中。

创建仓库

版本控制系统(不仅是Git)中,仓库(repository)是一个重要概念,你可以将仓库理解为一个项目的完整源代码的集合。Git可以方便地对仓库进行管理要创建一个仓库,只需要新建一个目录,然后在这个目录下(假设你知道mkdir、cd)执行git init,就在该目录中创建了一个空的仓库,这样,像git addgit commit这类的指令才能够执行。

检出仓库

实际使用中,通常是在Github中创建一个项目,再检出到本地。因为git init并没有添加任何上游仓库。检出也叫克隆,就是把上游仓库的内容复制一份,存在本地,方法如下:

git clone 上游仓库地址

一般上游仓库都是存在其他计算机上的,需要通过网络访问。例如Hippocampas项目,当你打开Github中该项目的页面时,右侧会有一个HTTPS clone url,如下图

url

里面就是Github上Hippocampas仓库的地址。

工作流

本地仓库有三棵“树”,第一个是“工作目录”,也就是项目文件夹,它保存着项目的实际文件;第二棵“树”是缓存区,保存对项目文件的临时改动;第三棵树是HEAD,这棵树表示最近一次提交的结果。

首先开发者编写代码,对项目文件进行修改,工作目录的状态发生了变化,缓存区和HEAD均未变。执行git add --all将工作目录的改动添加到缓存区(git add --all记录所有的改动,也可以用git add 文件名记录针对特定文件的改动),这样缓存区状态更新,HEAD未变。执行git commit -m "在这里写一点提交信息",缓冲区的变更提交到HEAD,这样,实际改动就完成了提交。

但是,这样提交仅仅是提交到本地。如果没有上游仓库,做到这一步就足够了,当上有仓库存在时,可以用git push推送到上游仓库。如果别人推送到了上游仓库,以执行git pull将上游仓库更新到本地(一个好习惯是:每次工作前,先进行一次git pull)。

总结一下,如果不涉及分支,git的工作流程就是下面的几步:

LiangMingyang commented 9 years ago

新技能get!子明辛苦了,剑锋你抽时间把注意事项告诉大家,要正式开发了

发自Thor

Song Ziming notifications@github.com编写:

这一部分将以Git的使用为主

Git与Github

许多人搞不懂Git与Github的区别。Git是一个工具,Github是一个使用Git并提供项目托管服务的网站,没有Github,Git照样能用。项目托管不一定Github,像BitBucket、CSDN Code、Git Cafe都是提供Git项目托管的服务。

安装配置Git

如果你用的是Linux,只需使用系统的包管理工具安装Git即可,例如在Ubuntu下,只需输入sudo apt-get install git就可以了。Windows下,访问Git-scm并点击页面右侧的“Download For Windows”链接,下载并安装Git。

这里要明确一点,Github也有Window客户端,但这只是Github客户端,而非Git,不要混淆。

Git安装完成后,Windows系统中会多一个程序“Git Bash”,启动它,将会看到一个命令行窗口,在其中可以输入常用的Linux命令,也包括git。首先要做的,是配置Git。

Windows系统打开Git Bash,Linux系统直接打开终端,输入以下内容(将“你的名字”、“你的邮箱”替换成对应内容)

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global push.default simple

解释一下,使用Git进行协作开发时,有必要在日志中记录下某次修改是谁做的,该人怎样联系。这些信息就是配置阶段设置的,配置好这些信息之后,每次执行git commit就会自动将你的名字和邮箱记录在日志文件中。

创建仓库

版本控制系统(不仅是Git)中,仓库(repository)是一个重要概念,你可以将仓库理解为一个项目的完整源代码的集合。Git可以方便地对仓库进行管理要创建一个仓库,只需要新建一个目录,然后在这个目录下(假设你知道mkdir、cd)执行git init,就在该目录中创建了一个空的仓库,这样,像git addgit commit这类的指令才能够执行。

检出仓库

实际使用中,通常是在Github中创建一个项目,再检出到本地。因为git init并没有添加任何上游仓库。检出也叫克隆,就是把上游仓库的内容复制一份,存在本地,方法如下:

git clone 上游仓库地址

一般上游仓库都是存在其他计算机上的,需要通过网络访问。例如Hippocampas项目,当你打开Github中该项目的页面时,右侧会有一个HTTPS clone url,如下图

url

里面就是Github上Hippocampas仓库的地址。

工作流

本地仓库有三棵“树”,第一个是“工作目录”,也就是项目文件夹,它保存着项目的实际文件;第二棵“树”是缓存区,保存对项目文件的临时改动;第三棵树是HEAD,这棵树表示最近一次提交的结果。

首先开发者编写代码,对项目文件进行修改,工作目录的状态发生了变化,缓存区和HEAD均未变。执行git add --all将工作目录的改动添加到缓存区(git add --all记录所有的改动,也可以用git add 文件名记录针对特定文件的改动),这样缓存区状态更新,HEAD未变。执行git commit -m "在这里写一点提交信息",缓冲区的变更提交到HEAD,这样,实际改动就完成了提交。

但是,这样提交仅仅是提交到本地。如果没有上游仓库,做到这一步就足够了,当上有仓库存在时,可以用git push推送到上游仓库。如果别人推送到了上游仓库,以执行git pull将上游仓库更新到本地(一个好习惯是:每次工作前,先进行一次git pull)。

总结一下,如果不涉及分支,git的工作流程就是下面的几步:


Reply to this email directly or view it on GitHub: https://github.com/songziming/hippocampus/issues/5

WunGCQ commented 9 years ago

我这周五回来。。。反正已经写了一部分了,你们先弄着~每次例会的东西都整理好我回来研究照做~

Vincent88Forever commented 9 years ago

如果我在push的前一刻有人先push了,那不就意味着我是在过时的版本上做的修改,应该怎么解决?

wjfwzzc commented 9 years ago

这就是我假设的情景,很难解决。我当时的做法大概是把新版本pull到一个新项目里,然后将master回退,再将pull下来的版本和我的修改手动合并,再进行一次性的提交。或者回退后把pull下的新版本和我的版本各开分支再merge……总之恶心得要死。

王剑锋 Jeffrey Wang

北京航空航天大学 软件学院 2012级本科生 | Undergraduate of School of Software, Beihang University

E-mail:wjfwzzc@gmail.com Skype:Jeffreywzzc Mobile:+86 156 5290 9590

Address:北京市昌平区沙河高教园南三街9号 | No.9 Nansan Street, Shahe Higher Education Park, Changping District, Beijing Zip Code:102206

发自我的小米手机

Vincent notifications@github.com编写:

如果我在push的前一刻有人先push了,那不就意味着我是在过时的版本上做的修改,应该怎么解决?

— Reply to this email directly or view it on GitHub.

LiangMingyang commented 9 years ago

通过创建分支可以解决吗,每次都是进行合并操作

发自Thor

Vincent notifications@github.com编写:

如果我在push的前一刻有人先push了,那不就意味着我是在过时的版本上做的修改,应该怎么解决?


Reply to this email directly or view it on GitHub: https://github.com/songziming/hippocampus/issues/5#issuecomment-48920257

songziming commented 9 years ago

我认为分工合理的话就不会出现这个问题,如果出现了问题,那么谁先遇到问题谁就来解决问题。(个人理解)