簡體   English   中英

Git:兩​​個子目錄,如何從不同分支中拉出並推送到一個主分支

[英]Git: Two subdirectories, how to pull from different branches and push to one master branch

我已經看到了有關如何將不同目錄推送到不同分支,如何針對不同目錄從不同存儲庫中拉入/推送等問題的答案。但是結合這兩件事我遇到了問題。

所以我有一個git倉庫,例如mydir /,它有兩個子目錄:

1.)mydir / package 2.)mydir / foo。

mydir / package是從另一個git repo克隆而來的,我已經對其進行了設置,以便它從原始的git repo中提取並推送到個人的。 我主要在這個倉庫的開發分支工作。

我在mydir / foo目錄中編寫個人代碼。 它只拉和推到個人倉庫。 它使用mydir / package中的源代碼,這就是為什么我將這些目錄保存在一個倉庫中的原因。

現在的樣子 :幾乎可以了。 我移到mydir / package文件夾,然后可以根據需要更新,推送和拉到正確的位置(不是正確的分支,而是正確的存儲庫)。 mydir / foo也是如此。

出了什么問題 :如果我從mydir /推送,然后去查看個人倉庫,有兩個分支;另一個是分支。 掌握和發展

主人:倉庫有一個/ foo文件夾,很好。 但是沒有/ package文件夾

開發:倉庫包含/ package的所有內容。 沒有/ foo文件夾,沒有父目錄。

為什么會出現問題 :我已經能夠在所有內容上使用源代碼控制,但是將對兩個目錄的推送/更改放在兩個單獨的分支上卻很煩人。 我必須分別進入每個目錄並進行commit / add / push / etc,然后將它們分別轉到不同的分支。 備份了文件,這很好,但是對於試圖克隆我的存儲庫的下一個家伙來說,這是不切實際的。

我想要的是 :除了從mydir /推送外,關於此倉庫的幾乎所有內容都對我有用。 我想從mydir /中提取,從我的個人倉庫中提取(這樣我就不會意外更新mydir / package文件夾)。 我仍然想從mydir / package中拉出develop來從原始包的develop分支中拉出。 我只是想從mydir提交/添加/推送,以表示“更新個人倉庫的master分支,使其現在包含mydir / package和mydir / foo的當前狀態。” 當我查看此個人存儲庫時,我想查看master分支上的兩個文件夾。

我試過的->發生了什么 :1.)git push remote master(來自mydir / package文件夾)。

錯誤! [拒絕] master-> master(首先獲取)錯誤:無法將某些引用推送到“ mypersonalrepo.git”

2.)在個人倉庫上拉請求以合並開發分支和主分支

然后,mydir文件夾具有mydir / package(仍在develop分支上,並且進行了所有修改),mydir / foo(在右側的分支上),然后是遠程倉庫的master分支中的所有文件。

3.)git add package /-> git push origin master

沒有改變。 文件夾仍被推到個人倉庫的各個分支。

作為參考,如果我輸入mydir / package中的git remote show origin,這是什么樣子,也許我需要創建另一個遠程回購來進行這種自定義?

remote origin
Fetch URL: their_package_repo.git
Push  URL: mypersonal_repo.git
HEAD branch: master
Remote branches:
develop                         tracked
master                          tracked
some_other_branch               tracked
Local branches configured for 'git pull':
  develop merges with remote develop
  master  merges with remote master
Local refs configured for 'git push':
  develop pushes to develop (fast-forwardable)
  master  pushes to master  (local out of date)

直接的答案是不。 沒有這樣的功能來單獨拉動分支並將所有文件夾從分支推到分支。

  • 如果package文件夾用作foo文件夾的引用或庫代碼,則應將它們管理到同一分支(例如master )中。
  • 如果package文件夾與foo文件夾分開工作,則應將它們管理到不同的分支中。

為什么不可能:當您在master分支中將package文件夾和foo文件夾一起推送時,這意味着這兩個文件夾都通過git在master分支中添加到版本控制中。 當其他開發人員克隆/提取您的個人倉庫時, package文件夾和foo文件夾將顯示在master分支中。 即使通過其他方法,也可以為其他開發人員在master分支上僅顯示foo文件夾( git fetchgit checkout origin/master -- foo ),但是工作目錄的版本不是origin/master 因此,當開發人員將本地更改推送到您的個人存儲庫時,git會首先將其拉到下拉列表,並且packagefoo文件夾最終還將顯示在master分支中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM