我想用 etckeeper 进行干净的提交。这是发生的事情:
1)检查存储库的状态:
git status
On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
2)修改配置文件:
vi myfile.conf
Run Code Online (Sandbox Code Playgroud)
3) 将其添加到索引中
git add myfile.conf
Run Code Online (Sandbox Code Playgroud)
4)提交
git commit -m"Add this ... to myfile.conf"
Run Code Online (Sandbox Code Playgroud)
5)观察提交:
git log -p -1
[...]
maybe chmod 0644 'magic.mime'
-maybe chmod 0644 'mail.rc'
maybe chmod 0644 'mailcap'
maybe chmod 0644 'mailcap.order'
maybe chmod 0644 'mailname'
+maybe chmod 0644 'mail.rc'
maybe chmod 0644 'manpath.config'
maybe chmod 0644 'matplotlibrc'
maybe chmod 0755 'maven'
[...]
(My modification to myfile.conf)
[...]
Run Code Online (Sandbox Code Playgroud)
我知道即使我不理解这种重新排序的目的,etckeeper …
我有一个文本文件中的用户名列表。我更新这个文件并提交它。我正在寻找一种方法来获取自上次提交以来的更改列表。
我根本不需要任何差异格式,我只想获得自上次提交以来每行一个用户名的输出(因为它们被添加到每个提交中)。
我找不到从输出中删除所有 git diff 语法的设置,因此它纯粹是仅添加的新行列表。
原始文件:
user1
user2
user3
Run Code Online (Sandbox Code Playgroud)
然后我添加
user4
user5
Run Code Online (Sandbox Code Playgroud)
然后提交。
我希望能够进行 git diff 并仅查看:
user4
user5
Run Code Online (Sandbox Code Playgroud) 我已经设置了一个 git 服务器,方法是创建一个用户“git”,然后在 git 用户的目录中创建一个本地存储库。
git 服务器运行良好,我可以拉、推等。我允许用户通过将他们的公钥添加到 git repo 来与 git repo 交互
.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
文件。我已禁用基于密码的登录。但问题是这些用户可以通过 ssh 登录服务器,因为他们的密钥在授权密钥列表中。好的,git 用户的权限设置为非常有限,但是,如果 git 无法直接登录,我还是更喜欢它。
有没有办法禁用“git”用户的登录,但保持 git 用户接受推送和通过 git/ssh 拉取的能力?
我有一个包含以下分支的 Git 存储库:
debian
master
pristine-tar
upstream
Run Code Online (Sandbox Code Playgroud)
我没有上游焦油球。我可以从我拥有的 Git 存储库创建上游 tarball 吗?如果是这样,怎么办?
考虑:
$ git --version
git version 2.20.1 (Apple Git-117)
$ git diff-index --quiet HEAD ; echo $?
1
$ git status > /dev/null
$ git diff-index --quiet HEAD ; echo $?
0
Run Code Online (Sandbox Code Playgroud)
这是在具有不区分大小写文件系统的 macos 上。(我不知道这是否相关。)在发生这种情况的主机上,有一个运行 debian 的 docker 镜像并挂载了相同的目录,而在 docker 镜像中,发生了相反的行为:
$ git diff-index --quiet HEAD ; echo $?
0
# At this point, `git status` was invoked outside the docker image
$ git --version
git version 2.20.1
$ git diff-index --quiet HEAD ; echo $?
1
Run Code Online (Sandbox Code Playgroud)
需要说明的是,这里执行的命令顺序是:git diff-index …
我正在尝试在官方 Linux 内核存储库的 git clone 中查找并列出在两个 Linux 内核版本/标签之间(在 Linux 内核 4.4.0 和 4.9.273 之间)之间所做的所有提交。
哪个 git 命令或软件工具可以帮助我实现这一目标?
我经常运行的文件夹中有一些脚本。这些脚本经常更新。更具体地说,每次我们在服务器上进行部署时,我们都会将脚本替换为 git 存储库中的更新脚本。
我们每次都必须让它们可执行吗?
我偶尔会使用镐功能来git定位感兴趣的更改。显然,这可能非常慢(这同样适用于,比如说hg grep),但更重要的是它是突发的:一些结果聚集在一起,由不活动分开。
出于这些原因,我尝试在结果出现时读取结果,实际上通过将输出管道传输到less(事实上,这是git默认情况下的操作):当突发到来时,您不可能ctrl-S对软件流程足够快地击中控制功能现在很有用。
但我经常遇到一个\xe2\x80\xa6 行为,less如果我滚动得足够多,即使只有一行要在屏幕上显示的内容还没有从命令中出来git,less就会陷入困境,并且我会失去它的提示和大多数方式控制它,直到更多内容出现。现在,我明白为什么会发生这种情况,但如果这是 shell 命令的行为,我会使用ctrl-Z恢复提示(然后执行bg)。是否有等效的方法less来恢复寻呼机提示?
在这种情况下,ctrl-Z没有用:Unix 作业控制不适合管理屏幕内容的命令。此外,我不想回到 shell 提示符:通常,我想做的是检查我在反复按空格键时可能瞥见的内容,所以我不想留下更少的内容。
Ctrl-C也是无用的:虽然它确实允许我恢复提示,但这还会导致收到的内容被冻结;也就是说,当我的好奇心得到满足并尝试返回到最新内容(按几下空格键或G等)时,无论我等多久,都只会出现我所看到的内容。即使使用F(tail -f模式)。
我使用此命令来模拟git行为:
(echo -e 'foo\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.' ; sleep 3 ; echo -e 'bar\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.' ; sleep 10; echo baz) | less\nRun Code Online (Sandbox Code Playgroud)\n 我创建了一个裸 git 存储库并以 root 身份推送到。然后我运行su myuser并运行以下命令:
$ whoami
myuser
$ mkdir t
$ cd t
$ git clone ssh://myuser@mybox.net:1234/git3
Cloning into git3...
myuser@mybox.net's password:
fatal: '/git3' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git clone /home/myuser/git3
Cloning into git3...
done.
Run Code Online (Sandbox Code Playgroud)
为什么 ssh 失败?我可以使用本地路径克隆它,并whoami显示 myuser -- 我不是 root。只是为了确保我拥有正确的地址,我ssh myuser@mybox.net -p 1234通过复制/粘贴信息而不是输入信息来编写。
我不明白为什么 ssh 不起作用。我知道我在这个远程盒子上工作过,但我从 debian lenny 升级到了挤压,最近我做了各种配置更改。我不明白为什么我不能在这里将 git 与 ssh 一起使用。
我有一台在 CentO 上运行的开发机器。
每当我使用 git 从 git 中提取时,git pull我都会收到“权限被拒绝”问题/错误。
当我执行拉取操作时,Git 显然无权覆盖所需的文件。因此,每次我都必须sudo git pull让它工作。
我宁愿不做,sudo git pull因为我希望每个人都能够从我们的开发服务器中提取。
我如何将 git 配置为具有适当的权限才能在没有sudoing 的情况下进行拉取?这是因为我可能没有正确配置 git 吗?如果是这样,我如何配置 git 以允许正确的权限?
不确定这是否有帮助,但which git揭示了这一点:
/usr/bin/git
示例错误
我执行:git commit -m "my fun message"
我得到:
错误:无法附加到 .git/logs/refs/heads/stage:权限被拒绝致命:无法更新 HEAD ref