分布式版本控制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分支合并到当前分支。

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






相关文章
|
2月前
|
项目管理 开发工具 git
Python面试题:Git版本控制与协作开发
【4月更文挑战第19天】本文聚焦于Python面试中Git版本控制与协作开发的考察点,涵盖Git基础、协作流程及实战示例。面试者需理解仓库、提交、分支等核心概念,掌握常用命令,熟悉主干开发和GitFlow策略。在协作开发中,要掌握Pull Request工作流,有效处理合并冲突,并善用标签与里程碑。注意避免混淆工作区、忽视代码审查和直接在远程分支上工作等常见错误。通过实例展示了如何在GitFlow策略下合并分支和解决冲突,强调持续学习与实践以提升Git技能。
40 1
|
2月前
|
数据采集 开发工具 git
《Git 简易速速上手小册》第2章:理解版本控制(2024 最新版)
《Git 简易速速上手小册》第2章:理解版本控制(2024 最新版)
48 2
|
2月前
|
开发工具 git 开发者
Git常用命令大全:让你轻松驾驭版本控制
Git命令速查:`git init`新建仓库,`git clone`克隆,`git add`入暂存区,`git commit -m`提交,`git status`查看状态,`git log`查看历史,`git branch`创建分支,`git checkout`切换,`git merge`合并,`git pull`拉取更新,`git push`推送,`git remote -v`查看远程,`git checkout --`撤销本地修改,`git reset HEAD`取消暂存,`git reset --hard`回退版本。掌握这些,提升代码管理效率!
36 0
|
2月前
|
项目管理 开发工具 git
版本控制与源代码管理:在 Visual Basic 项目中使用 Git
【4月更文挑战第27天】本文介绍了在Visual Basic项目中使用Git进行版本控制和源代码管理的重要性。Git作为一个流行的分布式版本控制系统,具备分布式架构、高效性能和强大分支管理等特点。在项目中,需先安装Git,然后初始化仓库、添加文件和提交更改。常用操作包括查看状态、日志、创建及切换分支和合并分支。团队协作时,借助远程仓库和推送拉取命令实现代码共享。虽然Git有学习曲线,但其优势在于强大的功能、灵活性和社区支持,能提升开发效率和代码质量。通过学习和实践,开发者可充分利用Git优化协作和项目管理。
|
20天前
|
Linux 项目管理 开发工具
如何利用Git进行高效的版本控制
【7月更文挑战第3天】Git是一个强大的版本控制系统,通过掌握其基本操作、遵循最佳实践并学习一些高级技巧,你可以更加高效地进行版本控制,提升开发效率和代码质量。希望本文能为你的Git之旅提供一些有益的帮助。
|
25天前
|
开发工具 git
Git进行代码版本控制
Git进行代码版本控制
|
1月前
|
Linux 持续交付 开发工具
版本控制系统的选择:Git vs. Mercurial
【6月更文挑战第20天】Git vs. Mercurial: 两者都是流行的DVCS,Git由Linus Torvalds创建,以其速度和复杂分支管理著称,适合大型项目和有经验的开发者。Mercurial,由Matt Mackall开发,以其简洁命令行和易用性吸引初学者。Git社区更大,扩展更丰富,而Mercurial在某些场景下可能更直观。选择取决于项目需求、团队经验和偏好。
|
1月前
|
开发工具 git 开发者
使用Git进行版本控制的最佳实践
【6月更文挑战第3天】使用Git进行版本控制的最佳实践包括:初始化配置Git仓库,设置个人信息和默认编辑器;提交信息要简洁明了,使用有意义的标题和描述;分支管理中,为新功能或修复创建分支,定期合并并保持主分支稳定;进行代码审查以保证质量;使用标签标记里程碑;忽略不必要的文件;定期备份仓库并学会恢复操作;不断学习和实践Git的高级用法。遵循这些实践可提升开发效率和代码质量。
|
2月前
|
开发工具 git 开发者
Git入门:轻松掌握版本控制的艺术
【5月更文挑战第13天】Git是流行的版本控制系统,适合各种规模的项目。本文引导读者入门Git,学习版本控制艺术。内容涵盖Git简介、安装配置、基础操作(如初始化、添加文件、提交、查看状态和历史)、分支管理、协作开发(克隆、推送、拉取)及高级用法,如标签管理、子模块和版本比较。遵循最佳实践,如频繁提交、有意义的提交信息和合理分支管理,可提升开发效率。
|
2月前
|
前端开发 持续交付 开发工具
【专栏:工具与技巧篇】版本控制与Git在前端开发中的应用
【4月更文挑战第30天】Git是前端开发中的必备工具,它通过分布式版本控制管理代码历史,支持分支、合并、回滚等操作,促进团队协作和冲突解决。在前端项目中,Git用于代码追踪、代码审查、持续集成与部署,提升效率和质量。优化协作包括制定分支策略、编写清晰提交信息、定期合并清理分支及使用Git钩子和自动化工具。掌握Git能有效提升开发效率和代码质量。

相关实验场景

更多