相关疑难解决方法(0)

如何告诉Git它是同一个目录,只是一个不同的名称

在学习了Git的几个障碍之后,我遇到了一个新的挑战:重命名目录(在本地,在工作目录中).

当我键入时git status,它会将旧目录名中的所有文件(在新目录中存在与新目录中完全相同的文件名)列为已删除,新目录名称为"未跟踪".

有没有办法告诉Git"它实际上是同一个目录,只是一个不同的名字"?

这样所有文件都只会被git status修改列出 ?

举例来说,这是git status我重命名整个目录时收到的输出:

git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    old-dir-name/file1
#   deleted:    old-dir-name/file2
#   deleted:    old-dir-name/file3
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# …
Run Code Online (Sandbox Code Playgroud)

git

25
推荐指数
3
解决办法
1万
查看次数

在SVN到Git迁移期间,将SVN远程分支和标记转换为本地Git分支/标记的正确方法是什么

在推送到我的远程Git仓库并完全放弃SVN之前,将git-svn init/git-svn提取到本地Git分支/标记之后,使远程分支/标记存在的正确方法是什么?

我有:

  • git svn init
  • svn-remote "svn".git/config文件的部分更新为以下内容:

    url = file:///Users/Developers/git_transition/svn_repo
    fetch = cascade/trunk:refs/remotes/svn/trunk
    branches = cascade/branches/{5.0GA_CLEANUP,drag-n-drop-def-builder,help-text,hib-annotations,hibernate-annotations,image-editor,ldapconfig,liquibase,move-rename-prototype,progress-bar,progress-bar2,quartz-upgrade,recyclebin,rendering_metrics,shuttle_upgrade,spring3,web-services-no-nuller}:refs/remotes/svn/*
    branches = cascade/branches/{6.x,5.x,4.x,3.x,archive}/*:refs/remotes/svn/*
    tags = cascade/tags/{3.7.x,4.x,5.x,6.x,old-releases}/*:refs/remotes/svn/tags/*
    
    Run Code Online (Sandbox Code Playgroud)
  • git svn fetch

是否git-svn clone做一些超出的init /取,轮流这些分支/标签为当地的呢?

我尝试了关于Pro Git建议,但除了空的6.x,5.x,4.x,3.x,标签和存档目录之外,.git/refs/remotes/svn /目录中没有任何内容.我确实验证了远程分支在那里git branch -r.

有人建议我需要系统地检查所有远程分支机构作为本地分支机构:git checkout -b <local_branch_name> <svn_remote_branch_name>但我没有得到任何确定的答案.

已经能够使用该脚本来CONVER标签:

git for-each-ref --format="%(refname)" refs/remotes/svn/tags/6.x |
grep -v @ | while read tag; do GIT_COMMITTER_DATE="$(git log -1
--pretty=format:"%ad" "$tag")" GIT_COMMITTER_EMAIL="$(git log -1
--pretty=format:"%ce" "$tag")" GIT_COMMITTER_NAME="$(git …
Run Code Online (Sandbox Code Playgroud)

git git-svn

7
推荐指数
1
解决办法
4301
查看次数

将git branch转换为git标签

我正在寻找将git分支转换为git标签的最佳和最安全的方法.当手动移植到svn存储库时,我基本上复制了我们所有的分支,并且我们为每个次要版本(1.1,1.2,1.3)都有一个分支,这一点可能并不是最好的方法,但为了速度,我对分支比当时的标签更舒服.我现在有分支1.5,1.6,1.7,1.8但是因为我们在任何给定时间只有1个版本的代码部署,我可能只需要最后一个版本作为分支,因为任何热修复需要进入该版本部署.所以我正在寻找将git分支转换为git标签的最佳方法.我想我有办法,但确定它有多好.

到目前为止我所做的是每个我想转换为标签的分支,我已经检查过以确保那些不在master分支中的分支中没有提交,所以我做了:

git log 1.5 ^master
git log 1.6 ^master
git log 1.7 ^master
Run Code Online (Sandbox Code Playgroud)

所有这些都没有给我任何回报,我认为这意味着这些分支中的所有提交都存在于master中.我这样做是因为我假设如果那些分支中的提交不在master中,我会在将分支转换为标记时丢失它们,因为标记只是一个提交而不是开发线的"指针".看起来很好,我的假设是我只需做:

git tag 1.5v 1.5
git tag 1.6v 1.6
git tag 1.7v 1.7
Run Code Online (Sandbox Code Playgroud)

然后我只需要在本地删除分支并将这些更改推送到远程存储库.这是将git分支转换为git标记的最佳方法吗?

我还有一个问题是,如果有人从1.7开始创建一个分支(没有人应该这样做)并且他们拉出删除该分支的更改,他们是否能够将这些更改合并到另一个分支(比如master)或者那种打破他们创建的分支?这是一个不应该发生的情况,因为除了最后一个版本之外没有人应该创建任何分支版本的分支,在这种情况下为1.8,但是人们并不总是正确地遵循过程,所以我想确保有一种方法如果它发生,解决这个问题.

git version-control git-tag

7
推荐指数
1
解决办法
3135
查看次数

标签 统计

git ×3

git-svn ×1

git-tag ×1

version-control ×1