根据我对合并冲突的理解,当两个人更改了同一个文件和/或修改了该文件中的同一行时,就会发生合并冲突.所以,当我做了一个
git pull origin master
我期望合并冲突,因为两个版本中的相同行不同,但看起来git决定覆盖我的本地文件.
为了提供更多信息,我几天前就把我的版本推到了Github上.然后有人拉了它,用它工作,并把它推回github.另一个人修改过的两个文件对我很感兴趣.
第一个文件是配置文件,另一个人更改了密码.所以当我从github取出时,我本地版本的密码与github上的密码不同.但是,在我的终端,它说
Auto-merging <filename>
Run Code Online (Sandbox Code Playgroud)
并且,它覆盖了我的文件,密码是由不同的人设置的密码.
第二个感兴趣的文件是用模板引擎(PUG)编写的HTML文件.另一个人改变了该文件中的很多东西,比如添加了很多css类,删除了我使用过的一些类,添加了css文件的链接等等.但当我拉它时,终端甚至没有提到它是自动合并它,只是覆盖了我本地仓库中的整个文件并使用了Github中的那个.
对于这两个文件,我的问题是,这是否是使用git pull的预期行为,还是我做错了什么?
以下是我使用的命令.
git checkout -b "misc"
git pull origin master
Run Code Online (Sandbox Code Playgroud)
此外,我尝试使用fetch然后手动合并/提交它,但是当我使用fetch时,什么也没发生.文件根本没有变化.
我之前使用过git/github,但是从来没有真正在使用分支和从github推/拉的团队中广泛工作.
使用 Windows 10 Pro 64 位,我发现了一个很好的命令来列出 Git 历史记录,将HEAD、分支和标签显示为醒目的颜色。好的!
git log --oneline --decorate --graph --all
Run Code Online (Sandbox Code Playgroud)
但我没有看到任何日期或作者!所以我找到了另一个不错的命令:
git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Run Code Online (Sandbox Code Playgroud)
也非常好——现在我可以看到日期和作者。但所有漂亮的颜色都消失了(除了图表)。HEAD、分支和标签的颜色都与日志的其余部分相同,因此很难将它们挑选出来。
如何在保留日期和作者的同时获取提交指针的颜色?
现在:
\n\n*\n|\\\n| *\n| |\\\n| |/\n|/|\n* |\n|\\ \\\nRun Code Online (Sandbox Code Playgroud)\n\n想看:
\n\n\xe2\x80\xa2\n\xe2\x94\x9c\xe2\x94\x80\xe2\x95\xae\n\xe2\x94\x82 \xe2\x80\xa2\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x95\xae\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x82\xe2\x94\x80\xe2\x95\xaf\n\xe2\x80\xa2 \xe2\x95\xb0\xe2\x94\x80\xe2\x95\xae\n\xe2\x94\x9c\xe2\x94\x80\xe2\x95\xae \xe2\x94\x82\nRun Code Online (Sandbox Code Playgroud)\n\n我想使用的字符:
\n\n\xe2\x95\xad \xe2\x95\xae \xe2\x95\xaf \xe2\x95\xb0 \xe2\x94\x82 \xe2\x80\xa2 \xe2\x94\x80 \xe2\x94\x9c

我在Pretty git branch graphs中看到了很多很好的答案,它们显示了git log用于date的 oneline 选项。但是,当我运行这些命令时,我的输出不同,我看不到日期。选项--oneline和--date=<relative or iso>似乎不兼容。
结果为git log --date=iso:
结果为git log --date=iso --oneline:
我在三台不同的计算机上尝试了这个,结果相似。
链接的问题询问“如何提交日期”。也许他们的意思是“如何显示提交日期”,但就目前而言,问题尚不清楚。此外,在可能的副本中,OP 同时询问多个选项。我特别询问在使用该oneline选项时如何显示或打印日期(作者日期或提交日期)。另一个 OP 也与提交历史记录的大小有关,这也在我的问题范围之外。
也许可以编辑另一个问题以匹配这个问题,但是当我搜索这个问题时没有出现(虽然我没有git-log专门使用该标签,因为直到我搜索合适的标签我才注意到该标签我的问题的标签)。
另外,我知道没有其他有效的方法可以在不使用屏幕截图的情况下显示打印格式的结果,尤其是因为它们有颜色。对于它的价值,链接的问题也使用屏幕截图。
我一直在修改git某些log命令的别名。我有我想要的大部分东西(信用在这里),但是我在一件事情上遇到了麻烦。当我打电话
git log --graph --format=format:'%h - [%ar] %s%+d'
Run Code Online (Sandbox Code Playgroud)
我得到
* ab123f - [6 hours ago] Fix the references
| (HEAD, origin/master, master)
* bc123f - [8 hours ago] New build syntax
* cd123f - [10 hours ago] Initial import
Run Code Online (Sandbox Code Playgroud)
Where%+d添加一个新行并--decorate在其上放置标签(如果存在)。我想要的是标签与时间戳一致,如下所示:
* ab123f - [6 hours ago] Fix the references
| (HEAD, origin/master, master)
* bc123f - [8 hours ago] New build syntax
* cd123f - [10 hours ago] Initial import …Run Code Online (Sandbox Code Playgroud) 我正在使用 Sourcetree,但我在其他 Git GUI 工具中看到了同样的问题,所以我不确定是否有任何工具可以满足我的需要。
这个问题的主要原因是,有时我需要查看特定的发行版本分支,并查看所有其他分支以及相对于感兴趣的分支的所有提交。
目前它可能会令人困惑,因为即使我检查分支,它也不会在树可视化中显示为直线,这使得跟踪该分支何时以及为何分裂或合并变得复杂。如果我可以将特定分支视为一条垂直直线,并且所有其他分支都围绕它排列,那就容易多了。
例如,我有分支 A,然后在其上创建一个分支 B,然后将某些内容提交到 B 中,并将其他内容提交到 A 中。当我查看日志时,我希望能够指定分支 A 是我感兴趣的分支,因此分支 A(而不是分支 B)应显示为直线。但目前我不知道该怎么做 - 看起来,Git(或 Sourcetree)决定哪个分支将显示为一条直线(最有可能的是,它是最新提交的分支?)以及将显示哪些分支从当前选择的“主分支”中分离出来。
我一直在分支上工作align,想从它中挑选一些提交到master. 我用来git cherry寻找候选提交:
C:\Users\me\Documents\repo>git cherry -v master align | head -1
+ c2bbb3d99440be7524673702c92ad65e6522d2b1 Made RW_assert() work on 64-bit.
Run Code Online (Sandbox Code Playgroud)
我的理解是“+”意味着没有等效的提交master。但我记得我已经选择了这个承诺master。rw-fwd.h事实上,这是分支上文件的最新更改align:
C:\Users\me\Documents\repo>git log align -1 rw-fwd.h
commit c2bbb3d99440be7524673702c92ad65e6522d2b1
Author: Me
Date: Thu Jun 8 10:41:01 2017 +1000
Made RW_assert() work on 64-bit.
Run Code Online (Sandbox Code Playgroud)
并且仍然是分支上 rw-fwd.h 的最新更改master:
C:\Users\me\Documents\repo>git log master -1 rw-fwd.h
commit 5bc790b9b0adfcdc6c0a07b679155e33974e343a
Author: Me
Date: Thu Jun 8 10:41:01 2017 +1000
Made RW_assert() work on 64-bit. …Run Code Online (Sandbox Code Playgroud) 运行命令时,git log --graph --oneline --all --decorate我看到的分支和标记名称都是彩色的(自从设置color.ui为以来,我一直认为auto)。我喜欢这种颜色,但是由于我有白色背景,所以很难读懂其中几种颜色,尤其是黄色。
我想更改此设置,然后发现(在Git书中的颜色下。*此处:https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)中,您可以更改设置下color.*进一步定制Git的颜色。然而,没有4个subsettings的(branch,diff,interactive和status)似乎影响了分支和标签名称使用git的日志的颜色。可以更改这些颜色吗?如果可以,如何更改?
考虑这个测试脚本。
#!/bin/sh -x
#initialize repository
rm -rf missing-merge-log
mkdir missing-merge-log
cd missing-merge-log
git init
# create files, x, y, and z
echo x > x
echo y > y
echo z > z
git add -A .
git commit -m "initial commit"
# create a branch
git branch branch
# change x and z on master
echo x2 > x
echo z2 > z
git commit -am "changed x to x2, z to z2"
git log master -- x
# …Run Code Online (Sandbox Code Playgroud) 回购时我遇到了一个奇怪的问题.当我尝试推送我的最新提交时,我不能,即使我很确定我有最新的提交,我是唯一一个在过去几个小时内编辑回购的人.
此外,我的git日志逐行匹配 GitHub上的git日志.
$git push
To git@github.com:me/repo_name
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:me/repo_name'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details
Run Code Online (Sandbox Code Playgroud)
这带我到以下问题: