Git实践及学习资料整理

回顾Jungle写硕士论文时,虽不至于“披阅十载,增删五次”,但也费心思修改了很多次。每修改一次都得把之前的复制备份保存,下图是部分修改版本的截图。如果修改20次,那么本地计算机里就得保存20个版本的论文!不但占据本地空间,而且要查找某一次修改点时及其不方便。软件代码也是一样,如何管理日渐庞大的软件项目,Git和Github就是重要的版本控制和管理工具。

1.Git和Github

1.1.Git

Git 是一个免费并且开源的分布式版本控制系统,被设计用来快速、高效的管理一切从小到大的项目。

说分布式之前先了解下集中式。集中式版本控制系统的版本库存放在中央服务器,开发人员在开发前得从中央服务器获取最新的代码到自己电脑上,然后才可以工作。工作完了,再把新代码传到中央服务器去。缺点在于:

  • 必须联网,否则不能访问中央服务器。而且如果网速慢,下载和上传代码会非常慢。
  • 如果中央服务器出故障,不但开发人员无法工作,甚至服务器上的代码可能会丢失。

分布式版本控制系统,没有所谓的 “中央服务器” 。每一台电脑都有一个完整的版本库,每一台电脑都可以作为“中央服务器”。工作时并不需要联网。如果是团队协作的话,只需要把修改的文件推送给对方即可。

1.2.Github

GitHub 是一个利用 Git 进行版本控制、专门用于存放软件代码与内容的共享虚拟主机服务。

Github 社区地址: https://github.com

1.3.两者之间的关系

Github 是利用 Git 来进行版本控制的。所以 Git 对于 Github 来说只是一个用来管理项目的工具。但Github的功能远不止于此。

1.4.注册Github账号,本地安装git

登录https://github.com可以注册Github账号,在Git官网下载Git( http://git-scm.com/download/win)并安装。安装完成后鼠标右键单击,菜单中可出现Git bash,即安装成功。

安装完 Git ,设置用户名称与邮件地址。 这一步是必须的,每一个 Git 的提交都会使用这些信息,不可更改:

$ git config --global user.name "FengJungle"
$ git config --global user.email [email protected]

输入命令git config --list 可以查看所有配置。 

2.Git常用操作实践

2.1.本地分支关联远程仓库

首先,登录Github账号,在Github上创建了一个新的仓库HelloWorld,这是一个新仓库,附带一个README.md文档。

然后,在本地创建了一个文件夹Git,如何让本地文件夹和远程仓库关联起来呢?两种办法:

(1)本地通过Git bash从远程上clone,这样本地就会有一个HelloWorld的文件夹,包含一个README.md文档。

(2)本地有仓库或代码,让本地和远程仓库关联:

$ git init
$ git remote add origin https://github.com/FengJungle/HelloWorld

这个时候可以通过下列命令查看远程地址:

$ git remote -v
origin  https://github.com/FengJungle/HelloWorld (fetch)
origin  https://github.com/FengJungle/HelloWorld (push)

但此时,本地和远程还没有关联起来,还需要进行下面的步骤,否则不能pull或push:

$ git branch --set-upstream-to=origin/master master

 如果运行这一行命令后提示

fatal: branch 'master' does not exist

那么需要运行

$ git pull origin master --allow-unrelated-histories
或者可能是本地仓库不在master分支上,则checkout回本地分支
$ git checkout master

此时即可以pull代码了。

2.2. pull代码

$ git pull

2.3.管理本地代码

本地写了个打印Hello World功能的代码,保存在HelloWorld.c文件里。如何将其push到远程仓库呢?首先要了解下工作区和暂存区。本地代码(工作区)通过git add加入到暂存区(staged),暂存区代码通过git commit添加到本地仓库里。当然,暂存区的文件可以通过git reset HEAD <file>返回到本地工作区。通过git status可以查看每一个文件的状态。

总结如下:

加入修改了一个文件hello.c

$ git add hello.c         # 将本地工作区的hello.c添加到暂存区
$ git reset HEAD hello.c  # 将暂存区的hello.c撤销,返回到本地工作区
$ git status              # 查看文件状态
$ git commit              # 将暂存区的hello.c提交到本地仓库

修改了本地工作区的文件Hello.c,下列命令可以撤销该修改
$ git checkout Hello.c

2.4.push代码到远程仓库

$ git push

接下来在Github上就可以看到本地已经修改的代码了。

2.5.其他常用命令

$ git log     # 查看历史提交
$ git reflog  # 查看历史命令

3.学习网站

4.Git常见异常处理

Updates were rejected because the tip of your current branch is behind

在push的时候报“Updates were rejected because the tip of your current branch is behind”

这是由于远程repository和我本地的repository冲突造成。解决办法有两个:

1.强制push

git push -u origin master -f 

但既然是强制的,就可能有风险,比如破坏远程的修改。

2.先pull,修改后再push

git pull

## 修改后

git push
发布了154 篇原创文章 · 获赞 141 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/sinat_21107433/article/details/104156575