我在两台不同的笔记本电脑上使用Xcode和这个代码库。在一台笔记本电脑上,在Xcode中,我可以选择版本编辑器窗格,它会在每一行上显示错误信息,例如谁提交了提交以及提交的时间。然而,在另一台笔记本电脑上,我总是得到错误could not blame {file}. Error: fatal: no such ref: HEAD。
我不确定这意味着什么,也不知道如何修复它。正如我经常提到的,repo应该是非常相似的(除了gitignore差异之类的)。因此,我不确定在一台笔记本电脑上的.git文件夹中是否有细微的不同。我知道HEAD是对某个提交的引用,但除此之外,我不确定如何解决这个问题。
git config --list为user.name显示了两个值,一个是全局值,一个是局部值:
user.name=My Name
...
user.name=My Other Name
...
我的理解是局部值优先于全局值。如何让git config只显示实际生效的值?我只想看到user.name的一个值--在当前上下文中提交时将使用的值。
如果我的问题是基于误解,或者如果这是由我的git安装错误引起的,这也会非常有帮助。
假设以下星座:
A a - b - c
\ \
B d - e - f
提交b和d中的文件有相同的更改。现在,用户调用git blame at f (在A合并到B之后)并查看此更改。
我想要达到的目的是,提交b 被归咎于所提到的更改。然而,定期地将此更改归咎于d。
最近我得到的是:git merge A -s recursive -X theirs。如果对文件进行了任何其他修改,例如在c期间,这是可行的。但是在没有其他更改的情况下,它不起作用,这意味着文件在c和e中是相同的。
现在我了解到,这主要是因为文件在e和f中是相同的,因此它甚至没有出现在提交f的更改文
假设我们有以下工作流:
D <-HEAD
|
C
|
B
|
A
假设我想在C和D之间添加一个新的提交X,这样它就可以:
D
|
X
|
C
|
B
|
A
所以我使用git rebase -i HEAD~2并为commit C选择'edit‘,这样当rebase到达“编辑”commit C时,我修改了一些东西,然后使用git add .和git commit,之后我应用git rebase --continue来结束rebase。但我得到了以下信息:
D
/
X C
| /
B
|
A
这不是我在提交C之后添加了一个新的提交吗?为什么新的提交X紧随B之后
我正在尝试使用rebase来压缩一些git提交。当我运行以下命令时:
git rebase -i HEAD
我得到了这个错误:
/usr/lib/git-core/git-rebase: 1: eval: /usr/bin/mate: not found
Could not execute editor
我尝试更改git配置编辑器变量,但我没有让它工作。现在,我的配置文件显示了以下内容:
[core]
editor = /usr/bin/vim
我正在运行Ubuntu 13.04
有什么想法吗?
我正在添加一个git提交模板,以帮助标准化我们的提交注释。
我已经添加了模板并修改了本地‘. but /config’文件以包含模板,但这只适用于这个特定的克隆。
是否有一种方法可以修改.git/config,以便在Git根中包含一个commit.template值,以便当任何人克隆存储库时,它们都具有可用的设置?
我在这里看到了恢复单个文件的许多答案,但是我遇到的情况是,一个同事设法消除了与特定提交相关的所有更改。
是否有一种方法可以签出在特定提交中更改的所有文件,并将它们向前推到当前的主服务器?
我试过:
git checkout 3ed2aa8 //go to the commit with the change
git checkout -b getOldFiles //make it a legit branch
git rebase master //get branch up to date
git checkout master //go