分布式版本控制git

简介: 分布式版本控制git

git

分布式版本控制,最流行的版本控制工具。

安装 git

Linux上:

 在linux 上我们建议你用二进制的方式来安装 git ,可以使用发行版包含的基础软件包管理工具来安装,如果你是是CentOS 或者 Fedora 的操作系统,可以使用 yum 命令来安装 git

$ sudo yum install git

      如果你是ubuntu 或者是 Debian 可以使用 apt get 的命令来安装 git

$ sudo aptget install git        

Windows上安装:

在Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开

http://git scm.com/download/win,会检查你的操作系统是 32 位的还是 64 位的,并自动开始下载对应的安装包。

MAC上安装 git :

 首先查看电脑是否已经安装git ,打开终端输入git 。方法一:通过homebrew 安装 git:首先homebrew::/usr/bin/rubye"$(curlfsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install安装git: brew install git。方法二:通过xcode:直接从AppStore 安装 Xcode Xcode 集成了 Git ,不过默认没有安装,你需要运行 Xcode ,选择菜单 Xcode”Xcode”-->“Preference",在弹出窗口中找到“Downloads”Downloads”,选择 Command Line “Tools”,点 Install” 就可以完成安装了。

配置git

       当安装完Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

$ git config --global user.name “用户名”        //全局修改

$ git config --global user.email 邮箱

$ git config --local user.name “用户名”          //当前目录修改

$ git config --loacal user.email 邮箱

  如果使用了global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情,Git都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有global 选项的命令来配置。很多 GUI 工具都会在第一次运行时帮助你配置这些信息。你也可以使用git config list 来查看 git 的所有配置。

获取帮助

$ git help <verb>

$ git <verb> help

$ man git-<verb>

当然,如果你遇到问题也可以查看git 的官方文档。https://gitscm.com/book/zh/v2 

分布式:

创建仓库(初始化空的仓库)

$ git init --bare                   #初始化空仓库,里面并不会存储具体代码,只有一些版本信息

$ git init                             # 如果仓库有代码,会显示代码

远端仓库

git clone 用户名@ip:/path/to                                  #远端仓库的拉去

   这个过程需要输入用户密码,才可以进行拉取。如果不想输入密码,可以利用 ssh 公钥和私钥,把公钥拷贝到对方的机器当中。可以利用如下命令:

$ ssh-keygen -t rsa                                    #   -t rsa 加密算法          

一直点Enter 可以得到如下所示,创建成功。


这时在C盘-->用户-->当前用户名-->.ssh文件可以找到:

我们将.pub为文件拷贝到需要控制的机器的当前路径下,这样就不需要输入密码了。ssh 非对称加密,本地的数据+私钥(id_rsa)一起发送,到达对方的机器利用公钥(id_rsa.pub)解密。

git的原理

git的四个区域

Workspace: 工作区,就是你平时存放项目代码的地方。

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。

Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。

Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

注意:git 与 svn 的区别,svn 没有index。

工作流程

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件add到暂存区域;

3、将暂存区域的文件commitgit仓库;

4、本地的修改push到远程仓库,如果失败则执行第5

5git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步

因此,git管理的文件有三种状态:已修改(modified,已暂存(staged,已提交(committed)

文件的四种状态

Untracked:   未跟踪, 此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add 状态变为Staged

Unmodify:   文件已经入库且未修改, 即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改,而变为Modified,如果使用gitrm移出版本库, 则成为Untracked文件。

Modified文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout 则丢弃修改,返回到unmodify状态, 这个git checkout即从库中取出文件,覆盖当前修改

Staged暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态。

常用的指令

正向操作

$ vi hello.c                                  # :x 表示不修改时间保存

$ git add hello.c                           #加入暂存区

$ git status                                   #显示当前状态

$ git commit hello.c -m "first commit"         #提交到本地仓库

$ git log                                        #查看提交记录

$ git branch                                  #显示当前分支

其中的含义:

1.当前文件经过sha1的哈希算法生成的哈希值,该哈希值代表本次的提交。

2.当前最新提交的指针。

3.当前的分支。

4.提交的注释。

$ git config --local -l

实际上这些信息就是在C盘-->用户-->当前用户名-->.gitconfig 文件中。

$ git push origin master                            #推送到远端仓库

逆向操作 :

$vi world.c

$git add world.c                            

$git restore -S .                                #从暂存区返回到当前工作区

$git status

$ git commit world.c -m "first commit world"

$git log

$ git reflog

$git reset head~1                              # ~1表示回退一个版本,从本地仓库退回到工作区

$git log

提交到本地仓库后看到的提交记录:

执行git reflog 得到 显示不同阶段提交的哈希值的前七位以及head~版本号。

执行完$git reset head~1 与 $git log 得到当前只有一次提交记录:

注意reset的不同参数:

$git reset --mixed head~1                        # 从本地仓库退回到工作区

$git reset --soft head~1                            # 从本地仓库退回到暂存区

$git reset --hard head~1                           #抹掉上一次commit。

整理操作:

$git commit --amend                       #整理最近的提交

$git rebase -i                                   #整理以前的提交

      命令git commit --amend演示,开始的提交记录为:

执行完命令以后可以将commit 2 改为commit 01。

当然也可以修改提交的文件内容:

$vi world.c

$git add world.c

$git commit --amend

将左图的信息改为右图后再进行提交,可以看到并没有新的提交记录。

       始终记住的$git rebase -i 针对的是本地仓库(repository)整理操作!!

合并操作演示:

git rebase -i    

git rebase -i 版本号(七位) 版本号

出现如下界面,选择将 commit 02 合并到 commit 01,然后会再次修改提交注释。

修改操作演示:

       我们现在要修改commit hello 的这次提交文件hello.c里面的内容。

#依次执行如下操作:

$git rebase - i                        #将  pick  --> e

$ vi hello.c                            #修改内容

$git add hello.c                     #将修改的内容再次加入暂存区

$git commit --amend            #必须再次amend

$git rebasse --continue

解决冲突

一般是远端仓库(remote)与工作区(workspace)发生冲突。

我们现在工作区repo-a和工作区repo-b分别都有一个world.c文件,我们将repo-a中的world.c修改够提交到远端仓库。我们再工作区repo-b也进行修改world.c文件,经过add ,commit 提交到本地仓库。git pull拉取远端仓库,这是就产生了冲突,我们就可以打开冲突文件。进行修改后再次推送到远端仓库。

当前打开的冲突文件:

创建及切换分支

$git branch develop                         #创建develop分支

$git checkout develop                      #切换到develop分支

$git checkout -b debug                    #切换到debug分支,如果没有该分支创建分支。

合并分支

# 将dubug分支合并到master分支

先将dubug分支推向远端仓库,再切换到master分支.

再执行:$ git merge dubug                     #将dubug分支合并到当前分支。

注意:项目开发过程中先编译通过再进行提交!






相关文章
|
3月前
|
Linux 开发工具 git
掌握 Git:版本控制的艺术
Git 是由 Linus Torvalds 开发的分布式版本控制系统,广泛用于代码管理和团队协作。其核心价值在于分布式特性、数据完整性和支持非线性开发。本文介绍 Git 的安装、仓库初始化、文件管理、分支管理、远程仓库操作及撤销操作等基础与高级技巧,助你掌握版本控制的艺术。通过实践,你将能更高效地利用 Git 进行代码管理和团队协作。
|
2月前
|
开发工具 git 开发者
Git 作为最流行的分布式版本控制系统之一,为开发者提供了强大的功能和灵活的操作方式
本文深入介绍了 Git 中的 `git rebase` 操作,涵盖其基本概念、原理、与 `git merge` 的区别、具体操作步骤及应用场景,如保持提交历史整洁、解决合并冲突等,并讨论了其优缺点。强调在公共分支上谨慎使用 rebase,以避免潜在的风险。
43 6
|
2月前
|
存储 算法 开发工具
Git 作为最流行的分布式版本控制系统之一
Git 作为最流行的分布式版本控制系统之一,为开发者提供了强大的功能和灵活的操作方式
52 2
|
2月前
|
测试技术 持续交付 开发工具
Git版本控制在团队协作中具有重要作用
Git版本控制在团队协作中具有重要作用
42 1
|
2月前
|
数据可视化 开发工具 git
如何解决 Git 版本控制系统中冲突的问题?
在Git版本控制系统中,冲突是指在合并或拉取操作时,两个或多个开发者对同一文件的同一部分进行了不同的修改,导致Git无法自动确定应该采用哪种修改。
45 1
|
2月前
|
Ubuntu 开发工具 git
Git高手必备:掌握这些版本控制最佳实践,让你的代码管理效率翻倍!
【10月更文挑战第25天】使用 Git 进行版本控制是现代软件开发的重要部分。本文详细介绍了 Git 的安装、配置、基本操作、分支管理、冲突解决及常用命令,帮助开发者提高工作效率,确保代码质量和团队协作的顺利进行。通过合理使用 Git,可以有效管理代码变更,支持多人协作,并追踪历史记录。
120 4
|
2月前
|
开发工具 C# git
C#一分钟浅谈:Git 版本控制与 GitFlow 工作流
【10月更文挑战第22天】本文介绍了 Git 和 GitFlow 的结合使用,从基础概念到具体操作,涵盖了安装配置、基本命令、GitFlow 工作流的核心分支和流程示例。同时,文章还讨论了常见的问题和易错点,如忽略文件、冲突解决、回退提交和分支命名规范,并提供了代码案例。通过学习本文,读者可以更好地理解和应用 Git 及 GitFlow,提高团队协作效率。
74 1
|
2月前
|
存储 项目管理 开发工具
掌握Git版本控制,提升团队协作效率
掌握Git版本控制,提升团队协作效率
69 0
|
4月前
|
存储 Linux 开发工具
掌握版本控制的艺术:Git 技巧深度解析
在软件开发中,版本控制对于代码管理和团队协作至关重要。Git 作为最流行的分布式版本控制系统,凭借其强大的功能和灵活性成为开发者必备工具。本文深入探讨 Git 的高级技巧和最佳实践,包括交互式暂存、撤销提交、合并冲突处理等,帮助你更高效地使用 Git。通过遵循清晰的提交信息、保持提交原子性、利用分支开发等最佳实践,开发者可以更好地管理代码库,提升协作效率。
|
2月前
|
开发工具 git
掌握Git版本控制,提升团队协作效率
掌握Git版本控制,提升团队协作效率

热门文章

最新文章