我是Git分支复杂的新手.我总是在一个分支上工作并提交更改,然后定期推送到我的远程源.
在最近的某个地方,我重置了一些文件以使它们脱离提交暂存,后来又做了一个rebase -i去除几个最近的本地提交.现在我处于一种我不太了解的状态.
在我的工作区域,git log显示我所期待的 - 我在正确的火车上,我不想要的提交,以及那些新的,等等.
但是我只是推送到远程存储库,并且有什么不同 - 我在rebase中杀死的一些提交被推送,而本地提交的新提交不存在.
我认为"master/origin"与HEAD分离,但我不是100%清楚这意味着什么,如何使用命令行工具将其可视化,以及如何修复它.
我有一个存储库,其中包含分支主服务器和A以及两者之间的大量合并活动.当基于master创建分支A时,如何在我的存储库中找到提交?
我的存储库基本上是这样的:
-- X -- A -- B -- C -- D -- F (master)
\ / \ /
\ / \ /
G -- H -- I -- J (branch A)
Run Code Online (Sandbox Code Playgroud)
我正在寻找修订版A,这不是git merge-base (--all)找到的.
在帮助朋友解决git问题的同时,我不得不介绍一个需要与分支完全分离的master分支.这个分支的内容确实与master分支上开发的内容有不同的起源,但它们将master在以后合并到分支中.
我记得从底层向上阅读John Wiegley的Git,分支本质上是一个遵循某个约定的提交的标签,以及如何将提交绑定到文件树,并且可选地绑定到父提交.我们使用git的管道创建了对现有存储库的无父提交:
所以我们摆脱了索引中的所有文件......
$ git rm -rf .
Run Code Online (Sandbox Code Playgroud)
...从tarball中提取目录和文件,将其添加到索引中...
$ git add .
Run Code Online (Sandbox Code Playgroud)
...并创建了一个树对象......
$ git write-tree
Run Code Online (Sandbox Code Playgroud)
(git-write-tree告诉我们创建的树对象的sha1sum.)
然后,我们提交了树,没有指定父提交......
$ echo "Imported project foo" | git commit-tree $TREE
Run Code Online (Sandbox Code Playgroud)
(git-commit-tree告诉我们创建的提交对象的sha1sum.)
...并创建了一个指向新创建的提交的新分支.
$ git update-ref refs/heads/other-branch $COMMIT
Run Code Online (Sandbox Code Playgroud)
最后,我们回到master分公司继续在那里工作.
$ git checkout -f master
Run Code Online (Sandbox Code Playgroud)
这似乎按计划进行.但这显然不是我推荐给刚刚开始使用git的人的一种程序,温和地说.有没有更简单的方法来创建一个与目前存储库中发生的所有内容完全无关的新分支?
我们有一个"中央"仓库,我们用它来部署到我们的开发服务器.我知道git log会告诉我提交和他们提交的日期/时间,但我想知道什么时候提交被推销/收到回购.有什么办法吗?
我正在开展一个由大团队工作的项目.随着时间的推移,人们一直在创建分支机构并将它们推送到远程仓库.
我怎么知道哪个分支是另一个人创建的新分支的根?可以基于当前HEAD创建新分支,但是也可以指定<start-point>哪个可以是提交,标记或分支.如何找出用于创建新分支的分支?
一个额外的问题:提交可以与分支创建一起推送.我想通过在服务器上使用post receive hook来记录那些与新分支有关的提交.钩子与(oldrev,newrev,refname)一起传递,如果我能找到上面问题的答案,那就太好了.
我如何知道何时创建了一个git分支?
我不想知道什么时候第一次提交到那个分支.我想知道什么时候创建了这个分支.
这是一个重现一个工作示例的脚本:
#! /bin/bash
set -x
set -e
mkdir test
cd test
git init
echo "hello" >readme
git add readme
git commit -m "initial import"
date
sleep 5
git checkout -b br1
date # this is the date that I want to find out.
sleep 5
echo "hello_br1" >readme
git commit -a -m "hello_br1"
date
echo "hello_br1_b" >readme
git commit -a -m "hello_br1_b"
git checkout master
echo "hello_master" >readme
git commit -a -m "hello_master"
git branch -a;
git log …Run Code Online (Sandbox Code Playgroud) 我是Git的新手.我现在正在开发一个名为fixes的分支.其实我已经忘记了切割树枝的地方.那么在Git中是否有任何方法可以让我知道我的源分支名称.