实习记录7 git使用

来源:互联网 发布:剑网三苍云捏脸数据 编辑:程序博客网 时间:2024/06/05 11:19

最近在进行代码合并,用了一个非常傻的方法就是在windows上进行文本比较器比较,然后再在开发机上修改,这个过程是很傻的,并且还有一个问题就是因为需要对比user_server、master以及merged的版本,因此我建立了许多的代码库(利用cp的方式),每次拷贝非常费时,而且后期还需要删除,并且名字会让人很混乱。这时候就发现git的好处了,因此需要多多使用,具体的使用教程见cf上的git使用,这里只是总结一下相关知识。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

前面也说了,由于需要修改代码,所以在开发机上建立了许多的本地版本,每次修改前先cp,再修改。这种方法无疑是非常傻的。正确利用git的方法如下:

(1)利用git clone --recursive下载远程到本地

(2)此时fs就是master版本,利用git branch查看会发现版本为master。如果需要别的远程版本怎么办,利用git checkout user_server,user_server就为远程版本的名称,此时本地就存在了远程的其他分支。(注意,这个分支进去以后发现是和远程代码一样的,也就是说是和master是不同的。我们可以在这里进行不同版本的对比,包括编译运行都是没有问题的)。因为我需要进行merge处理,也就是在master的基础上添加user_server的功能,所以我需要新开一个branch(你需要在哪个分支上修改,就先选中该分支git checkout,然后在该分支下输入git checkout -b merged(新分支名称)),在该分支下进行操作。该分支名称任意选取,只要不提交,就与远程无关。

(3)接下来就可以在新开辟的merged分支进行修改了,因为要merge,所以需要用到git diff(如果只是在本机修改,而未提交,可以用git status来查看修改内容,这种方式适用于在本地修改了内容,但没有commit;如果已经提交了,或是比较分支代码,则利用git diff branch_1 branch_2(如果需要和远程端比较时,则是git diff local_lgy remotes/origin/user_server,并且注意顺序,如果不想利用这种方法,也可以直接在网页git上进行对比))

(4)如果进行了修改之后,则需要进行相应的提交,我们可以在merged的branch进行commit,然后回到master分支,输入 git merge merged,来进行合并,注意push之前,要进行git pull,来保证代码最新,然后再进行push。

(5)push之后,在网页的git上选择merge人员时,要注意合并的版本,一般不要合并在master上,自己的这次就只用自己合并一个自己的branch即可。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

注意:之前的代码我直接用了git commit -a的方式进行提交,这个方法是不安全的,如果只是少量修改代码内容,可以利用该方法进行提交,但是如果自己在本机进行了编译等操作,会多出一些其他文件,该文件不能提交,因此需要利用别的安全方式:

(1)首先利用git status查看当前本地修改了什么内容,利用git diff 文件名来查看是否是想要的修改。

(2)然后利用git add 路径/文件名 ,把该文件提交到暂存区,利用该方法把所有的修改提交。

(3)提交完成后,再利用git commit -m “说明”,来提交内容,这里提交的只是暂存区的内容,不会提交一些其他的内容。

有些git库会有一个文件为./gitignore,该文件中会声明不会上传的文件,方便使用。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

由于之前并没有开分支,所以此时本地的master已经和远程的master差别很大,无法pull下来内容,因此可以选择和远程的master进行merge(切换到merge分支,然后 git merge origin/master),然后如果遇到冲突,则进行冲突修改(git status可以发现冲突,git diff 文件路径 就可以清楚显示冲突),当冲突修改完成(必须进行merge,利用gflags等方式),再次commit,然后push,就可以提交自己的版本了。


由于之前的慌乱,所以在没有与master进行merge的时候,就将自己的merge分支提交了,这时候可以直接clone一个master到本地,然后切换到merge的分支,直接与master进行merge,然后修改,最后进行提交,效果一样。


在这之后,master再有修改后,直接pull就可以更新到自己的merge分支。


最后注意一点:

1.当远程没有分支时,直接push本地分支的名字,远程就会建立分支

2.当不需要与master合并时,不需要提交merge Request


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

再次添加:

经过仔细看了看git的使用说明,我感觉这次的任务完全应该用以下的方式操作。

1.首先clone一个master的代码。

2.开辟一个merge分支,checkout一个user_server分支。

3.在merge分支上开辟一个debug的分支,在user_server上开辟一个debug的分支。

4.可以通过merge和user_server分支的diff来查看不同文件,并在merge上修改。修改完成后在merge_debug分支上合并修改内容,并编译和测试以及发现错误。(debug分支需要git commit全部的内容,不然会污染工作区)

5.不断重复测试,merge分支修改,merge_debug合并修改,再测试的过程。

6.完成后master利用git pull更新,然后合并到merge分支,最后把merge分支提交。

原创粉丝点击