Git版本控制

Version Control Systems

大型公司在开发一个项目时通常有一个团队进行代码的编写,为了使这些成员之间能进行代码的共享融合,产生了分布式版本控制(version control )系统,为的就是促进协同(collaboration)工作。
版本控制系统有很多,比如Mercurial, Subversion.其中Git是目前最受欢迎的一个。Git是一个命令行工具,在shell中输入git即可访问。
使用Git的第一步是初始化一个文件夹作为仓库(repository),这个仓库会跟踪文件夹中文件的多个版本,使之协调工作。在你想要建成仓库的文件夹下输入git init来初始化这个文件夹为仓库。

  • 下面新建一个文件夹random_numbers,然后将其初始化为一个仓库:
~$ mkdir random_numbers                    
~$ cd random_numbers                       
~/random_numbers$ git init                 
Initialized empty Git repository in /home/d
q/random_numbers/.git/                     

The .Git Folder

  • 初始化一个Git仓库时会自动在仓库下创建一个名为.git的文件夹,以 . 开头的文件夹以为着这个文件夹是私有的,默认不会显示出来。
  • 使用 ls -al命令来观察下是否有这个文件:
~/random_numbers$ ls -al                                                        
total 12                                                                        
drwxr-xr-x  3 dq dq   4096 May  5 00:52 .                                       
drwxr-xr-x 11 dq root 4096 May  5 00:52 ..                                      
drwxr-xr-x  7 dq dq   4096 May  5 00:52 .git                                   

Creating Some Files

Git的工作:添加文件,修改文件,存储文件(commits),Git并不是每次commit都存储所有文件,而是只存储修改(diff:前后两次commit的区别)。每个项目就是由一系列的commits组成,这些commits使我们可以将每个人做的修改融合在一起,并且提供了回滚操作(恢复到某次commit之前的状态)。

  • 首先在仓库中创建一个名为README.md的文件,内容为:Random number generator
  • 然后创建一个Python脚本script.py,内容为:if name == “main“: print(“10”)
~/random_numbers$nano README.md
# 输入Random number generator保存
~/random_numbers$nano script.py
# 输入if __name__ == "__main__": print("10")保存

Git Status

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

我们可以执行git status命令来查看仓库中文件的状态,没有显示出来的文件表示处于committed 状态。如果我们修改了一个文件(modified 状态),然后我们可以用git add命令将其添加到已暂存区域(staged 状态)。

  • 首先执行git status来查看仓库中文件的状态,然后将前面创建(modified 状态)的两个文件script.py 和README.md添加到已暂存区域(staged 状态)。
~/random_numbers$ git status                       
On branch master                                   

Initial commit                                     

Untracked files:                                   
  (use "git add <file>..." to include in what will be committed)                                      

        README.md                                  
        script.py 

nothing added to commit but untracked files present
 (use "git add" to track)  

~/random_numbers$ git add script.py                
~/random_numbers$ git add README.md  

Configuring Git

在提交之前,我们需要告诉Git提交者是谁,这样它才会在这次提交中存储提交者的信息,这确保了这个团队中每个人都能看到是谁提交了什么。我们可以执行git config命令来获取你的信息,通常每台电脑只需要执行一次这个命令,告诉Git你的详情就可了。Git需要获取你的两个信息:email以及name.

~/random_numbers$ git config --global user.email "[email protected]"
~/random_numbers$ git config --global user.name "Dataquest User"

Committing

一个提交其实就是对当前目录中文件在当前时间点的一个快照(snapshot )。通过存储这些快照的历史,我们可以回滚到任何之前的时间点。或者与其他人的修改进行融合。利用git commit -m “Commit message here”命令执行提交操作。这个命令的的惯例是提交一些信息,所以如果你确实做了回滚操作或者进行了代码融合,那么很显然就会提交这些信息。

~/random_numbers$ git commit -m "Initial commit. Added script.py and README.md" [master (root-commit) 56347bb] Initial commit.Added script.py and README.md 2 files changed, 3 insertions(+) create mode 100644 README.md create mode 100644 script.py

File Differences

现在我们修改一些文件,然后进行第二次提交。在将文件添加到已暂存区域(staged 状态)前,我们先使用git diff命令来查看一下文件当前版本和上一次提交后的版本之间的区别,如果你想看当文件已暂存后的却别可以使用git diff –staged命令。

  • 首先我们对script.py 文件进行修改,使其输出一个0到10之间的随机整数。然后查看当前版本和上一次提交后的版本之间的区别。其中绿色的代表添加的代码,红色代表删除的代码

Git版本控制_第1张图片

  • 然后使用git status来查看当前文件的状态,注意已提交的文件不会显示,比如README.md:

    Git版本控制_第2张图片

Making A Second Commit

  • 首先将script.py文件添加到已暂存区域(staged 状态),然后进行提交操作:
~/random_numbers$ git add script.py                                             
~/random_numbers$ git commit Aborting commit due to empty commit message. # 每次提交都要携带一些提交的信息,可以提醒别人这次提交修改了哪些东西。 ~/random_numbers$ git commit -m "commit script.py again!" [master 7471cfd] commit script.py again! 1 file changed, 2 insertions(+), 1 deletion(-) 

Looking At The Commit History

  • 通过git log命令可以产看提交记录日志,以创建日期降序排列显示一个提交列表给你。当log很长是,可以利用q键退出。

Git版本控制_第3张图片

Seeing Commit Differences

  • 利用git log –stat命令可以产看提交的更详细的信息:
~/random_numbers$ git log --stat                                                
commit 7471cfd0dda3aa5b5f5dc4088540599a9cb9ec01                                 
Author: Dataquest User <user@dataquest.io>                                      
Date:   Thu May 5 02:17:05 2016 +0000                                           

    commit script.py again!                                                     

 script.py | 3 ++-                                                              
 1 file changed, 2 insertions(+), 1 deletion(-)                                 

commit 4091b4b7e338645cf0a8a75b9012cb11432182c8
Author: Dataquest User <user@dataquest.io>                                      
Date:   Thu May 5 02:14:02 2016 +0000                                           

    Initial commit.  Added script.py and README.md                              

 README.md | 1 +                                                                
 script.py | 2 ++                                                               
 2 files changed, 3 insertions(+)   

你可能感兴趣的:(Git版本控制)