我正在使用 Git,但遇到了几个问题:我可以推,我的同事可以拉,反之亦然。但是遥控器上的版本不是最新的:如果我在 html 中写一个 TEST,除了本地版本之外,没有人可以看到它......我认为它可能来自遥控器上的分支……不是吗?
编辑 1:我会尝试更具体:我有一个位于私人服务器上的私人回购。该服务器用于托管网站。当我提交-> 拉-> 推时,一切都很好。当我的同事做同样的事情时,这很好。在我们的本地版本中,所有更改都类似于我的“TEST”测试。但是在服务器上,没有什么是最新的。它是错误的分支,在服务器上还是什么?
PS:对不起,我的英语不是我的母语。
这是我的git repo现在如何的一个例子:
Run Code Online (Sandbox Code Playgroud)v1.0 v1.1 v1.2 | | | a - b - c | | master HEAD
我通常像这样提交,标记和推送标签:
git commit -a -m "Commit msg"
git tag -a v1.3 -m "Tag msg"
git push --tags
Run Code Online (Sandbox Code Playgroud)
我遇到的主要问题是master分支没有移动到最新的标签,所以我总是处于Detached HEAD状态.有没有办法解决这个问题,以便主分支始终指向最新的推送标签?
我们有一个Jenkins工作,当有新的提交时,它会构建除master之外的每个分支.可以通过git plugin的"选择策略:反向"来配置此行为,以便它侦听除指定分支之外的每个分支.
这个功能非常好.但问题是GIT_BRANCH环境变量总是引用排除的分支(在我们的例子中是'origin/master').如何查询Jenkins构建的实际分支?
目前我正在使用一种解决方法,我从生成的changelog.xml中获取它.但有时候,当Jenkins在不同的分支之间切换时,changelog.xml为空,我找不到这个信息.从Jenkins检索/查询实际构建的分支的正确方法是什么?
git status 说:
HEAD detached at e1997bd
Run Code Online (Sandbox Code Playgroud)
并git rev-parse HEAD说:
e1997bd
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我认为HEAD脱离意味着HEAD没有指向分支尖端.
介绍和搜索
所以我认为我犯了一个严重的错误,我很担心。我已经解析了论坛上的超脱头脑,我已经接近找到答案了,但是场景太具体了,不适用于我所处的位置。如果您找到回答我问题的特定线程,请链接我。
例如:如何将分离的 HEAD 与 master/origin 协调?
那家伙已经做了git rebase -i,而我没有。我试过变基,但它没有解决我的问题。
小背景:
问题:
要使用工作代码访问旧提交,我做了(可能是错误的事情):
git log
git checkout <hash-of-desired-old-commit>
Run Code Online (Sandbox Code Playgroud)
我继续完成代码。感谢上帝的版本控制!但是射击,为什么 git 这么复杂?我如何保存这项工作?我现在处于一个超脱的头脑中。Origin/Master 在未来的一些提交中最好全部删除。
我尝试过的:
git add -A跟着git commit -m "oh shit, detached head commit"和git rebase mastergit reset --hard HEAD~3根据此处的建议:检查旧提交并使其成为新提交问题:我如何将我的超然头与原点/大师调和?一旦和解,我是否需要git push --force或其他什么(特别是--force旗帜)?这个独立的头有工作,我读到我等待的时间越长,垃圾收集可能会来吃我丢失的分支。抱歉,我确实缺乏任何正式的 git 培训……我几乎准备好检查 origin master 然后重写代码。
先感谢您。
在推送跟随错误发生
git.exe push "origin" master:master
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'non-fast forward'
section of 'git push --help' for details.
To //oht-fsv1/Source/Git/Test
! [rejected] master -> master (non-fast forward)
Run Code Online (Sandbox Code Playgroud)
怎么了?
更新: 这似乎肯定是我需要的。但是,当我按照说明进行操作时,我不知道如何让我的开发branch指向我的temp分支
即如何在pycharm中执行以下命令:
git branch -f develop temp
git checkout master
Run Code Online (Sandbox Code Playgroud)
我正在“尝试裁剪所有帧...”提交 ( commit f4b641d) 并且我需要暂时返回上一个提交只是为了环顾四周。我这样做了Checkout Revision,然后我又回到commit f4b641了另一个,checkout revision尽管我强迫它,因为我不关心丢失的本地更改。
无论哪种方式,我现在都可以在 pycharm GUI(见第一张图片)的右下角看到我不再在develop分支中。所以我一直在该f4b641分支上进行开发,现在希望提交并将我在该分支中的更改推送回 github 上的开发分支。如何在不丢失更改的情况下在 pycharm 中重新连接我的头?
警告对话框告诉我我应该签出一个分支以避免丢失我的工作,但如果我这样做,我会丢失我的本地更改,不是吗?
我正在使用源代码的三个分叉版本。仅供参考,我更改了名称以不透露身份/回购。这是它的布局方式:
MyMBP:~/Documents/_library$ git remote -v
abc https://github.com/abc/_library (fetch)
abc https://github.com/abc/_library (push)
origin https://github.com/123/_library.git (fetch)
origin https://github.com/123/_library.git (push)
upstream https://github.com/source/_library (fetch)
upstream https://github.com/source/_library (push)
Run Code Online (Sandbox Code Playgroud)
这里,upstream是最新和稳定版本的原始源代码。Origin 是我的分叉版本。ABC 是别人的版本。
ABC 有一个分支,我从那里拉出来工作。然后我想进行更改并推送到我的存储库(来源),然后提交拉取请求。ABC 上的分支被称为“abc/obs-noise”。
在 git 状态下:
git status
HEAD detached from abc/obs-noise
Run Code Online (Sandbox Code Playgroud)
当我对上述文件进行更改时,我承诺:
git commit
[detached HEAD e8eeea3] OBSERVATION NOISE ADDITION TO THE MONITORS
1 file changed, 23 insertions(+), 11 deletions(-)
Run Code Online (Sandbox Code Playgroud)
然后我 git push (据说是我的原点)。
git push -u origin abc/obs-noise
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing …Run Code Online (Sandbox Code Playgroud) 我总共有 24 次提交,并且我已签出提交 15 次。我怎样才能返回到上次提交?
注意:我已经运行了很多提交。为实例,
git revert, git checkout, git reset.
Run Code Online (Sandbox Code Playgroud)
我不知道我上次提交的名称、ID,甚至文件。我只知道我已经承诺了,但我并不在那里。
但我无法返回到我最新的提交。
谢谢