昨天,我从一个分支创建了一个分支,将它推到Origine,并将它合并回Master。您可以在这里看到:
$ history |less
8358 git co master
8359 commit # shortcut that adds all and commits
8360 push # shortcut that `git push`'s
8361 git lg # shortcut that logs my output
8362 git co 1600
8363 git co -b 1601
8364 npm run test
8365 npm run test
8366 npm run test
8367 npm run test
8368 npm run test
8369 npm run test
8370 npm run test
8371 npm run test
8372 npm run test
8373 npm run test
8374 npm run test
8375 npm run test
8376 npm run test
8377 ./release.sh
8378 ./release.sh
8379 commit
8380 push
8381 git push --set-upstream origin 1601
8382 git lg
8383 git co master
8384 git merge --no-ff -
8385 git st
8386 commit
8387 push
我把不相关的东西包括在这个列表中,这样我就不会意外地删掉一些相关的东西;正如你所看到的,所有这些历史都是连续的。以下是我历史上提到1601年的一切:
$ history | grep 1601
1601 npm run test
8363 git co -b 1601
8381 git push --set-upstream origin 1601
8438 git co 1601
8445 git co 1601
8446 git show-ref 1601
8447 history | grep 1601
8449 git show-ref | grep 1601
8458 git show-ref --heads --tags | grep 1601
8460 history | grep 1601
8461 history | grep (1601|merge)
8462 history | grep -p (1601|merge)
8464 history | grep -E (1601|merge)
8466 history | grep -E -e (1601|merge)
8467 history | grep -E -e \(1601|merge\)
8468 history | grep -E -e '(1601|merge)'
8469 history | grep -E -e '(1601|merge|master)'
8470 history | grep -E -e '(1601|1601|merge|master)'
8472 history | grep -E -e '(1601|1601|merge|master)'
8474 history | grep -E -e '(1601|1601|merge|master)'
8480 history | grep 1601
$ git co 1601
warning: refname '1601' is ambiguous.
Already on '1601'
Your branch is up to date with 'origin/1601'.
$ git show-ref | grep 1601
137b74c8ff6807f07bb32ba0d2f76a3ba287e981 refs/heads/1601
137b74c8ff6807f07bb32ba0d2f76a3ba287e981 refs/remotes/origin/1601
$ git tag -l
$ git show-ref --heads --tags | grep 1601
137b74c8ff6807f07bb32ba0d2f76a3ba287e981 refs/heads/1601
cat .git/config
# this is the only place where it mentions 1601
[branch "1601"]
remote = origin
merge = refs/heads/1601
$ cat .git/config | grep 1601
[branch "1601"]
merge = refs/heads/1601
$ git checkout 1601 --
warning: refname '1601' is ambiguous.
Already on '1601'
Your branch is up to date with 'origin/1601'.
$ git ls-remote . \*1601*
beea6ee68d6fe6b4f5222c0efe0e206e23af993c refs/heads/1601
beea6ee68d6fe6b4f5222c0efe0e206e23af993c refs/remotes/origin/1601
$ git show 1601 # this only shows one log message
warning: refname '1601' is ambiguous.
commit beea6ee68d6fe6b4f5222c0efe0e206e23af993c (HEAD -> 1601, origin/1601)
...
$ git --version
git version 2.31.1
$ type git
git is hashed (/usr/bin/git)
为什么我会得到这个警告,我如何摆脱它,我如何在未来预防它?
我可以通过给一个分支一个与提交的SHA1前缀匹配的名称来获得这个行为。
$ git rev-list @ | egrep '^[0-9]{4}'
7802d6937673dbff4d26dc906c714a054c9e883e
81070af68e1b254c7f36eccb1261050a5a4a133a
7537dac08fd165845b6300f32c19a52fc7fa7299
$ git branch 7802
$ git branch 9999
$ git checkout 7802
warning: refname '7802' is ambiguous.
Switched to branch '7802'
$ git checkout 9999
Switched to branch '9999'
$
我想删除一些远程主控分支,但主控引用仍然存在。如何删除它们才能将默认上游分支设置为?
我有两个分支“master”和“developer”,我从master“hotfix-1”创建一个新分支,然后我将“hotfix-1”合并回master;
助你入门 git 的简明指南,木有高深内容 ;) 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/repository 如果是远端服务器上的仓库,你的命令会是这个样子:
我不希望 git 记录 npz 结尾的文件 所以我在 .gitignore 里面添加了 *.npz 但是呢,我并不是所有的 npz 都想忽略 我想让 git 只追踪 testing/std.npz 如何声明让 git 忽略除了 testing/std.npz 之外的所有 npz 文件呢?
我已经看了所有其他模糊的重命名问题,但似乎没有一个有用。为什么我会得到这个警告?