我有一個開發者在一個文件夾上工作,另一個在另一個上工作。 我想更新生產具有特定的文件夾 我正在尋找像這樣的命令:Git只抓取一個目錄
cd /myproject
git pull myfolder
,並期望僅MyFolder文件將被更新
這可能嗎?
好的,我會改寫... 我在項目中有一個項目,一個分支和兩個開發人員和兩個文件夾。每個開發人員在一個文件夾上工都做出改變並將其推入分支。
我想一個文件夾中的唯一變化拉進我的本地機器
基本/簡單,不是嗎?
我有一個開發者在一個文件夾上工作,另一個在另一個上工作。 我想更新生產具有特定的文件夾 我正在尋找像這樣的命令:Git只抓取一個目錄
cd /myproject
git pull myfolder
,並期望僅MyFolder文件將被更新
這可能嗎?
好的,我會改寫... 我在項目中有一個項目,一個分支和兩個開發人員和兩個文件夾。每個開發人員在一個文件夾上工都做出改變並將其推入分支。
我想一個文件夾中的唯一變化拉進我的本地機器
基本/簡單,不是嗎?
你有某種生產分支嗎?假設開發與生產分公司...
# Get all the changes from the dev branch
git checkout dev
git pull origin dev
# Checkout the production branch
git checkout production
# Checkout the dev version of the folder you want
git checkout dev myfolder
# Commit all the changes that are now showing up.
這是有點可怕的方式做的事情,因爲你失去的變化歷史,當你結帳,並重新作出只是該文件夾。
謝謝,但也許我不是很清楚... 我想只得到一個文件夾的更新。我不想做任何結賬。 可以說,兩個開發人員都向同一個分支提交了一些提交,但我只想獲取一個文件夾的更改 – fredy
您的第三個簽出命令不正確。它應該是'git checkout dev - myfolder'('dev'和'myfolder'交換)。 – jszakmeister
假設你真正問的是遠程從一個git 倉庫搶文件,而無需你自己的工作樹(或本地 庫的克隆),你可以這樣做:
git archive --format=tgz --remote=<url-to-repo> master -- myfolder | tar zxvf -
這說的是創建存儲庫 的主分支的gzipped tar球,生活在<url-to-repo>
,但僅包含myfolder
下的內容。 通過tar
的管道將取消存檔數據並將其放入當前的 工作目錄中。
如果你真的想要管理一棵工作樹,並與其他兩個開發人員一起工作,那麼你要求做的事情真的與 工具的穀物背道而馳。但是你必須更加詳細地說明你爲了讓別人提出一個好的工作流程建議而想要完成的事情。
更新:
所以,如果你想獲取只有一個文件夾的被管理 工作樹改變它的聲音。對不起,但Git不會這樣操作。正如我在下面的註釋 中所說的,Git管理文件樹。它不允許 樹的一部分處於一個修訂版本中,而另一部分處於不同的修訂版本中,例如 您建議 - 也許您是Subversion的以前用戶,這可能是 ?
你可以得到一個類似於你想要的效果,但你必須修改你的工作副本 。我不會承諾的修改,除非你想 丟棄你的開發人員的工作。你可以這樣:
$ git fetch
$ git checkout @{u} -- myfolder
git fetch
將帶給你的遠程引用最新的 - 這將獲取從服務器 最新信息。 git checkout @{u} -- myfolder
將使 myfolder
看起來像追蹤分支中存在的東西。這有兩個 後果:
你不必全部在當地分行的變化(和你 不希望他們,所以沒關係),並
myfolder
會被顯示爲因爲myfolder
的內容已被 更新爲可從遠程存儲庫獲得的最新版本,但它與您當前的修訂版本不一樣。
爲了讓您的工作副本恢復正常,這樣做:
$ git checkout -- myfolder
從那裏,你叫跟隨你平常的機制與遠程獲得你的分支 了最新的(可能git pull
)。
但是,這可能不是您想要如何操作。儘管你的評論, 「沒有關係的用例」,它確實很重要。通常有更好的方法來實現你的總體目標和管理你的開發,但是它需要你理解你想要做什麼。目前,你提出的建議確實違背了Git的工作原理。
因此,讓我爲你準備幾件事。使用主題分支 作爲管理正在完成的開發工作的一種方式進行研究,而不是使用樹中每個開發人員的文件夾 。清晰的邏輯變化可以在分支機構 上進行,並在您測試並批准將其納入生產時進行合併。
一個好的開始是 here。 它包含相當數量的信息本身,並且有一些鏈接到幾個不同樣式的Git工作流程的鏈接到 。您想要結束的地方是 ,其中有一個提交代表您實際投入生產的版本,而不會破壞其他人爲您做的工作。理想情況下, 您可以用某種有意義的方式標記推入生產的內容。
我知道沒有人喜歡聽到它,但培訓可能對您的情況非常有幫助。 GitHub提供了一些free online classes 以及其他一些資源。從經驗判斷,一旦你掌握了Git的工作方式和解決的問題,你將會得到一個更好的工作流程。
我有一個本地存儲庫是最新的。 現在兩個開發人員都進行了更改,每個都在他的文件夾中。我想要「抓取」來自一個文件夾的更改 我可以做到嗎? – fredy
如果它是最新的,那麼你是否已經有了他的改變呢?你有什麼嘗試?您應該使用該信息更新您的問題。 – jszakmeister
可以說我把所有東西都拉到了我的電腦上。然後這兩個文件夾被更新。今天我想只從一個文件夾中獲得更改。我可以做嗎? – fredy
是的,很容易git fetch
只有一個git子目錄。假設您在遠程git-repo中有以下項目目錄。
project/
├── code
└── data
現在假設您已經將項目克隆爲本地文件系統作爲git存儲庫。
$ cd project
$ rm -rf code
#now we try to fetch the "code" directory.
$ git fetch
$ git checkout HEAD code
如果你有嵌套的目錄結構類似,
project/
├── code
│ ├── dev
│ └── test
└── data
那麼在這種情況下,你應該用你想要的特定目錄,
$ git checkout HEAD code/dev
你的問題不是很清楚。假設你有文件夾'dev1','dev2'和'production'。你是在問如何從另一個分支的'production'中引入所有的變化,或者你是否問如何基本上將'production'的內容設置爲其中一個dev文件夾?無論哪種方式,你接近這種方式聽起來像你對工具的工作。 – jszakmeister
好吧,我會重新修改... 我在項目中有一個項目,一個分支和兩個開發人員以及兩個文件夾。每個開發人員在一個文件夾上工都做出改變並將其推入分支。 我只想將一個文件夾的更改引入本地機器 – fredy
您是否使用Git來管理工作副本?或者你真的只是想將存儲庫中文件夾的內容放到你的機器上?根據您對PherricOxide的評論來看,這聽起來像後者。 – jszakmeister