相关疑难解决方法(0)

如何修改现有的,未删除的提交?

我在提交消息中写了错误的东西.或者,我忘了包含一些文件.

如何更改提交消息/文件?提交尚未被推送.

git git-amend git-commit git-rewrite-history

7669
推荐指数
27
解决办法
246万
查看次数

如何在Git中更改多个提交的作者和提交者名称以及电子邮件?

我正在学校的计算机上编写一个简单的脚本,并将更改提交给Git(在我的pendrive中的repo中,从我家里的计算机克隆).几次提交后,我意识到我正在以root用户身份提交东西.

有没有办法将这些提交的作者改成我的名字?

git version-control git-filter-branch git-rewrite-history

2282
推荐指数
30
解决办法
80万
查看次数

功能分支rebase后Git推送被拒绝

好吧,我认为这是一个简单的git场景,我错过了什么?

我有一个master分支和一个feature分支.我做了一些工作master,一些工作,feature然后再做一些工作master.我最终得到这样的东西(词典顺序暗示了提交的顺序):

A--B--C------F--G  (master)
       \    
        D--E  (feature)
Run Code Online (Sandbox Code Playgroud)

我没有问题要git push origin master保持远程master更新,也没有git push origin feature(当打开时feature)为我的feature工作维护远程备份.到目前为止,我们很好.

但现在我想在主人featureF--G提交之上重新定义,所以我git checkout featuregit rebase master.还好.现在我们有:

A--B--C------F--G  (master)
                 \
                  D'--E'  (feature)
Run Code Online (Sandbox Code Playgroud)

问题:当我想要备份新的rebased feature分支时git push origin feature,推送被拒绝,因为树由于变基而发生了变化.这只能通过解决git push --force origin feature.

我讨厌使用--force而不确定我是否需要它.那么,我需要它吗?重新定位是否必然意味着下一个push应该是--force完美的?

这个功能分支不与任何其他开发者共享,所以我事实上 …

git

848
推荐指数
10
解决办法
19万
查看次数

如何在Git中更改旧提交的时间戳?

如何修改现有的,未删除的提交的答案描述了一种修改先前尚未向上游推送的提交消息的方法.新消息继承原始提交的时间戳.这似乎合乎逻辑,但有没有办法重新设定时间?

git timestamp commit git-rewrite-history

673
推荐指数
26
解决办法
27万
查看次数

如何检查当前分支中是否没有提交?

目标是获得可以在shell命令中评估的明确状态.

我试过git status但它总是返回0,即使有提交的项目.

git status
echo $?  #this is always 0
Run Code Online (Sandbox Code Playgroud)

我有一个想法,但我认为这是一个坏主意.

if [ git status | grep -i -c "[a-z]"> 2 ];
then
 code for change...
else
  code for nothing change...
fi
Run Code Online (Sandbox Code Playgroud)

任何其他方式?


通过以下解决更新,请参阅Mark Longair的帖子

我尝试了这个,但它导致了一个问题.

if [ -z $(git status --porcelain) ];
then
    echo "IT IS CLEAN"
else
    echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
    echo git status
fi
Run Code Online (Sandbox Code Playgroud)

我收到以下错误 [: ??: binary operator expected

现在,我正在看那个男人并尝试git diff.

===================代码为我的希望,希望更好的答案======================

#if [ `git status | grep -i -c "$"` …
Run Code Online (Sandbox Code Playgroud)

git git-status

166
推荐指数
8
解决办法
6万
查看次数

filter-branch --tree-filter之后从git repo中删除refs/original/heads/master?

我遇到了与此处提出的问题相同的问题:根目录中的新git存储库包含子目录中的存在存储库

我在这里听到了这个答案:根目录中的新git存储库包含子目录中的存在存储库

现在,gitk --all显示两个历史:一个在当前达到高潮master,一个命名original/refs/heads/master.

我不知道这第二个历史是什么,或者如何从回购中删除它.我的存储库中不需要两个历史记录.

我怎么摆脱它?

重现自己:

mkdir -p project-root/path/to/module
cd project-root/path/to/module
mkdir dir1 dir2 dir3 
for dir in * ; do touch $dir/source-file-$dir.py ; done
git init
git add .
git commit -m 'Initial commit'
Run Code Online (Sandbox Code Playgroud)

现在我们有原始海报的问题.让我们使用上面链接的答案将git repo的根目录移动到project-root:

git filter-branch --tree-filter 'mkdir -p path/to/module ; git mv dir1 dir2 dir3 path/to/module' HEAD
rm -rf path
cd ../../../ # Now PWD is project-root
mv path/to/module/.git .
git reset --hard
Run Code Online (Sandbox Code Playgroud)

现在,看看我目前的问题:

gitk …
Run Code Online (Sandbox Code Playgroud)

git git-rewrite-history git-plumbing

166
推荐指数
3
解决办法
4万
查看次数

Git rebase改变作者?

所以我愣神中没有配置的git的(没有作者或电子邮件),我想改变那些3个提交一台机器上进行3个提交(尚未推)的作者,以他们所想是.

我知道git commit --amend可以改变作者,但我怎么能做到3?我知道rebase可以改变信息.有没有办法改变作者?

git

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

禁用有关分离的HEAD的警告

在git中,如果你直接签出提交,你会得到一个很大的警告:

"You are in 'detached HEAD' state. You can look around ..."
Run Code Online (Sandbox Code Playgroud)

没关系 - 我打算处于独立的HEAD状态.但是我在脚本中使用它,我不希望在输出日志中出现此警告,但我确实需要正常输出.

我现在的"丑陋"解决方法是两次运行相同的命令,首先用-q隐藏警告,再用一次得到正常输出:HEAD is now at deadbeef... Message因为警告只打印一次.

警告是否可以禁用,以便我可以避免解决方法或解析输出?

git warnings detach

28
推荐指数
2
解决办法
4801
查看次数

修改Github上推送提交的用户名

我在Github上推了一个新分叉的git repo,但在提交后我发现我的用户名不正确.我推送的用户名是"Brock Woolf"但它应该brockwoolf是我在github上的用户名.

我已经像这样在本地更改了默认值:

git config --global user.name "brockwoolf"
Run Code Online (Sandbox Code Playgroud)

但是如何更改已经推送的更改的用户名?

git github

24
推荐指数
2
解决办法
1万
查看次数

为什么`git push --force-with-lease` 失败并显示“rejected ... stale info”,即使我的本地仓库是最新的远程仓库?

我正在尝试将功能分支的变基强制推送到远程存储库。为了更安全一点,我试图--force-with-lease确保自上次获取分支以来没有发生其他更改。

由于我不明白的原因,这失败了:

$ git branch
* my-branch
  master

$ git push --force-with-lease origin my-branch -u
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info)
error: failed to push some refs to 'git@gitlab.com:example/my-project.git'
Run Code Online (Sandbox Code Playgroud)

我尝试 fetch 以查看我的本地缓存是否以某种方式不同步:

$ git fetch

$ git push --force-with-lease origin my-branch -u
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info)
error: failed to push some refs to 'git@gitlab.com:example/my-project.git'
Run Code Online (Sandbox Code Playgroud)

我尝试稍微简化 push 命令:

$ git push --force-with-lease
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info) …
Run Code Online (Sandbox Code Playgroud)

git git-push

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