我在GIT中有一个令人困惑的问题.可以说,我有一个文件已dir1/A.txt
提交,git保留了提交历史记录
现在我需要(出于某些原因)将文件复制到dir2/A.txt
(不移动但复制).我知道有一个git mv
命令,但我需要dir2/A.txt
具有相同的提交历史dir1/A.txt
,并且dir1/A.txt
仍然保留在那里.
我不打算在A.txt
创建副本后进行更新,所有未来的工作都将完成dir2/A.txt
我知道这听起来令人困惑,我将补充说这种情况是基于java的模块(mavenized项目),我们需要创建一个新版本的代码,以便我们的客户能够在运行时拥有2个不同的版本,第一个最终将在对齐完成时删除版本.我们当然可以使用maven版本,我只是GIT的新手,并对git可以提供的内容感到好奇.
我意识到git的工作原理是区分文件的内容.我有一些我想复制的文件.为了绝对防止git变得困惑,是否有一些git命令可用于将文件复制到不同的目录(不是mv,但是cp),并且还可以暂存文件?
在命令行 Git 中,show
,diff
和log
命令有一个选项--find-copies-harder
.
有没有办法告诉(或修补) gitk
使用它?我不时需要这个,而且我的项目足够小,所以我不关心性能下降。
(我不想再制作历史来强制复制检测。)
我注意到--find-copies-harder
gitk 代码中出现了,但我不明白为什么。所以我尝试了命令行gitk --all --find-copies-harder
,但它没有用:在一个从另一个版本化文件复制的新文件的提交中,gitk 仍然没有显示这个文件被复制的事实。
更新:通过进入--find-copies-harder
该字段来编辑视图Additional arguments to git log:
也无效:复制的(和稍微修改的)文件仍然没有显示为复制的,而在命令行git show --find-copies-harder
中。
我曾经在OS X机器上安装了较旧版本的Git,但是后来我将系统升级到OS X 10.11,并通过Apache安装了较新版本的Git(2.6.4)和Git HTTP停止工作。
我在apache_error.log
文件中出现以下错误:
[Thu Apr 28 08:41:37 2016] [error] [client ::1] error: Could not expand include path '~/.gitcinclude'
[Thu Apr 28 08:41:37 2016] [error] [client ::1] fatal: bad config file line 49 in /usr/local/git/etc/gitconfig
Run Code Online (Sandbox Code Playgroud)
该gitconfig
文件的内容为:
[core]
excludesfile = ~/.gitignore
legacyheaders = false # >git 1.5
quotepath = false
# http://stackoverflow.com/questions/136178/git-diff-handling-long-lines
pager = less -r
# if ? doesn’t work, try: pager = less -+$LESS -FRX
[user]
# name = your name
# email …
Run Code Online (Sandbox Code Playgroud)