相关疑难解决方法(0)

如何仅列出要提交的文件?

有什么方法可以获取我输入以下内容时将提交的文件列表吗?

git commit -m "my changes"
Run Code Online (Sandbox Code Playgroud)

git status列出太多了.我可以删除所有的单词,但我宁愿不.而且我不想被告知未跟踪的文件.

我试过了

git ls-files -md
Run Code Online (Sandbox Code Playgroud)

但是这并没有显示最近添加但尚未提交的文件.

我正在寻找你得到的相同输出

svn status -q
Run Code Online (Sandbox Code Playgroud)

例如$ svn status -q
一个file.py
M dir/database.py
M start.py

git file commit status

27
推荐指数
4
解决办法
2万
查看次数

使用Git diff检测代码移动+如何使用diff选项

考虑一个文件(1.c)包含作者M和J所做的三个函数和更改.如果有人运行git blame 1.c,他将获得以下输出:

^869c699 (M 2012-09-25 14:05:31 -0600  1) 
de24af82 (J 2012-09-25 14:23:52 -0600  2) 
de24af82 (J 2012-09-25 14:23:52 -0600  3) 
de24af82 (J 2012-09-25 14:23:52 -0600  4) public int add(int x, int y)  {
de24af82 (J 2012-09-25 14:23:52 -0600  5)    int z = x+y;
de24af82 (J 2012-09-25 14:23:52 -0600  6)    return z;
de24af82 (J 2012-09-25 14:23:52 -0600  7) }  
de24af82 (J 2012-09-25 14:23:52 -0600  8) 
^869c699 (M 2012-09-25 14:05:31 -0600  9) public int multiplication(int y, int z){
^869c699 …
Run Code Online (Sandbox Code Playgroud)

git git-diff

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

git:在目录树中查找所有未提交的本地存储库

我的文件系统上有一堆(10-15)本地git存储库,但所有文件夹/ data /

我想找到所有/任何具有未经修改的更改的文件夹.我怎样才能做到这一点?有点像递归的全局git status变体.

我认为所有答案都错了.任何git命令只能在git控件下的文件夹中工作.我需要一些东西来搜索这样的文件夹.

所以我写了这个脚本来做到这一点:

#!/usr/bin/env ruby
require 'find'
require 'fileutils'

#supply directory to search in as argument

@pat = ARGV[0]
(puts "directory argument required"; exit) unless @pat
Dir.chdir(@pat)
Find.find(@pat) do |path|
  if FileTest.directory?(path)
    Dir.chdir(path)
    resp = `git status 2>&1`
    unless resp =~ /fatal|nothing to commit \(working directory clean\)/i
      puts "#{'#'*10}\n#{Dir.pwd}#{'#'*10}\n#{resp}"
      Find.prune
    end

    Dir.chdir(@pat)
  end
end
Run Code Online (Sandbox Code Playgroud)

git scripting file

20
推荐指数
5
解决办法
5033
查看次数

是否有GIT的API(C++或其他语言)

一家公司让我为他们编写一个GIT包装器.

那里的人们绝对没有版本控制系统经验,但最终会通过我的程序将其纳入日常工作中.

我打算使用VC++创建一个小小的Windows小程序,这将有助于ppl在这个过程中.有什么想法吗?

如果Deamon进程检查人们是否想要提交/推送他们的文件呢?

c++ windows git winapi

19
推荐指数
3
解决办法
2万
查看次数

程序化的git状态

有没有人知道一个git管道(绝对不是瓷器)的方法来确定是否:

  • 自上次提交以来,repo中有编辑,以及
  • 当地HEAD是否领先于原产地/ HEAD

我希望以编程方式确定这个,因此不想用瓷器和各种sed-fu来解决这个问题.

git

11
推荐指数
1
解决办法
3304
查看次数

以编程方式确定Git分支状态的正确方法是什么?

git status --porcelain如果您以编程方式解析当前的git分支状态,我会阅读其他各种SO帖子和Google搜索结果,这些结果并不是您想要依赖的命令.我终于指出rev-parse,diff-indexdiff-files命令这样做-不过,我目前使用的方法是一个小马车,特别是在比主等分支机构.像oh-my-zsh这样的主题似乎正在使用git status --porcelain,我上面提到的并不是Git社区推荐的.那么阅读这些分支状态的正确方法是什么?

来自Bureau Oh-My-ZSH主题的代码段,以便清楚我正在尝试重现的行为.

bureau_git_status () {
  _INDEX=$(command git status --porcelain -b 2> /dev/null)
  _STATUS=""
  if $(echo "$_INDEX" | grep '^[AMRD]. ' &> /dev/null); then
    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STAGED"
  fi
  if $(echo "$_INDEX" | grep '^.[MTD] ' &> /dev/null); then
    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNSTAGED"
  fi
  if $(echo "$_INDEX" | command grep -E '^\?\? ' &> /dev/null); then
    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED"
  fi
  if $(echo "$_INDEX" | grep '^UU ' &> /dev/null); then
    _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNMERGED"
  fi
  if $(command git …
Run Code Online (Sandbox Code Playgroud)

git parsing haskell

7
推荐指数
1
解决办法
270
查看次数

要添加到"git status --porcelain"以使其表现得像"git status"?

之前的一个问题产生了一些关于如何检查你的Git repo是否包含脏索引或未跟踪文件的想法.我从讨论中得出的答案如下:

#!/bin/sh
exit $(git status --porcelain | wc -l)
Run Code Online (Sandbox Code Playgroud)

这个答案背后的想法是模仿程序员会做什么:运行git status然后检查输出.

不幸的是git status --porcelain,git status并没有完全相同的事情.特别是,git status将报告未按下的更改,而git status --porcelain不会.这是一个例子

[jarmo@localhost math-hl]$ git status --porcelain
[jarmo@localhost math-hl]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我需要添加到原始脚本中以确定何时repo已经未按下更改?特别是,这是一种正确的方法吗?

#!/bin/bash
if [ $(git status --porcelain | wc -l) != …
Run Code Online (Sandbox Code Playgroud)

git

6
推荐指数
1
解决办法
3137
查看次数

为什么“git submodule add ...”写入stderr而不是stdout?

消息

Cloning into 'sub-mod'...
done.
Run Code Online (Sandbox Code Playgroud)

git submodule add...将命令写入stderr后。我希望该消息被写入标准输出,因为我不认为它表明命令出了问题。

我可以使用以下命令序列重现此内容:

rm   -rf /tmp/repo /tmp/module
mkdir    /tmp/repo /tmp/module

cd /tmp/module

git init  > /dev/null
echo "foo" > foo;
git add foo > /dev/null
git commit . -m "+ foo" > /dev/null


cd /tmp/repo

git init > /dev/null
git submodule add /tmp/module/ sub-mod 1> /dev/null
Run Code Online (Sandbox Code Playgroud)

如果我将最后一个命令中的重定向更改为... 2> /dev/null,则不会打印任何内容。

git shell stdout stderr

6
推荐指数
1
解决办法
2682
查看次数

git可以告诉我哪些未提交的文件与传入的更改发生冲突?

请观察:

C:\Dayforce\test [master ?2 +0 ~2 -0 !]> git pull
error: Your local changes to the following files would be overwritten by merge:
        2.txt
Please commit your changes or stash them before you merge.
Aborting
Updating 2dc8bd0..ea343f8
C:\Dayforce\test [master ?2 +0 ~2 -0 !]>
Run Code Online (Sandbox Code Playgroud)

git有一个命令,可以告诉我哪些未提交的文件导致此错误?我可以通过git pull看到它们显示,但我真的不想解析git pull输出.

我完全了解pull.rebaserebase.autostash配置选项,请不要提起它们.

编辑1

可以先执行git pull.实际上,识别有问题文件的逻辑将在git pull失败后完成.我在Powershell中认识到的方式是:

git pull
# Possible exit codes:
# 1 - either local changes or pull merge conflict (but the merge has …
Run Code Online (Sandbox Code Playgroud)

git git-merge

6
推荐指数
1
解决办法
119
查看次数

git list在几次提交中更改了文件

我想获取符合某些条件的提交中更改的所有文件.所以我有以下内容:git log --grep=123,我需要将提交中更改的文件作为聚合列表进行更改,例如,如果文件在多次提交中更改,则应在结果列表中仅包含一次.这就像在togoise svn log window中选择几个提交一样,它列出了所选提交中更改的所有文件

git

5
推荐指数
2
解决办法
1606
查看次数

标签 统计

git ×10

file ×2

c++ ×1

commit ×1

git-diff ×1

git-merge ×1

haskell ×1

parsing ×1

scripting ×1

shell ×1

status ×1

stderr ×1

stdout ×1

winapi ×1

windows ×1