我在提交消息中写了错误的东西.或者,我忘了包含一些文件.
如何更改提交消息/文件?提交尚未被推送.
我通常会提交一份提交列表以供审核.如果我有以下提交:
HEADCommit3 Commit2 Commit1...我知道我可以修改头部提交git commit --amend.但是我怎么能修改Commit1,因为它不是HEAD提交?
有办法从以后的提交中更改消息:
git commit --amend # for the most recent commit
git rebase --interactive master~2 # but requires *parent*
Run Code Online (Sandbox Code Playgroud)
如何更改第一次提交(没有父级)的提交消息?
我很好奇如何删除git中的第一个提交.
在做出任何事情之前的修改是什么?此修订版是否有名称或标记?
我想在这个git存储库中定义一个新的"root"分支."root"分支是指完全独立于存储库1中所有其他分支的分支.
不幸的是,甚至在Arepo的提交树的基础上提交(让我们称之为)包含很多文件(这是一个在已经相当成熟的项目上初始化的存储库).
这意味着即使我A作为新分支提供<start-point>,这个新分支也不会从"干净的平板"开始,而是包含所有提交的文件A.
有没有什么方法可以在这个存储库中创建一个完全裸的分支,<start-point>尽可能接近A?
1 BTW,这不等于创建一个新的回购.由于很多原因,单独的回购将不太方便.
编辑:好的,这是我做的,基于vcsjones的回答:
# save rev of the current earliest commit
OLDBASE=$(git rev-list --max-parents=0 HEAD)
# create a new orphan branch and switch to it
git checkout --orphan newbranch
# make sure it's empty
git rm -rf .
# create a new empty commit in the new branch, and
# save its rev in NEWBASE
git commit …Run Code Online (Sandbox Code Playgroud) ➜~myprojectgit :(主人) git log
commit a99cce8240495de29254b5df8745e41815db5a75
Author: My Name <my@mail.com>
Date: Thu Aug 16 00:59:05 2012 +0200
.gitignore edits
commit 5bccda674c7ca51e849741290530a0d48efd69e8
Author: My Name <my@mail.com>
Date: Mon Aug 13 01:36:39 2012 +0200
Create .gitignore file
commit 6707a66191c84ec6fbf148f8f1c3e8ac83453ae3
Author: My Name <my@mail.com>
Date: Mon Aug 13 01:13:05 2012 +0200
Initial commit (with a misleading message)
Run Code Online (Sandbox Code Playgroud)
reword我第一次提交的提交消息(6707a66)➜~myprojectgit :(主人) git rebase -i 6707
(...进入vim)
pick 5bccda6 Create .gitignore file
pick a99cce8 .gitignore edits
# Rebase 6707a66..a99cce8 onto …Run Code Online (Sandbox Code Playgroud) 我在我的项目中初始化了一个新的git,到目前为止我只有两个提交.我的日志如下所示
git log
commit e515e5b8dcbd8f1ea4a7a7d4a1efb82a1a0aee7a
Author: Olkun Mustafa <olkun.mustafa@gmail.com>
Date: Fri Oct 3 10:04:20 2014 +0300
Temp commit
commit 71781bf0a7807351a56d5155dac94169ea700527
Author: Olkun Mustafa <olkun.mustafa@gmail.com>
Date: Fri Oct 3 10:01:42 2014 +0300
First Commit
Run Code Online (Sandbox Code Playgroud)
当我尝试重新提交此提交时,我得到如下错误
git rebase --interactive HEAD~2
fatal: Needed a single revision
invalid upstream HEAD~2
Run Code Online (Sandbox Code Playgroud)
我在谷歌研究,但到目前为止我还没有找到解决方案.
一个SVN仓库成功转换到Git的,我现在有一个我想分解成多个更小的存储库,并保持历史上的一个非常大的Git仓库.
那么,有人可以帮助拆分可能看起来像这样的回购:
MyHugeRepo/
.git/
DIR_A/
DIR_B/
DIR_1/
DIR_2/
Run Code Online (Sandbox Code Playgroud)
进入两个看起来像这样的存储库:
MyABRepo/
.git
DIR_A/
DIR_B/
My12Repo/
.git
DIR_1/
DIR_2/
Run Code Online (Sandbox Code Playgroud)
我试过以下几个方向在此之前的问题,但它试图把多个目录到一个单独的回购协议(时并不真正适合拆离(移动)子目录成独立的Git仓库).
无法获得如何为当前分支执行squash rebase.控制台命令将是
git rebase -i HEAD~2
Run Code Online (Sandbox Code Playgroud)
然后像往常一样压扁.但是如何在TGit中做同样的事情呢?
用于初始化案例的脚本
git init .
touch 1
git add 1
git commit -m "1"
touch 2
git add 2
git commit -m "2"
touch 3
git add 3
git commit -m "3"
Run Code Online (Sandbox Code Playgroud)
因此,在压缩之后我们将有1个提交3个文件.
有什么建议?
我收到了一些源代码并决定使用git,因为我的同事使用了mkdir $VERSION等方法.虽然代码的过去目前似乎并不重要,但我仍然希望将其置于git控制之下以更好地理解开发过程.所以:
将这些过去的版本放入我现有的git仓库的简便方法是什么?目前没有远程仓库,所以我不介意重写历史记录,但考虑到远程存储库的解决方案当然是首选,除非它更复杂.基于目录或基于档案文件的历史记录,不需要任何更多交互的脚本的加分点.
git ×10
git-commit ×4
git-amend ×2
git-rebase ×2
repository ×2
commit ×1
message ×1
split ×1
tortoisegit ×1