公司版git完整版

合理合适的利用git,会给自己以及团队带来很大的方便,相反,如果没有应用得当,就会让工作陷入整个的混乱之中

话不多说,直接开讲

假如项目工程叫 :feature


1:如果是采用从网页端新建分支,会直接从远程仓库的master拉取分支,接着在本地、服务器上需要先在master分支上 git pull把master进行更新 git就会得到你已经从远程新建分支的信息 假如是change_sample。。。然后再 git checkout change_sample 就可以在本地新建change_sample分支并关联上远程的change_sample分支


2:如果想用 git checkout -b change_sample 新建本地分支,并后续提交到远程仓库取,一定要现在本地 git pull把master进行更新,然后再git checkout -b change_sample,就会自动从远程最新的master新建一个分支,并且是最新的代码,并自动切换到新建的这个分支。。记住开发完成后需要往远程push这个分支,或者自己先像下面做下这步
git add .
git commit -m "change"
git push origin change_sample


3:  在开发时,一般是在本地进行开发代码,然后push到远程分支,然后从服务器上拉取这个分支的最新代码,这样子达到本地、服务器的统一
git add .
git commit -m "change"
git pull origin change_sample  #将远程change_sample分支内容,合并到当前在的分支
git push origin change_sample:change_sample     #完成在本地push到远程

上面是从本地上发起的push到远程自己分支,接着需要自己服务器上也得到相应的修改(拉取最新分支代码)

git checkout change_sample

git pull origin change_sample

如果在linux服务器上,切换到master,然后git pull这时候就能看到日志中显示zhouheng分支也被更新了,貌似这时候就不用再git pull origin change_sample,直接 git checkout change_sample即可



四、完成开发后,会存在自己要push到远程上的操作,可以这样操作

1:在本地
git checkout master
git pull                                //更新下master
git checkout change_sample
git merge master                //master分支合并到你的分支上,全部解冲突都在自己的分支上来,这样会更加安全些

如果无误,一定要尝试下

mvn clean install(现在处于 change_sample分支下),

免得虽然没语法错误,但是却无法编译

如果有冲突,就在ide中打开哪些冲突文件(在合并的时候,会打印出哪些文件有冲突),然后进行修改

修改完后再,

git add .
git commit -m "change"
git pull origin change_sample
git push origin change_sample:change_sample


上面已经解完冲突了,再切到master合并change_sample,然后push到远程master
git checkout master
git merge change_sample

如果无误,在线下尝试下 mvn clean install,要保证合并到merge的代码可以正常编译
### 然后再push到远程上
git add .
git commit -m "change"
git pull origin master
git push origin master:master

如果无误,一定要尝试下 mvn clean install(现在处于 master分支下),免得虽然没语法错误,但是却无法编译

 

很多人在合并master的时候,在上面git pull完master,都是直接在master分支下直接合并change_sample,我对这种操作遇到的极端问题也做个解法
假设合并后遇到pom文件的冲突,自己先修改后,修改完后  如果直接在本地(这时候是master分支) git pull或者git merge change_sample  都会报错说 -- **is not possible because you have unmerged files,同时查看自己的status  会看到自己的status是(master|MERGING),就像下面一样

root@root MINGW64 D:/feature (master|MERGING)
$ git pull
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

root@root MINGW64 D:/feature (master|MERGING)
$ git merge change_sample 
error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

试下mvn clean install,检查下自己解好冲突的代码是否真正无冲突,如果有的话,就要谨慎去解,只修改报错的那几个文件的代码(比如增添函数等),千万不要在其他人的文件中进行修改(即使你依赖了其他人的文件),因为这样会给自己造成更多的冲突。。。要是多人合作一个项目,存在多人共写一个文件的情况,这种例外。。。完成后会发现自己的status还是(master|MERGING)
git add .
git commit -m "fix"
git pull origin master
git push origin master:master    ####这时候就合并master成功

####然后删除本地分支、远程分支
git branch -d change_sample
git push origin --delete change_sample

 

在合并master的时候,在上面git pull完master,如果采用安全的方式也就是先切换到自己的分支,再合并master,解冲突的逻辑也跟上面一样,先把merge时候 在 交互界面打印出来的给解了,然后用mvn clean install进行尝试,一步步解完

 

补充1:如何从指定分支copy到自己即将建立的分支上

git checkout -b 自己即将建立的分支 origin/指定分支

eg: git checkout -b shuaige origin/master

 

补充2:如果在开发过程中,需要合并master的代码

(1):先把当前分支push到远程 保证自己的分支上是完全干净的

git add .
git commit -m "change"
git pull origin change_sample
git push origin change_sample:change_sample

git checkout master    切换到master

git pull                         更新自己本地的master代码,保证和线上远程仓库一致

git checkout change_sample     切换到要合并master的分支

git merge master                    合并!

合并完毕

 

posted @ 2020-08-18 09:55  可乐'不加冰  阅读(317)  评论(0编辑  收藏  举报