版本控制软件能够让我们拍摄处于可行状态下的项目的快照。更改项目(比如实现新功能)后,如果项目不能正常运行,可以恢复到前一个可行状态。

通过版本控制软件,我们可以无顾忌地改进项目,不再需要担心项目因为自己犯了错而遭到破坏。对于大型项目而言,这显得尤为重要。对小项目来说,这也是大有益处的。

安装Git

要在Windows系统中安装Git,访问 https://git-scm.com/downloads

点击下载安装包,然后双击安装即可。

配置Git

Git会跟踪到底是谁修改了项目,哪怕参与项目开发的人只有一个。为此,Git需要知道你的用户名和电子邮件地址。你必须提供用户名,但可以使用虚构的电子邮件地址:

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

如果忘记了这一步,在你首次提交时,Git将提示你提供这些信息。

创建项目

我们来创建一个要进行版本控制的项目。在你的系统中创建一个目录,并将其命名为learn_git。在这个目录中,创建一个简单的Python程序:

# hello_world.pyprint("Hello Git World!")

忽略文件

扩展名为.pyc的文件是根据.py文件自动生成的,因此我们无需让Git跟踪它们。这些文件存储在__pycache__目录中。为了让Git忽略这个目录,创建一个名为.gitignore的特殊文件,并将下面类容添加到文件中:

__pycache__/

这让Git忽略目录__pycache__中的所有文件。使用.gitignore文件可以避免项目混乱。

初始化仓库

现在的learn_git只是一个普通的目录,包含了一个Python文件和一个.gitignore文件,为了对其进行版本控制需要使用Git进行初始化一下。打开一个终端窗口,切换到learn_git目录,并执行如下命令:

输出表明Git在learn_git中初始化了一个空仓库。仓库是程序中被Git主动跟踪的一组文件。Git用来管理仓库的文件都存储在隐藏的.git/中。

检查状态

在执行其他操作前,先看一下项目的状态:

在Git中,分支是项目的一个版本。从这里的输出可知,我们位于分支master上(见1)。Git指出了项目中未被跟踪的文件(见2),因为我们还没有告诉它要跟踪哪些文件。提交是项目在特定时间点的快照。此时,我们被告知没有将任何东西添加到当前提交中,但我们需要将未跟踪的文件加入到仓库中(见3)。

将文件加入到仓库中

下面将之前的两个文件加入到仓库中

$ git add .

再次检查状态:

命令git add .将项目中未被跟踪的所有文件都加入到仓库中。它不提交这些文件,而只是让Git开始关注它们。当我们检查项目的状态时,Git找出了需要提交的一些修改。标签new file意味着这些文件是新添加到仓库中的。

执行提交

接下来,我们执行第一次提交:

我们执行命令git commit -m "message"以拍摄项目的快照。选项-m让Git将接下来的消息"Started project"记录到项目的历史记录中。输出表明我们在分支master上,且有两个文件被修改了。现在我们检查状态时,发现我们在分支master上,且工作目录是干净的。

查看提交历史

Git记录所有的项目提交。下面来看一下提交历史:

每次提交时,Git都会生成一个包含40字符的独一无二的引用ID。它记录提交是谁提交的、提交的时间以及提交时指定的消息。但是,并非在任何情况下都需要所有这些信息,Git提供了一个选项,以便能够打印提交历史条目中更简单的版本:

选项--pretty=oneline指定显示两项最重要的信息:提交的引用ID以及为提交记录的消息。

第二次提交

我们在hello_world.py中再添加一行代码:

# hello_world.pyprint("Hello Git World!")
print("Hello everyone.")

查看项目状态,Git注意到了这个文件发生了变化:

输出指出了我们当前所在的分支、被修改了的文件的名称,还指出了所做的修改未提交。接下来我们提交所做的修改,并再次查看状态:

我们再次执行了提交,并在执行命令git commit时指定了选项-am。选项-a让Git将仓库中所有修改了的文件都加入到当前提交中(如果在两次提交之间创建了新文件,可再次执行命令git add .将这些新文件加入到仓库中)。选项-m让Git在提交历史中记录一条消息。

我们查看项目的状态时,发现工作目录也是干净的。最后,我们发现提交历史中包含两个提交。

撤销修改

下面来看看如何放弃所做的修改,恢复到前一个可行状态。为此,首先在hello_world.py中再加一行代码:

# hello_world.pyprint("Hello Git World!")
print("Hello everyone.")print("Oh no, I broke the project!")

保存并查看状态:

Git注意到我们修改了hello_world.py。我们可以提交所做的修改,但这次我们不提交所做的修改,而要恢复到最后一个提交(那次提交时项目能够正常地运行)。为此,我们不对hello_world.py执行任何操作——不删除刚添加的代码行,也不使用文本编辑器的撤销功能,而在终端会话中执行如下命令:

命令git checkout让你能够恢复到以前的任何提交。命令git checkout .放弃自最后一次提交后所做的所有修改,让项目恢复到最后一次提交的状态。

如果我们回到文本编辑器,将发现hello_world.py被修改成了下面这样:

就这个项目而言,恢复到前一个状态微不足道,但如果我们开发的是大型项目,其中数十个文件都被修改了,那么恢复到前一个状态,将撤销自最后一次提交后对这些文件所有的所有修改。这个功能很有用:实现新功能时,可以根据需要做任意数量的修改,如果这些修改不可行,可以撤销它们,而不会对项目有任何影响。

检出以前的提交

我们可以检出提交历史中的任何提交,而不仅仅是最后一次提交,为此可在命令git checkout末尾指定该提交的引用ID的前6个字符(而不是句点)。

检出以前的提交后,将离开master分支,并进入分离头指针(detached HEAD)状态。HEAD表示项目的当前状态,之所以说处于分离状态,是因为我们离开了一个命名分支(这里是master)。

要回到master分支,可以检出它:

除非你要使用Git的高级功能,否则在检出以前的提交后,最好不要对项目做任何修改。如果只有你一个人开发项目,而你又想放弃较近的所有提交,并恢复到以前的状态,也可以将项目重置到以前的提交。为此,可以在处于master分支上执行如下命令:

我们首先查看了状态,确认我们在master分支上。查看提交历史时,我们看到了两个提交。然后,执行命令git reset --hard,并在其中指定了要永久地恢复到的提交的引用ID的前6个字符。再次查看状态,发现我们在master分支上,且没有需要提交的更改。再次查看提交历史时,发现我们处于要从它重新开始的提交中。

更多

最后,推荐一个网站 Learn Git Branching:https://learngitbranching.js.org/

以闯关+可视化的形式学习Git相关知识。

参考

  • https://book.douban.com/subject/26829016/

eclipse查看git地址_使用Git进行版本控制相关推荐

  1. eclipse查看git地址_在 IntelliJ IDEA 中使用 Git,太方便了

    作者:J'KYO 1.git简介 git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在 ...

  2. git服务器查看用户信息,git 查看当前git用户_新Git用户使用方法

    git 查看当前git用户 This post is a tutorial for new users to set up git and clone and use the first reposi ...

  3. git 命令git 地址_这是我上周使用的所有Git命令及其作用。

    git 命令git 地址 by Sam Corcos 由Sam Corcos 这是我上周使用的所有Git命令及其作用. (Here are all the Git commands I used la ...

  4. git文件共享_与Git共享文件

    git文件共享 Git是那些设法将大量现代计算封装到一个程序中的罕见应用程序之一,最终成为许多其他应用程序的计算引擎. 尽管它最着名的是跟踪软件开发中的源代码更改,但它还有许多其他用途,可以使您的生活 ...

  5. 中文提交到git乱码_解决git 提交后中文字符会乱码的问题

    解决git 提交后中文字符会乱码的问题 最近发生那了一件怪事,当然菜鸡经常碰见怪事 本来一个.properties文件在idea里面commit的时候看了一下diff,没发现异常,但是提交到gitla ...

  6. git 删除git管理_使用Git管理多媒体文件

    git 删除git管理 Git是专门为源代码版本控制而设计的,因此,主要用于纯文本格式的项目和行业很少使用它. 但是,异步工作流的优点很有吸引力,尤其是在越来越多的行业中,将严肃的计算与认真的艺术创作 ...

  7. 中文提交到git乱码_解决Git 中文乱码问题

    乱码情景对号入座和解决方案 乱码情景1 在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\ ...

  8. linux如何查看mac地址_查看mac地址 linux_linux查看mac地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XNXpHnwK-1660924515521)(http://img2.nlrsq.com/upfile/b13fd480 ...

  9. windows 本地搭建git仓库_搭建Git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...

最新文章

  1. Android自定义Layout
  2. 点云网络的论文理解(四)-点云网络的优化 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
  3. spring boot的多环境部署
  4. 函数调用关系图如何画_彩铅画入门植物教程 | 如何用彩铅画一株多肉?多肉彩铅画教程步骤图详细...
  5. 逐行对比两个文件内容的好用软件
  6. C++ - extern C用法浅析
  7. high definition audio控制器感叹号_三门峡回收科霸控制器
  8. http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd 报红
  9. MySql表空间的概念
  10. 国军标-Gjb软件设计说明书模板
  11. 身份证号码归属地查询接口分享
  12. 图形点选中的算法应用-点线距离计算
  13. 成考专科计算机专业,我是计算机专科生,成考想换个专业,请问学什 – 手机爱问...
  14. 金融壹账通拟7月4日香港上市:2年亏近30亿 市值蒸发超90%
  15. 北辰创业笔记:百度引流推广有用吗?百度引流最有效的方法
  16. 从最新的技术趋势看前端的未来
  17. 大都会人寿三周的工作回顾
  18. horizontal sagittal and coronal planes (水平面,矢状面,冠状面)
  19. CSS解决英文自动换行问题
  20. 使用tcpdump探测TCP/IP三次握手

热门文章

  1. BAdI to control ALV grid display
  2. 一些SAP UI5代码审查的例子
  3. 使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)
  4. 如何将S/4HANA系统存储的图片文件用Java程序保存到本地
  5. OpenFOAM中:点,线,面,体的概念区别(尤其是face和patch的区别)
  6. php中orm模型,模型model
  7. php mysql连续签到跨月_PHP连续签到功能实现方法详解
  8. python中s和t是两个集合、对s|t描述正确的是_全国计算机等级考试二级教程--python语言程序设计(2018年版)第六章:组合数据类型...
  9. Redis简介及入门
  10. conda常用命令汇总