我来自Subversion背景,当我有一个分支时,我知道我正在处理的是"这些工作文件指向这个分支".
但是对于Git,我不确定我何时在NetBeans或Notepad ++中编辑文件,无论它是与主服务器还是其他分支相关联.
git在bash中没有问题,它告诉我我在做什么.
如何查看我所做的任何尚未推送到远程存储库的本地提交?偶尔git status会打印出我的分支是X提前提交origin/master,但并非总是如此.
这是我安装Git的错误,还是我错过了什么?
我知道有几个类似的问题,但我认为我的情况有点不同.
假设有一个我想贡献的GitHub存储库.我将该存储库分叉到我的GitHub帐户,然后从我的PC中的帐户克隆分支.精细.
在处理问题之前,我首先要将fork与"原始"存储库同步.我转到我的帐户分支,单击New Pull请求,确保我选择我的作为基础并且原始主服务器作为主叉,我看到差异(人们在原始存储库中做的所有提交都不在我的) .然后我在我的fork上创建了pull请求,并在fork中合并了这些更改.我去我当地的仓库做了一个git pull,我把所有东西都同步了.精细.
问题来了,现在我的GitHub帐户中总是说'这个分支是X提交',其中'X'是我执行上述同步过程的次数.因此,每次我向原始存储库(而不是我的fork)执行pull请求时,都会显示我正在提交我的代码以及 X更多提交,这是我在fork上与原始存储库同步的合并.
当然,我不想将这些更改推送到原始存储库,因为它们已经有了这些更改,所以我不明白为什么GitHub一直告诉我我有更改要提交.
我认为这是必须在我的GitHub帐户上解决的问题,因为在我的本地存储库中没有任何更改或问题,实际上我甚至删除了它并再次重新克隆.
你有什么想法?
我想提取a之后打印的信息,git status如下所示:
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
Run Code Online (Sandbox Code Playgroud)
当然我可以解析输出,git status但不建议这样做,因为这个人类可读输出容易改变.
有两个问题:
origin/branch但不一定是这样.我如何使用GitPython来确定是否:
要检查本地和远程是否相同,我这样做:
def local_and_remote_are_at_same_commit(repo, remote):
local_commit = repo.commit()
remote_commit = remote.fetch()[0].commit
return local_commit.hexsha == remote_commit.hexsha
Run Code Online (Sandbox Code Playgroud) 有哪些工具可用于显示我的git repo的状态以及它们与遥控器相比前进/后退的程度?我想象这样的东西存在:
repo1 +2 <--> remote1
repo1 <--> remote1 +3
repo2 <--> remote +10
Run Code Online (Sandbox Code Playgroud)
第一行显示repo1提前2次提交,第二次显示remote2提前3次提交,第三次显示只有repo2的远程提前10次提交.
我真的很喜欢 Github /branches 页面列出分支的方式以及指示分支在 master 之前或之后的提交数量的列。
有没有办法在控制台/cli 中查看这些信息?
编辑:此解决方案展示了如何提前/落后单个分支的提交。但我怎样才能为所有当地分支机构做到这一点呢?
我有branch1并且branch2想要某种:
git branch1 isahead branch2
这将显示是否branch1有branch2不包含的提交(并可能也指定那些提交)。我无法检查diff原因branch2 是否提前branch1(具有branch1没有的提交)。
有办法吗?我看了一下git diff却找不到任何东西
我们的团队倾向于不跟踪最新发布的代码背后有多少提交.我们想要通知他们,但获取信息是困难的部分,通知部分已完成.
我想了解如何拉下git log,做一个git命令输出"Branch x在分支y后面提交5次提交".我不想检查分支机构,因为它每次为我们所有的分支机构下载600mb + repo,而且我的驱动器空间不足.我在堆栈溢出时发现了类似的问题,它引用了仅在本地工作的bash脚本,或者指向远程返回空白的bash脚本.我还在学习git和bash,请耐心等待.
我已经在一个本地分支上工作了太长时间而没有推动上游并且丢失了我在本地提交了多少次提交的数量.
我现在准备推送我的提交,但我需要确切的提交数量才能用它们压缩git rebase -i HEAD~4(4只是一个例子).
我如何找到这个号码?
我试过git rev-list --count my-local-branch,但它显示了一个非常高的数字,这不是我想要的(我有大约6次提交).
也git log --graph --all --decorate --oneline没给我想要的东西.
我认为问题在于它my-local-branch不是一个被跟踪的远程分支.
所以我试图手动设置git branch -u upstream/my-local-branch,但返回error: the requested upstream branch 'upstream/my-local-branch' does not exist.
为了解决这个问题,我当然可以将我的分支推到上游,但这会破坏我压缩我的提交的初衷.
所以我感到困惑.有人能建议吗?
我正在尝试使用/sf/answers/1955801921/的答案来比较两个提交以获取其前方/后方差异
“git rev-list --left-right --count A..B”,其中 A 和 B 分别是 SHA1 提交引用。
在一种情况下,A..B 的比较给出 0 Ahead 和 17 Behind。如果我对 B..A 重新运行相同的命令,那么我会得到 0 Ahead 和 0 Behind,而我希望它是 17 Ahead 和 0 Behind 的简单反转。在另一种情况下,我在一个方向上得到 0/6,在另一个方向上得到 0/2。这违背了我试图更好地可视化差异的目的,在这种情况下是子模块引用与签出的提交。
为什么 A..B 得到的结果与 B..A 得到的结果完全不同?我需要/期望获得一致的值,无论顺序如何,只需交换前面与后面的计数...
有没有更好的方法来持续获取这些信息?目前,我看到的唯一解决方案是在脚本中运行命令两次(每个方向一次)并显示较大的值。