我想获得的所有分支的日志中只有当前树。
很长的故事
鉴于下面的 git 历史:
$ git log --all --decorate --oneline --graph
* 3d0cb35 (HEAD, master) 4th commit
| * a43b07c (branch) 4th commit in branch
|/
* 722745a 3rd commit
* 46d0d84 2nd commit
* 3060fe0 1st commit
Run Code Online (Sandbox Code Playgroud)
假设我创建了一个孤儿分支。
$ git checkout --orphan orphan
Switched to a new branch 'orphan'
Run Code Online (Sandbox Code Playgroud)
在孤儿分支中添加一个提交并尝试使用第一个命令来获取“第二个”树的 git 历史记录。
$ git log --all --decorate --oneline --graph
* 202f3c4 (HEAD, orphan) Orphan branch
* 3d0cb35 (master) 4th commit
| * a43b07c (branch) 4th commit …Run Code Online (Sandbox Code Playgroud) 我正在使用 Git 在我的笔记本和台式计算机之间同步工作目录:
origin两台机器上都有一个遥控器,origin它包含一个裸仓库desktop,其中包含一个带有工作副本的存储库notebook,其中包含一个带有工作副本的存储库当我在家工作时,我通过(慢速)VPN 连接将提交推送到origin和desktop。有时,碰巧我在台式机上启动了一个分支,离开了我的工作场所,这个分支被检出并继续在笔记本上工作。到目前为止非常简单。
当我要将更改desktop从笔记本推送回机器时,事情会出现问题:当前分支当前已签出时,会出现Git 推送错误“[远程拒绝] master -> master(分支当前已签出)”问题在desktop。
为了避免错误,我想提前知道当前在 上签出哪个分支desktop。有没有办法实现这一目标?
是的当然。我可以等到我回到工作岗位再推送,然后在桌面上查看不同的分支。我也可以在每次离开工作场所时创建一个临时分支。我可以打开一个到我的台式机的 RDP 会话并检查一个不同的分支。我知道。但这不是我要的:没有解决方法。
我的远程 git 服务器有 2 个分支,开发和发布。
我已经克隆了存储库,但是当我这样做时,git branch -a我看到:
* develop
remotes/ghe/HEAD -> ghe/develop
remotes/ghe/develop
Run Code Online (Sandbox Code Playgroud)
我试图做一个,git fetch但它没有更新列表。
在我的 git 网络图上,我想保持分支分开。但是,如果我将 master 拆分为分支 A,然后对 A 进行一次或多次提交,然后将其合并回 master,则该图会同时显示 master 和 A 的一行,尽管事实上至少有一个不包括提交点。
换句话说,我的图表如下所示:
*------*------*------* (master/A)
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
*------*------*------* (master/A)
\__________________/
Run Code Online (Sandbox Code Playgroud)
我知道在提交或推送中有一个选项可以强制执行此操作(并且我很久以前就做过一次),但是对于我的一生,我找不到它。
有谁知道执行此操作的命令?其次,为了额外的功劳,它在 Android Studio 中的位置?
谢谢!
我正在阅读这篇文章,在大多数情况下,我明白了。我想我了解变基(它获得更线性的 git 日志历史记录,而无需进行仅三向提交的提交)我也认为我了解 git 图表。但是段落中有几句话我不明白。
您会注意到该合并中的短语“快进”。因为您合并的分支所指向的提交直接 位于您所在的提交的上游,所以 Git 只是将指针向前移动。换句话说,当您尝试将一个提交与可以通过跟踪第一个提交的历史记录来访问的提交合并时,Git 通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起 – 这称为“快进。”
您的更改现在位于 master 分支指向的提交的快照中,您可以部署修复程序。
我不明白的是上游,指针和最后一句话的术语。
图中的红色主框为什么是hotfix上面的?
我试图将我的本地更改推送到 GitHub 服务器上的分支。以前,当我使用“Git Bash”时,这就像一种魅力。
这次我配置了 Git 提供的 GitHub Windows 应用程序(安装 Git 时会显示在桌面上的紫色猫图标)来推送我的更改。
以为 GUI 工具会更容易!当我尝试“发布”时,我看到了一个致命错误消息。
然后我切换回“Git Bash”,它与我之前提交到同一个远程分支的工作正常。
我输入了以下命令:
git add .gitignore
git add <<files>> # WORKED
git commit -m <commit desc> # WORKED
git push origin <mybranch> # errored out
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
fatal: https://github.com/reponame/tree/<mybranch>//info/refs?service=git-receive-pack not found:
did you run git update-server-info on the server?
Run Code Online (Sandbox Code Playgroud)
在从类似帖子发布之前,我尝试了不同的东西。
.Git\bin,\Git\cmd ..Git\libexec\git-core. 这没有帮助!.git/config有我的分支 URL安装/配置 Windows GitHub 客户端应用程序是否在我的 PC 上搞砸了什么,我无法再将更改推送到远程存储库?
我还应该做些什么来将我的更改推送到 repo 分支?这是在 Windows 上。
是否有git branch选项可以打印所有分支,而分支名称前没有两个空格?我认为--porcelain会得到支持,但显然不支持分支上市。
我想要做的是:我想编写删除合并分支的脚本,而不像使用awk.
git branch | perl -pe 's{^\s*}{}g' | xargs -n 1 git branch -d
Run Code Online (Sandbox Code Playgroud)
(题外话,但对于那些倾向于囤积和讨厌删除的人来说,这是一个很好的快速方法来清除你真正不需要的东西并保持一个干净的回购)
我想看看我所在的实际分支来自哪个分支。我已经查看了日志,但它太吵了,我想在这种情况下 100% 确定找到正确的分支。
我的公司正在使用 VSTS 和 git。自昨天以来,VSTS 中的访问控制摘要设置似乎发生了变化。我看到了比以前更多的选择。
我是 MyRepository 管理员和 MyRepository 团队的成员。
我得到一个:
2017 tf402455: pushes to this branch are not permitted; you must use a pull request to update this branch.
Run Code Online (Sandbox Code Playgroud)
当我尝试从已完成的拉取请求中删除源分支时,尽管我已授予 MyRepository 管理员和 MyRepository 团队的允许权限以进行强制推送(重写历史记录和删除分支) 通常我只是授予强制推送权限我这样做时的 MyRepository 管理员。在看到 tf402455 后,我为 MyRepository Team 添加了权限,当时我只是为管理员完成了它。
这是我一天要做多次的事情。是否更改了执行此操作所需的权限?VSTS 的 UI 似乎每隔几个月就会改变一次,您必须花几天时间弄清楚如何再次执行日常任务。
根据这篇文章,我想了解 SmartGit git 客户端对新分支的影响。下面,我将详细解释我所做的步骤以及 SmartGit 显示的内容以及我期望显示的内容:
脚步:
s1) 通过克隆远程仓库创建本地 git 仓库:
git clone https:/myusername:mypassword@remoteRepoAddress/repo3
Run Code Online (Sandbox Code Playgroud)
s2) cd 到我刚刚创建的 repo3 git 本地存储库,然后在新文件中添加文本:
echo "aaa" >> file1
Run Code Online (Sandbox Code Playgroud)
s3) 添加要提交的文件:
git add .
Run Code Online (Sandbox Code Playgroud)
s4) 提交更改:
git commit -m "commit1"
Run Code Online (Sandbox Code Playgroud)
s5) 向 file1 添加另一行并提交更改
echo "bbb" >> file1
git add .
git commit -m "commit2"
Run Code Online (Sandbox Code Playgroud)
s6) 将更改推送到远程存储库:
git push origin master
Run Code Online (Sandbox Code Playgroud)
现在,SmartGit 显示一行,对于 master 分支,ant 两个提交:
s7) 创建另一个分支“newBranch1”:
git checkout -b newBranch1
Run Code Online (Sandbox Code Playgroud)
s8) 然后我在这个分支上做一个提交:
echo "row1" >> file2
git add .
git commit …Run Code Online (Sandbox Code Playgroud) git ×10
git-branch ×10
git-log ×2
azure-devops ×1
bash ×1
branch ×1
git-bash ×1
git-push ×1
git-remote ×1
github ×1
pull-request ×1
smartgit ×1