Git的使用教程(2)

这一篇博文接着上一篇博文:Git的使用教程(1) 补充一些内容~

一、基础操作

这里需要先来配置一下Git的默认编辑器,在修改工程版本的注释和描述时需要用到 我的电脑是Windows系统,想要设置的编辑器是Notepad++ 在目录C:\Users\用户名打开.gitconfig文件,向之添加下面一句配置口令,将文件路径修改为自己电脑对应的程序安装路径即可

[core]
    editor = 'C:/Software/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin

还是先在D盘初始化一个仓库test,当前仓库为空

这里写图片描述

手动创建一个1.txt文件,将之添加到仓库中

git add 1.txt
git commit -m '第一个版本,添加了1.txt文件'

这里写图片描述

再手动创建一个2.txt,将之添加到仓库中

git add 2.txt
git commit -m '第二个版本,添加了2.txt文件'

这里写图片描述


之前说过可以用

git log

来查看所有版本信息,其实该命令也可以用来查看指定目录或者文件的日志 查看1.txt的日志信息

git log 1.txt

这里写图片描述

可以看到1.txt文件只保存有第一个版本时的日志信息,因为在第二个版本时它并没有改动

再来查看2.txt文件的日志信息

这里写图片描述

同理,2.txt文件则只有第二个版本时的信息


前边说过

git diff

命令可以查看文件的前后变化,准备来说,该命令是可以查看工作区、暂存区、最新提交之间的差别

向1.txt文件手动添加一行内容:111111111111,查看变化

这里写图片描述

因为此时1.txt文件还未提交到暂存区中,所以该命令查看的是工作区与最新提交之间状态的差别 “+”号表示的是添加的内容 “-”号表示的是删除的内容(这里并没有标示出来,因为只增添了内容)

先将1.txt文件添加到暂存区,再来查看变化

这里写图片描述

可以看到并没有提示文件差异,因为此时对比的是工作区与暂存区之间的差别,而此时文件内容是一样的

如果想要再查看工作区与最新提交之间差别,可以使用

git diff head

这里写图片描述

最新提交的内容为空,可以看到对比最新提交还是多出了一行内容

将1.txt文件提交到仓库,并查看版本信息

这里写图片描述

二、分支操作

master是git默认创建的分支,在进行并行开发的过程中,往往就需要创建多个分支,让多人同时进行开发 不同的分支拥有不同的代码状态,同时进行完全不同的作业,等作业完成后就可以将分支合并

先创建并切换到feature-A分支

git checkout -b feature-A

然后查看当前所有分支

git branch

这两条命令上篇博文也讲到了

这里写图片描述

可以使用以下命令切换回上一个分支,即master

git checkout -

这里写图片描述

再切换回feature-A分支 当前1.txt的内容应该只有一行,再增添一行内容,现在完整的内容应该是:

111111111111
222222222222

将1.txt文件提交到仓库

这里写图片描述

再切换回master分支,查看1.txt文件内容

git checkout master

cat 1.txt

这里写图片描述

可以看到feature-A分支下的修改对master下的文件并没有影响

再向1.txt文件添加一行内容,此时应为:

111111111111
333333333333

再提交文件

这里写图片描述

尝试在master分支下合并两个分支的内容

git merge feature-A

这里写图片描述

可以看到提示说:自动合并失败,请解决冲突后再提交 因为在两个分支下,1.txt文件的第二行都有内容,且内容不同,git不知道该如何合并 而且,此时打开1.txt文件,可以看到内容变成了

111111111111
<<<<<<< HEAD
333333333333
=======
222222222222
>>>>>>> feature-A

提示了冲突的分支和冲突内容,需要我们手动修改该文件内容,然后再提交 将文件内容修改为

111111111111
333333333333
222222222222

向仓库提交文件

这里写图片描述

有时,采用图表形式输出提交日志看起来可能会比较直观 feature-A分支内容的改变以及合并操作也一目了然

git log --graph

这里写图片描述

三、修改操作

前边的版本号也比较乱了,这里在Git文件夹下再来重新建立一个新的仓库 然后手动建立一个1.txt文件,文本内容为,将之添加到仓库中

init object git

这里写图片描述

此时,提交时的描述内容是“第一个版本,添加了1.txt文件”,如果想要修改它,可以使用如下命令

git commit --amend

此时,Notepad++就会被启动,这样就可以来修改其描述内容了,以“#”符号注释的内容可以不用理会

这里写图片描述

将描述内容修改为

这里写图片描述

修改完成后关闭编辑器,确认保存即可 再来查询版本信息,可以看到描述内容已经修改了

这里写图片描述

其实,在提交文件到仓库时,如果想要提交多行描述文本,可以不用加-m参数,即直接用

git commit

这样也可以启动Notepad++,就可以输入多行文本了


此时,再将1.txt文件中的“git”单词删去,重新提交

这里写图片描述

再将“object”单词删去,重新提交

这里写图片描述

此时的版本号情况

这里写图片描述

这里只是删去了一个单词,就又多了一个版本号,这里来尝试将最新两个版本号合并

git rebase -i head~2

此时,Notepad++会自动启动

这里写图片描述

对比上图查询到的版本信息已经描述内容,可以知道前两行内容的意义

这里将73b0cbc的历史记录压缩到e8d6634中,即删除最新一条记录,将之合并到第二条,将前两行文本修改为

pick e8d6634 删去了单词git
fixup 73b0cbc 删去了单词object

退出保存 再来查询当前版本信息

这里写图片描述

可以看到版本变成了两个,且最新一个版本号与之前两个均不一样,这个是合并后得来的

可此时最新版本号的描述内容也不太正确,因为被删除了的单词有两个,这里再来修改下

git commit --amend

此时,Notepad++就会启动,将描述内容修改为

删去了单词git和object

退出保存 再来查询版本号信息,已经被正确改动了

这里写图片描述

四、远程仓库操作

在GitHub上新建一个仓库,命名为GitTest,具体步骤可以参考我上一篇博文,注意不要生成README文件

这里写图片描述

在GitHub上创建的仓库路径为:https://github.com/initobject/GitTest.git

这里写图片描述

现在再来将之设置成本地仓库的远程仓库

git remote add origin https://github.com/initobject/GitTest.git

Git会自动将远程仓库的名称设置为origin

然后将本地仓库当前分支下的所有内容推送到远程仓库

git push -u origin master

这里写图片描述

如此执行后,当前分支的内容就会被推送到远程仓库origin的master分支 -u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的上游(upstream)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦

刷新GitHub网页,可以看到代码已经上传到了仓库了 比如我的GitHub仓库:https://github.com/initobject/GitTest

这里写图片描述

此外,也可以为远程仓库设置分支 现在本地创建一个feature-A分支

git checkout -b feature-A

再将之push远程仓库并保持分支名称相同

git push -u origin feature-A

这里写图片描述

刷新GitHub网页,可以看到多了一个新分支,而文本内容一样

这里写图片描述


现在重新创建一个新仓库Git_New,用来从GitHub获取之前提交的内容

这里写图片描述

远程仓库的地址可以从这里获取

这里写图片描述

git clone https://github.com/initobject/GitTest.git

这里写图片描述

可以看到Git_New文件夹下也多了一个新目录GitTest,即是我们之前上传的

可以将所有文件提交到仓库中

git add .  (符号“.”表示增加工作区所有文件到暂存区)
git commit -m '增添了GitTest文件夹'

这里写图片描述

因为GitTest仓库是从远程仓库clone而来的,此时,GitTest仓库的master分支是与GitHub远程仓库相的master分支在内容上是完全相同的

进入GitTest文件夹

cd GitTest

之前,我为GitTest仓库设置了feature-A分支,这里再来试着将该分支获取至本地仓库,

git checkout -b feature-A origin/feature-A
// feature-A 表示本地仓库要新建的分支名
// origin/feature-A 代表以origin为名的远程仓库的feature-A分支

这里写图片描述

再来查看当前分支的相关信息

git branch -a

// -a 加上该参数可以同时显示本地仓库与远程仓库的分支信息

这里写图片描述

切换回master分支,为1.txt文件增添一个单词:object 现在的内容应该是

init object

再查看当前状态

这里写图片描述

提示1.txt文件未提交 提交该文件,并推送到远程仓库

git push

推送前需要先输入GitHub账户名与密码

这里写图片描述

刷新GitHub网页,可以看到仓库的描述文本都被改变了

这里写图片描述


现在再回到一开始使用的Git仓库,即步骤三使用的仓库

重新打开该仓库的方法是进入Git文件夹,鼠标右键点击Git Bash Here即可

因此在之前我们在本地向远程仓库的master分支推送了新内容,本地的仓库是旧的的,这里再来获取远程仓库的最新内容

git pull origin

这里写图片描述

查看版本变化,可以看到最新版本号就是之前推送的

这里写图片描述

这样,本地仓库的内容也得到了更新 这种方式方便于进行多人合作开发,一人向远程仓库推送开发内容,另一人获取到本地,修改完成后再提交到远程仓库,也可以在不同分支下分开开发,如此循环反复直至软件培育完成

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玩转JavaEE

Git分支管理

Svn中也有分支管理,但是很low,Git的分支管理非常强大,本文先不去说分支管理内部到底怎么做的,我们先来看看Git中最基本的分支管理操作。 本文是Git系列...

3795
来自专栏维C果糖

在 Win10 系统下安装 JDK 及配置环境变量的方法

首先,在官网下载 JDK:Oracle 官网 ? 如上图所示,在 Oracle 官网下载 JDK,有一点需要注意,那就是在咱们下载合适的 JDK 之前,需要先点...

21210
来自专栏技术博文

nginx 日志切割

1.nginx_log_rotate.sh文件 #nginx日志切割脚本 #author: joshau317 #!/bin/bash #1.设置日志文件存放...

3115
来自专栏运维小白

7.6 yum更换国内源

更换yum国内源 cd /etc/yum.repos.d/ rm -f dvd.repo wget http://mirrors.163.com/.help/C...

6966
来自专栏技术点滴

最简git Server配置

最简git Server配置 如何保持多台计算机的项目代码的同步更新呢?通过在一个公用计算机上开启git服务,任何能与该计算机互联的终端都可以同步最新的项目代码...

25610
来自专栏码农分享

Chrome的插件扩展程序安装目录是什么?在哪个文件夹?

1.windows xp中chrome插件默认安装目录位置: C:\Documents and Settings\用户名\Local Settings\App...

3565
来自专栏云计算教程系列

如何使用Restic Backup Client将数据备份到对象存储服务

Restic是一个用Go语言编写,安全且高效的备份客户端。它可以将本地文件备份到许多不同的后端存储库,例如本地目录,SFTP服务器或对象存储服务。

2172
来自专栏北京马哥教育

五分钟学会 Linux ACL 权限的全部内容

ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的...

1122
来自专栏自动化测试实战

Flask第四篇——第一个程序

3308
来自专栏编程语言

Python:VScode 设置Python不同版本运行环境

1.首先本地安装有不同的Python的版本,比如2.7和3.5.mac下一般默认自带2.7版本。  终端输入侧  python -V 则显示默认版本号。而p...

1102

扫码关注云+社区