2012-02-29 75 views
3

我想升級到在Git中跟蹤其開發的CMS的較新版本。由於CMS更新是在新的一年,每個文件得到的版權日期從2011年到2012年顛簸。僅在Git中包含特定更改的文件

我可以目視檢查和階段每個文件,只是使用git gui得到版權凹凸。然而,好像我應該能夠告訴混帳到舞臺只有他們唯一的改變這些文件是:

- * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. 
+ * @copyright Copyright (c) 2008 - 2012, EllisLab, Inc. 

有幾千個文件改變了,但絕大多數的這些接收比這個沒有其他變化具體行。我想演示和提交這個簡單的版權日期凹凸,然後仔細看看那些接受更多實質性更改的文件。

  1. 舞臺和commmit只有那些文件只包含這一變化:

    這一目的可以通過兩種可能的手段來完成。

  2. 階段和提交從所有文件的這一變化。

有可能嗎?提前致謝!

+0

如果你可以解釋爲什麼你只想登臺這些文件,那會很好(但不是必須的)。另外,如果您只想播放該內容,或者只想播放具有該更改的文件,或者僅播放僅具有該更改的文件,則您的措辭不清楚。這就是爲什麼如果你更詳細地解釋,我們可以幫助你到達你想要結束的地方。 – gahooa 2012-02-29 20:34:52

+0

謝謝。剛澄清的目的。對不起,期望的方法不明確 - 兩種工作。 – kayaker243 2012-02-29 20:44:44

+0

有趣的問題!一個出發點就是仔細觀察['git add --patch'](http://nuclearsquid.com/writings/git-add/)(隨機博客鏈接,用google搜索可以找到更好的),看看是否(1)您可以訪問腳本中的各個修補程序,以及(2)您是否可以通過腳本提供響應。 – eykanal 2012-02-29 20:53:02

回答

1

我怕我是按相反的順序回答,但是......

2階段只有那些行:

git add --patch 

這是一個相當手動方法,雖然如此,也許這可以節省一些時間,讓您只查看那些具有相關的變化,

for i in $(gd -SYOURCHANGESTRING | sed -rn 's/^diff --git a\/(\S+).*$/\1/p'); do git add --patch "$i"; done 

1階段的所有與更改的字符串的文件。

事情是這樣的:

git diff -SYOURCHANGESTRING | sed -rn 's/^diff --git a\/(\S+).*$/\1/p' | xargs -n1 git add 
2

我最近做確切的事情了Magento的升級。 90%的更改只是更新版權行。所以我想出了下面的「單線」。

git diff -G '@copyright.*[Cc]opyright' --name-only | xargs -I {} sh -c 'FILE={} ; [ $(git diff -U0 -- $FILE | wc -l | tr -d " " | cut -f1-) -eq 7 ] && git add $FILE' 

如果你想成爲安全,首先驗證的東西,改變最後一部分爲「回聲git的加$ FILE」,這樣只打印出命令。

+0

Holy Strube,非常感謝。這正是我所需要的。該死的Magento – Detzler 2017-10-20 11:39:32