我希望能夠爲腳本執行此操作。我基本上是在Git中重新創建一些代碼的整個版本歷史記錄 - 它目前使用不同的版本控制系統。我需要腳本能夠在保留提交的原作者(和日期)的同時將提交添加到Git中。你如何以不同的用戶來提交代碼?
假設我知道提交作者和更改的日期/時間,是否有Git命令允許我這樣做?我假設有,因爲git-p4做了類似的事情。我只是要求最好的方式來做到這一點。
我希望能夠爲腳本執行此操作。我基本上是在Git中重新創建一些代碼的整個版本歷史記錄 - 它目前使用不同的版本控制系統。我需要腳本能夠在保留提交的原作者(和日期)的同時將提交添加到Git中。你如何以不同的用戶來提交代碼?
假設我知道提交作者和更改的日期/時間,是否有Git命令允許我這樣做?我假設有,因爲git-p4做了類似的事情。我只是要求最好的方式來做到這一點。
檢查出git commit
的--author
選項:
從man page:
--author=<author>
覆蓋提交作者。使用標準
A U Thor <[email protected]>
格式指定明確的作者 。否則<author>
被假定爲 的模式,並用於搜索該作者所提交的現有 (即rev-list --all -i --author=<author>
);首先提交作者從 中複製這樣的提交。
我想補充這件事:接受的答案中提到的--author
選項只覆蓋了作者,而不是提交者的提交信息。
也就是說在大多數情況下,正確的行爲,但如果由於某種原因,你需要手動覆蓋提交者信息爲好,使用GIT_COMMITTER_NAME
和GIT_COMMITTER_EMAIL
環境變量(有一個GIT_COMMITTER_DATE
爲好)。見Git-Internals-Environment-Variables
$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="[email protected]" git commit --author="New Name <[email protected]>"
這將使提交看上去像是撰寫和指定用戶提交。
...並查看區別: 'git log --pretty = fuller' – bluenote10 2015-11-03 20:41:52
完美。這就是我想要的,我從來沒有找到git內部手冊頁。 – ksp 2017-05-17 07:02:40
您是否嘗試過使用快速導入? – alternative 2010-09-12 23:03:02
我同意,[fast-import](http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html)可能是最好的選擇。你可以使用* git commit *(或者更合適的底層管道:* hash-object *,* update-index *,* write-tree *,* commit-tree *,* update-ref *等),但是*快速導入*會更快。 – 2010-09-12 23:39:05
我的確在想快速導入,但由於我自己就是git初學者,所以我決定使用基本命令。說實話,我並不完全理解快速導入是如何工作的,因此,直到我更好地理解它,我們纔有點猶豫。是的,使用提交會慢很多,但至少我會知道會發生什麼 - 特別是在調試時。 – Carl 2010-09-12 23:47:34