git 的基本操作 Master and branch的版本合并 @ VS 1019

作者 : admin 本文共4101个字,预计阅读时间需要11分钟 发布时间: 2024-06-10 共2人阅读

前言:

在VS 2019有git 的可视化管理,但,感觉微软其实就是在git上包了一层。版本冲突后,还是要靠git 的命令行代码搞。本文记录了一次,branch和master的版本合并的过程。作为,后续的参考。

【注意,这个是一个本地版本的例子】


1 版本情况:

1 查看本地版本:

git status

 git 的基本操作 Master and branch的版本合并 @ VS 1019插图

确认在分支版本上, 

可以用

git log

 git 的基本操作 Master and branch的版本合并 @ VS 1019插图(1)

 看一下,现在是在HEAD -> Branch…. 分支上面,

分支版本的情况,并确认分支版本的版本ID,cbef9b7b6eb8658ee7a96f12c61c5957e99316e1

1.1 看主支版本:

git log master

 git 的基本操作 Master and branch的版本合并 @ VS 1019插图(2)

并获取,准备合并的主支版本的ID , 71ee9e4af6a7e2052281a114b73396fb1f2dde5b


2 CHECK OUT 主支版本:

git checkout master

提示从分支到主支版本的改变, 

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(3)

 用git log 确认一下,主支版本情况

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(4)

确认我们在主支版本上了,

然后, 最好用

git reflog

 查一下所有,支的版本,主,分支,包括,已经删除的支的版本,

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(5)


3 Merge

选定上面显示的分支版本ID,进行Merge

$ git merge cbef9b7

Performing inexact rename detection: 100% (585/585), done.
Performing inexact rename detection: 100% (595/595), done.
。。。。。。
CONFLICT (content): Merge conflict in AAMED.dir/Debug/AAMED.log
Automatic merge failed; fix conflicts and then commit the result.
【发现冲突文件】

注意,执行后,在主支上,命令行会显示,你现在是正在合并版本的状态:蓝色的字体,MERGING

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(6)


 4 解决冲突:为了标识颜色的信息,这里截图:

4.1 很乱的各种冲突信息:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(7)

【案】其实我们只需要解决绿框里面两个源码冲突,其他的都不是我们要的。


4.2 先把关系的变更给交到提交列表:

在红区的两个CPP文件,是我们真正要提交的源码:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(8)

我们先在编码的VS 2019IDE里面打开这两个文件:会发现,GIT已经自动将Master 和 Branch的版本比较,冲突标记加到对应的源码的上下文里面了:

<<<<<<< HEAD

这是主分支中的内容 (Master)

=======

这是要合并的分支中的内容 (Branch)

>>>>>>>

要合并的分支

由于我们是把Branch Merge 到 Master,

所以,Master的原来的东西,要被Branch给替换掉,也就是

这段信息的意义:

<<<<<<< HEAD

这是主分支中的内容 (Master) 这里面的内容要被替换掉

=======

这是要合并的分支中的内容 (Branch) 这里面的内容要保留

>>>>>>>

不过,具体也要看你的应用情况,你需要自己做出判断,反正,要决定哪些保留,哪些删除,然后,去掉

 <<<<<<< HEAD

=======

>>>>>>>

这些辅助线,你的源码就改完了,可以存一下。

然后,我们要做的,就是把解决好的冲突的文件,加到要提交的列表里面:

git add
$ git add src/main.cpp
$ git add src/FLED_drawAndWriteFunctions.cpp

 加好后,用git status 看一下,是否在绿区:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(9)

OK ,在绿区了,但是,绿区有一堆,我都不想管的文件log啥的,要去掉,

现在要去掉不行进行版本管理的文件,有两个步骤:

步骤1 ,如果要长久的去掉这个文件,以后都不要管了:

那要通过在.gitignore文件中添加相应,在项目的版本控制路径下面,就是当前你操作的目录路径即可:

vim .gitignore

就可以打开相关的配置文件了,然后,想屏蔽哪个文件,哪类文件,直接写在里面的规则来实现

# 例如,所有的log文件
*.log
# 例如,目录Debug
/Debug


# 忽略所有文件
*
# 但不忽略.cpp文件
!*.cpp
# 也不忽略.gitignore和README.md文件
!.gitignore
!README.md

 步骤2 ,就是当前的绿区的文件:

用命令:

git reset 

比如,绿区也就是等待提交区,有一堆tlog的文件:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(10)

我们执行,

$ git reset HEAD *.tlog

再用git log查看,就有:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(11)

这样tlog的文件都去掉,然后,类似的方法去掉所有的绿区不需要提交的文件。


 现在绿区OK了,但是,红区还有文件

先处理: Unmerged paths 文件:

“both modified”意味着在当前分支和要合并的分支中对这些文件都有修改,并且这些冲突还没有被解决。
而且,由于这些文件已经进入和红区(也就是暂存区)(staged)了
通过上面的.gitignore 文件,已经来不及了

git reset HEAD 

 我们通过,上面的命令来取消这些暂存区的文件,红区文件

git reset HEAD -- AAMED.dir/Debug/*.obj 

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(12)

 执行后,我们看到Staged的红区文件里面obj的文件就被拿掉了,

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(13)

同样方法,我们拿到所有我们不想进行版本控制的,已经进入暂存区的文件:


接下来,我们来处理,连staged都没进去的问题
 Changes not staged for commit:

Changes not staged for commit:
  (use “git add …” to update what will be committed)
  (use “git restore …” to discard changes in working directory)
        modified:   .gitignore
        modified:   AAMED.dir/Debug/AAMED.log
        modified:   AAMED.sln
        modified:   AAMEDemo.dir/Debug/AAMEDemo.Build.CppClean.log
        modified:   AAMEDemo.dir/Debug/AAMEDemo.ilk
        modified:   AAMEDemo.dir/Debug/AAMEDemo.log
        modified:   AAMEDemo.dir/Debug/AAMEDemo.tlog/CL.command.1.tlog
        modified:   AAMEDemo.dir/Debug/AAMEDemo.tlog/CL.read.1.tlog
        modified:   AAMEDemo.dir/Debug/AAMEDemo.tlog/CL.write.1.tlog
        modified:   AAMEDemo.dir/Debug/AAMEDemo.tlog/link.read.1.tlog
        modified:   AAMEDemo.dir/Debug/AAMEDemo.tlog/link.write.1.tlog
        modified:   AAMEDemo.dir/Debug/Contours.obj
        modified:   AAMEDemo.dir/Debug/EllipseNonMaximumSuppression.obj
        modified:   AAMEDemo.dir/Debug/FLED.obj
        modified:   AAMEDemo.dir/Debug/FLED_Initialization.obj
        modified:   AAMEDemo.dir/Debug/FLED_PrivateFunctions.obj
        modified:   AAMEDemo.dir/Debug/FLED_drawAndWriteFunctions.obj
        modified:   AAMEDemo.dir/Debug/Group.obj
        modified:   AAMEDemo.dir/Debug/LinkMatrix.obj
        modified:   AAMEDemo.dir/Debug/Node_FC.obj
        modified:   AAMEDemo.dir/Debug/Segmentation.obj
        modified:   AAMEDemo.dir/Debug/Validation.obj
        modified:   AAMEDemo.dir/Debug/adaptApproxPolyDP.obj
        modified:   AAMEDemo.dir/Debug/adaptApproximateContours.obj
        modified:   AAMEDemo.dir/Debug/main.obj
        modified:   AAMEDemo.dir/Debug/vc142.pdb
        modified:   ALL_BUILD.vcxproj
 

 git 的基本操作 Master and branch的版本合并 @ VS 1019插图(14)

 用下面的命令来处理:

git restore

例如,去掉 AAMEDemo.dir/ 下的所有的文件

$ git restore  AAMEDemo.dir/*.*

最暴力的方法是:全部都不管了啊

$ git restore *

 


现在就剩下:

Untracked files:
这是本来就没有版本控制的文件,我们可以不理他就好了。这样,提交的暂存区(绿区)就剩下我们要提交的文件了。

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(15)


5 提交:

利用以下命令:

git commit

然后,可以加上注解,例如:

$ git commit -m "now we merge the master and branch toghter before modify for EXE merge into C#"

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(16)

git status 

我们看到,已经回到master,然后,该处理的文件都处理好了,就剩下本来没有加入版本管理的文件:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(17)


6 最后,看版本merge的情况

用git log命令,这时候,可以看到master和branch的情况,这样就完成了版本的合并工作:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(18)


最后,我们看一下VS 2019的git中的结果:

git 的基本操作 Master and branch的版本合并 @ VS 1019插图(19)

在VS 2019的git IDE的窗口里面

现在可以看到branch和master主,分支的版本。

本站无任何商业行为
个人在线分享 » git 的基本操作 Master and branch的版本合并 @ VS 1019
E-->