簡體   English   中英

SVN Changelist的Git是否等效?

[英]Git equivalence of SVN Changelist?

只是想知道Git是否具有Subversions Changelist功能之類的功能,我發現它可以隨時隨地使用,我知道我可以運行以下功能:

cat 'changelistfileimade' | xargs git update

但很好奇是否也有內置方法嗎?

我為此搜索了更多內容,我想我已經找到了我在上面的評論中提到的TortoiseSVN ignore-on-commit更改列表用例的替代品。 有問題的命令是git update-index --assume-unchanged <path/name> Git幫助有關於它的說法:

-[無]假設不變

指定這些標志時,為路徑記錄的對象名稱不會更新。 而是,這些選項設置和取消設置路徑的“假定不變”位。 當“假定未更改”位打開時,Git會停止檢查工作樹文件以進行可能的修改,因此您需要手動取消設置該位,以在更改工作樹文件時告知Git。 當在lstat(2)系統調用非常慢的文件系統上處理大型項目(例如cifs)時,這有時會很有用。

此選項也可以用作粗略的文件級機制,以忽略跟蹤文件中未提交的更改(類似於.gitignore對未跟蹤文件所做的操作)。 如果需要修改索引中的該文件(例如合並提交)時,Git將失敗(正常)。 因此,如果假定未跟蹤的文件在上游被更改,則您將需要手動處理這種情況。

我在Nick Quaranto的GitReady博客上找到了對該選項的解釋,其中包括以下內容:

顯然,對此有很多注意事項。 如果您直接git add文件,它將被添加到索引中。 合並帶有此標志的提交將導致合並失敗,因此您可以手動進行處理。

但這對我來說只是成功的一半。 下一步是了解您已忽略的內容(並希望記住原因)。 這是由安倍·沃克(Abe Voelker)在一個恰當命名的問題上的方便評論提供的。 只需使用代碼片段編輯.gitconfig文件

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

如果文件中已經存在[alias]位,請不要添加它。 現在, git ignored會告訴您以下信息:

h configs/environment/local.php
h configs/logging/log4php.xml

您可以通過以下幾行使用ignoreunignore ignore別名來更進一步:

    ignore = update-index --assume-unchanged
    unignore = update-index --no-assume-unchanged

我自己從未使用過SVN變更列表 ,但是如果我理解正確,它可以讓您將文件分組變更列表中 ,然后分別提交這些變更列表。 (對?)

我認為您在Git中確實不需要這樣的功能。 您已經可以分別git addgit add )每個文件或文件的一部分( git add -p )並提交它們。 您可以為每個變更列表創建分支,然后合並/重新設置這些分支。 或者,您可以創建多個提交,然后使用交互式rebase( git rebase -i )對它們進行重新排序。

不用svn diff --changelist something ,您只需使用git show changelistbranch

您不必推那些本地/臨時分支。 除非您考慮將它們准備發布到野外,否則沒人需要看到它們。

您甚至可以為“更改列表分支”命名空間: git branch changelist/name_of_your_changelist ,然后將所有更改列表按其前綴分組。

我想念什么嗎?

暫無
暫無

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

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