我有一个脚本需要引用存储库中的初始提交.git有特殊的参考HEAD,但没有相应的TAIL.我找不到任何git help rev-parse可以帮助我的东西.
这是我想做的事情:
git show TAIL
Run Code Online (Sandbox Code Playgroud)
这是我的一个选择:
git show `git log --reverse | if read a commit ; then echo $commit ; fi`
Run Code Online (Sandbox Code Playgroud)
这非常hacky,取决于git log的输出没有改变.
现在我只标记初始提交并将其用作我的refspec.但是,我想发布一个通用工具,所以这不是一个很好的选择.
我有两个git存储库,它们之间有很多未跟踪的更改:
ftp --> C-- (untracked changes) --D
/ \
git A--B--C <-- old/master \
\
\
new/master --> D--E--F
Run Code Online (Sandbox Code Playgroud)
如何将旧存储库合并到新存储库中以获得线性历史记录
A--B--C--D--E--F
Run Code Online (Sandbox Code Playgroud)
编辑:
我弄完了:
git clone url://new new
cd new/
git remote add old url://old
git fetch old
git reset --hard origin/master
git filter-branch --parent-filter 'sed "s_^\$_-p old/master_"' HEAD
git push origin master
Run Code Online (Sandbox Code Playgroud)
唯一的问题是每个来自new/master的提交都加倍了(由于我认为父改变)所以我现在(M是合并提交)
D---E---F--
\
A--B--C--D'--E'--F'--M
Run Code Online (Sandbox Code Playgroud)
如何轻松删除不必要的提交(D-F和M)?