2017-01-13 73 views
-1

我在本地使用git來管理我正在處理的這個MVC5項目。 UI人員不使用任何源代碼控制或視覺工作室。它的工作方式是 - 我將視圖上傳到FTP進行更改的地方。然後我預計會在我的本地系統中下載(它會覆蓋自我上次上傳到FTP以來所做的任何更改)併合並這些更改。所以基本上,因爲我在相同的文件上並行工作,所以他最終在相同文件的舊版本上工作。有選擇地接受視覺工作室中的編輯?

但幸運的是,在幾乎所有情況下,UI更改都與我自己的更改沒有衝突,即它們位於文件的不同部分,而不是我的更改。所以,我想要做的就是能夠以某種方式選擇更改。例如,visual studio顯示「與未修改的比較」中的更改,是否可以查看每個突出顯示的更改並接受/拒絕提交?

或者(但不是最好),是否有可能檢查更改並將兩個版本的所有更改合併/提交到主分支?

我沒有命令行使用git的經驗,所以我真的希望在Visual Studio中實現這一點,如果可能的話。

下面是一個例子 -

原始版本 -

<div class="form-horizontal"> 
    <h4>Balance</h4> 
    <hr /> 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Id, htmlAttributes: new { @class = "control-label col-md-2" }) 
     @Html.EditorFor(model => model.Id, new { htmlAttributes = new { @class = "form-control" } }) 
    </div> 
</div> 

我的我的更新後的版本 - (我只是改變model.Id到model.Name並增加了一個foreach循環)

<div class="form-horizontal"> 
    <h4>Balance</h4> 
    <hr /> 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 
     @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) 
     @foreach(var item in model.Items) {<span>@item.Name</span>} 
    </div> 
</div> 

他的更改後的版本 - (他剛剛在top div中添加了一個名爲tableview的新類)

<div class="form-horizontal tableview"> 
    <h4>Balance</h4> 
    <hr /> 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Id, htmlAttributes: new { @class = "control-label col-md-2" }) 
     @Html.EditorFor(model => model.Id, new { htmlAttributes = new { @class = "form-control" } }) 
    </div> 
</div> 

正如您所看到的,更改位於文件的不同部分。

+0

您的更改是否已提交到本地存儲庫?或者他們只是坐在你的工作文件夾? – PatrickSteele

+1

最佳選擇:讓他們使用git。接下來的最佳選擇:使用分支和合並策略,並且每次推送到合併到「ftp」分支的FTP。來自其他開發者的任何更改都會在ftp分支之上進行(換句話說,他們使用git通過提交他們將通過FTP獲得的內容進行的提交來「僞造」他們)。 – crashmstr

回答

0

建議您至少嘗試一下git-gui,它會爲您提供一個可視化的UI界面來顯示當前文件的更改,您可以從該UI中選擇您希望包含在下一次提交中的特定區塊或行。

我一直都在用其他工具(例如Matlab *)來使用它,這些工具不能立即知道VCS集成。

我可以挑出粗略的臨時變化,讓它們看起來像是一系列小步驟! (並且可以從VCS記錄中省略壞線)

(*)Matlab確實具有一些VCS感知能力,但不是以這種粒度。