国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Git多分支平行發展(一個倉庫包含多個不同的項目)

MonoLog / 1857人閱讀

摘要:建立并切換到本地分支沐沐沐也可以直接用刪除本地倉庫里的所有文件除了的文件夾,然后推送沐沐沐這個時候,遠程倉庫的分支便和本地倉庫的分支一樣都是空白的,這樣就可以隨心所欲的推送了。

背景

最近在用laravel開發微信小程序的接口,因為服務器PHP版本的問題,分別用了laravel 5.6(php 7.1,開發環境)laravel 5.4 (php 5.6,服務器環境),開發完成后,兩個項目絕大部分的代碼都差不多,不想再建一個倉庫放php 5.6版的代碼,便試著在原有倉庫新建分支來存儲php 5.6的項目,搗鼓的一上午終于搞出來了,現在記錄下。

主要步驟:

在遠程和本地倉庫中新建一個分支(我建的是laravel54);

刪除遠程laravel54分支上的所有文件;

將新項目的文件推送到laravel54上。

流程 新建一個文件夾(我的是laravel5.4) 創建git本地倉庫并關聯遠程倉庫
沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4
$ git init
Initialized empty Git repository in D:/PHP/xampp/htdocs/apple/laravel5.4/.git/

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git remote add origin git@xxxxxxxxxxxxxxxxxxxxx.git
建立遠程倉庫分支 laravel54

注意,建立遠程分支后,暫時還不能在本地建立其他分支,因為剛創建的git倉庫默認的master分支要在第一次commit之后才會真正建立,這時創建其他分支會報錯,解決辦法在后面說明。

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git branch laravel54
fatal: Not a valid object name: "master".
隨便新建一個文件,里面可以不用寫任何東西,然后commit
沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ touch clearTheBranch

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git add clearTheBranch

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git commit -m"clean this branch"
[master (root-commit) c7c5349] clean this branch
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 clearTheBranch
推送之前先更新(下面的代碼是最核心的代碼)

新建的分支默認與master分支一樣,所以要在推送之前先把分支上的內容拉下來。

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git pull origin laravel54
warning: no common commits
remote: Enumerating objects: 2453, done.
remote: Counting objects: 100% (2453/2453), done.
remote: Compressing objects: 100% (2320/2320), done.
Receiviremote: Total 2453 (delta 1547), reused 229 (delta 89)
Receiving objects: 100% (2453/2453), 1.40 MiB | 1.38 MiB/s, done.
Resolving deltas: 100% (1547/1547), done.
From xxxxxxxxxxxxxxxxxxxxx
 * branch            laravel54 -> FETCH_HEAD
 * [new branch]      laravel54 -> origin/laravel54
fatal: refusing to merge unrelated histories

這個時候會報錯,是正?,F象,,原因是本地倉庫和遠程倉庫不一樣,有類似兩者有完全不相同的commit歷史,只需要在在pull的同時加上一行代碼即可,代碼如下:

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$  git pull origin laravel54 --allow-unrelated-histories
From xxxxxxxxxxxxxxxxxxxxx
 * branch            laravel54 -> FETCH_HEAD
Merge made by the "recursive" strategy.
......

這步操作的時候,會有merge的commit說明,簡單寫下,這個只是merge的說明,并不會真正和mater合并。
經過這一步操作,就已經把遠程倉庫laravel54分支里面的文件都拉下來了,接下來建立與遠程倉庫對應的本地分支。

建立并切換到本地分支 laravel54
沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git branch laravel54

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git checkout laravel54
Switched to branch "laravel54"

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$

// 也可以直接用 git checkout -b laravel54
刪除本地倉庫里的所有文件(除了.git的文件夾),然后推送
沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git add .

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git commit -m"delete all files"
[laravel54 d8bf12d] delete all files
215 files changed, 32019 deletions(-)
......

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git push origin laravel54
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 683 bytes | 341.00 KiB/s, done.
Total 6 (delta 1), reused 1 (delta 0)
remote: Powered by Gitee.com
To xxxxxxxxxxxxxxxxxxxxx.git
   c810298..d8bf12d  laravel54 -> laravel54

這個時候,遠程倉庫的laravel54分支便和本地倉庫的laravel54分支一樣都是空白的,這樣就可以隨心所欲的推送了。

新項目推送

這時就可以把之前的項目拷進這個文件夾里面,然后按照正常的推送流程進行推送。

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git add .
warning: LF will be replaced by CRLF in .env.example.
The file will have its original line endings in your working directory.
.......

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git commit -m"laravel54 push"
[laravel54 eba0954] laravel54 push
 113 files changed, 11583 insertions(+)
 create mode 100644 .env.example
 create mode 100644 .gitattributes
 .......

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git push origin laravel54
Enumerating objects: 152, done.
Counting objects: 100% (152/152), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (126/126), done.
Writing objects: 100% (151/151), 211.43 KiB | 2.94 MiB/s, done.
Total 151 (delta 14), reused 42 (delta 4)
remote: Resolving deltas: 100% (14/14), done.
remote: Powered by Gitee.com
To xxxxxxxxxxxxxxxxxxxxx.git
   d8bf12d..eba0954  laravel54 -> laravel54
小總結 不用擔心推送錯分支導致分支合并

經過如上操作,就可以實現master分支和laravel54是兩個完全不同的項目,可以保持兩個項目平行發展,因為兩個分支的提交歷史不一樣,所以即便是誤操作,提交錯了分支,git會給出相應的報錯,不會把兩個分支直接合并,下面是代碼演示:

本地laravel54向遠程master分支推送

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ touch a.txt

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git add a.txt

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git commit -m"test file a.txt"
[laravel54 e246705] test file a.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git push origin master
To xxxxxxxxxxxxxxxxxxxxx.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to "git@xxxxxxxxxxxxxxxxxxxxx.git"
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., "git pull ...") before pushing again.
hint: See the "Note about fast-forwards" in "git push --help" for details.

//本地版本回退

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git log
commit e246705e9894a658d3fb2ea8f51b1ee0dd8ff834 (HEAD -> laravel54)
Author: muyan 
Date:   Fri Jun 29 14:50:35 2018 +0800

    test file a.txt

commit eba09541b60e496127f6280c3db9611f72504744 (origin/laravel54)
Author: muyan 
Date:   Fri Jun 29 14:36:48 2018 +0800

    laravel54 push

commit d8bf12d9df1337f9f7e0de723608796a490f66dc
Author: muyan 
Date:   Fri Jun 29 14:24:02 2018 +0800

    delete all files

commit dcfb2b00f4f8ad0f1f672cde9b9e9ddc79d85239 (master)
Merge: c7c5349 c810298
Author: muyan 
Date:   Fri Jun 29 13:56:24 2018 +0800

    Merge branch "laravel54" of xxxxxxxxxxxxxxxxxxxxx

    for claering the branch

commit c7c5349779f868fbc1cf18d742d634c9d3267c32
Author: muyan 
Date:   Fri Jun 29 13:55:01 2018 +0800

    clean this branch

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git reset eba09541b60e496127f6280c3db9611f72504744    //回退到上一次提交之前的版本

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (laravel54)
$ git status
On branch laravel54
Untracked files:
  (use "git add ..." to include in what will be committed)

        a.txt

nothing added to commit but untracked files present (use "git add" to track)

本地master分支向遠程master分支推送

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git add a.txt

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git commit -m "test file a"
[master d3e8bba] test file a
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

沐@ MINGW64 /d/PHP/xampp/htdocs/apple/laravel5.4 (master)
$ git push origin master
To xxxxxxxxxxxxxxxxxxxxx.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to "git@xxxxxxxxxxxxxxxxxxxxx.git"
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., "git pull ...") before pushing again.
hint: See the "Note about fast-forwards" in "git push --help" for details.

理論上可以實現無限平行分支

文章其他地址個人博客 簡書

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28928.html

相關文章

  • 淺析git

    摘要:還可以通過檢查對象內容的的哈希值和對象名是否相同,來判斷對象內容是否正確。對象對象和其它所有的對象一樣,都用其內容的哈希值來命名的只有當兩個對象的內容完全相同包括其所指向所有子對象時,它的名字才會一樣,反之亦然。 git是什么 簡單來說,Git,它是一個快速的 分布式版本控制系統 (Distributed Version Control System,簡稱 DVCS) 。 同傳統的 集...

    jas0n 評論0 收藏0
  • 精讀《Monorepo 優勢》

    摘要:引言本周精讀的文章是。精讀總的來說,雖然拆分子倉庫拆分子包是進行項目隔離的天然方案,但當倉庫內容出現關聯時,沒有任何一種調試方式比源碼放在一起更高效。前端精讀幫你篩選靠譜的內容。 1. 引言 本周精讀的文章是 The many Benefits of Using a Monorepo。 現在介紹 Monorepo 的文章很多,可以分為如下幾類:直接介紹 Lerna API 的;介紹如何...

    xcc3641 評論0 收藏0
  • 前端編碼規范

    摘要:去掉無用的代碼使用主動語態避免一連串松散結構的代碼邏輯把相關的變量函數放在一起。該處代碼運行正常,但可能由于時間趕或者其他原因,需要修正。此時需要對思路或詭異手段進行描述。 命名規范 變量名, 函數名 小駝峰【命名法 camel Case】: numberOfPeople 第一個單詞的首字母小寫;第二個單詞開始每個單詞的的首字母大寫 組件名 大駝峰【命名法 Camel Case】: ...

    YJNldm 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<