尝试使用GIT作为工作记录获取“非快进更新被拒绝”错误

时间:2013-02-27 13:57:23

标签: git github

我知道这可能听起来很疯狂,但我认为它会起作用。我们必须每周向马槽报告快速获胜,所以我想的是我们可以使用git进行记录,然后经理可以拉通过7天的日志。

所以我使用以下命令创建一个git repo

mkdir mynotes.git
cd mynotes.git
git init

然后我在其中创建了这个脚本:

#!/bin/sh
clear
echo "Quick Logging (Press Enter on a blank line to exit)"
while true
do
    echo
    read -p "log> " logtext
    if test -z "$logtext"
    then
        exit 0
    else
    git commit --allow-empty -m "$logtext"
    fi
done

所以那么团队中的每一个人都可以做一个git pull并推送到repo ..我遇到的问题是,如果有人推送到repo,因为其他人正在登录然后尝试推送我们得到此错误

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@git.xxxx.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

我们怎样才能使这个系统工作......如果我们能够让它发挥作用,这听起来很棒

1 个答案:

答案 0 :(得分:3)

虽然您收到错误的原因与this question重复,但请允许我向您提供更多详细信息,因为您似乎正在将工作流程与报告混合起来......

  

然后,团队的每个人都可以做一个git pull并推送到repo

假设您正如上所述执行上述步骤,您的拉动很可能因冲突而失败。在推送更改之前,您必须解决冲突才能完成合并。执行git status查看冲突的文件,修改它们,git add将它们分级,然后提交并推送。

我会推荐另一种方法。管理开发工作流程中的合并,并单独进行7天的报告。 git log命令有一个很好的选择:

git log --since="7 days ago"

检查git log命令的手册,因为它有许多其他有用的格式化选项。

git log --since="7 days ago" --pretty=format:"%ad|%h|%cn|%s"

您可以在专用本地存储库上使用该git log命令,该存储库仅在您要打印7天日志之前从您的遥控器中拉出,或者将其重定向到文件或其他脚本。