不知何故,我的主人和我的起源/主人分支已经分道扬.. 我实际上不希望它们分歧.如何查看这些差异并"合并"它们?
出于某种原因,我现在无法推动,而我昨天可以做到.也许我搞砸了一些东西.
这是发生的事情:
当我使用git push origin master时

我的工作目录和远程存储库是什么样的:

情况:
这样:
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
然后我开始研究quickfix2,但不小心将quickfix1作为源分支进行复制,而不是master.现在quickfix2处于X + 2提交+ 2相关提交.
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
\
q2a--q2b (quickfix2 HEAD)
Run Code Online (Sandbox Code Playgroud)
现在我希望有一个quickfix2分支,但没有属于quickfix1的2次提交.
q2a'--q2b' (quickfix2 HEAD)
/
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
我尝试从quickfix2中的某个修订版创建补丁,但补丁不保留提交历史记录.有没有办法保存我的提交历史记录,但有一个分支没有更改quickfix1?
我这样做了一个rebase:
git rebase --onto master new_background_processing export_background_processing
Run Code Online (Sandbox Code Playgroud)
这没有做我想要的,所以我执行了重置:
git reset --hard HEAD@{1}
Run Code Online (Sandbox Code Playgroud)
我让我的分支恢复到原来的状态,但是当我输入git status时收到了这条消息:
# You are currently rebasing branch 'export_background_processing' on 'e378641'.
Run Code Online (Sandbox Code Playgroud)
如何完全取消该rebase?不确定这本身就意味着什么.
我正在尝试创建一个使用多个Git命令和位置参数的别名.每个都有Stackoverflow页面,两者都显得非常明显,但我遇到了麻烦.
例如,我想切换到分支foo并执行状态.所以在我看来.gitconfig,我有:
[alias]
chs = !sh -c 'git checkout $0 && git status'
Run Code Online (Sandbox Code Playgroud)
这不起作用.而这样的事情会起作用.
chs = !sh -c 'git checkout $0'
echoes = !sh -c 'echo hi && echo bye'
Run Code Online (Sandbox Code Playgroud)
任何见解将不胜感激.
在进行git rebase时,我常常难以解决在解决冲突时"本地"和"远程"发生的事情.我有时会产生这样的印象:他们将一方提交交换到另一方提交.
这可能(肯定)因为我还没有正确理解.
变基础时,谁是'本地',谁是'偏远'?
(我使用P4Merge解决冲突)
我的git工作流程经常使用rebase.我总是取上游的变化(主要回购我从分叉),然后合并到我的树枝,然后重订去除无用的(对我说:d)合并的提交和树分裂.
这个工作流程中的一件事让我烦恼的是:
$ git rebase upstream/master
Cannot rebase: You have unstaged changes.
Please commit or stash them.
$ git stash
Saved working directory and index state WIP on cc: abc1234 Merge remote-tracking branch 'upstream/master' into local_branch
HEAD is now at abc1234 Merge remote-tracking branch 'upstream/master' into local_branch
$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Applying: awesome code change
$ git stash pop
Run Code Online (Sandbox Code Playgroud)
所以这里我们有4个命令,1 =失败的rebase,2 = stash,3 = rebase,4 = stash pop.除了3之外的任何东西都是无意识的工作
所以,问题是:最推荐的自动化方法是什么?每次都运行git …
我是git的新手,并不清楚stashing是如何工作的.
假设我正在分支主服务器上工作并尝试git pull接收错误,即我的本地更改将被覆盖并需要被隐藏或提交.如果我没有上演我的任何更改并运行git stash,那么做一个git pull并成功更新,当我发生了什么git stash apply?
一般来说,如果其他人修改文件并且我运行git pull,那么当我发生时会发生什么run git stash apply?它是否会覆盖刚刚更新的文件,无论它们是否在我存储时被暂存?它是否会覆盖我刚刚更新过的每个文件,git pull以及被隐藏的文件?
我正在尝试使用一系列单元测试进行预提交钩子,我想确保我的工作目录是干净的.编译需要很长时间,所以我希望尽可能利用重用编译的二进制文件.我的脚本遵循我在网上看到的例子:
# Stash changes
git stash -q --keep-index
# Run tests
...
# Restore changes
git stash pop -q
Run Code Online (Sandbox Code Playgroud)
这会导致问题.这是repro:
// Step 1到a.javagit add .// Step 2到a.javagit commit
git stash -q --keep-index #存储更改git stash pop -q #恢复更改此时我遇到了问题.该git stash pop -q显然有冲突,a.java我有
// Step 1
<<<<<<< Updated upstream
=======
// Step 2
>>>>>>> Stashed changes
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个流畅干净?
我是一名为客户制作网站的自由职业者.我有自己的基于React和Node的devstack.目前,当我开发一个新站点时,我只是复制我编写的最后一个项目并修改路由,页面等.当我添加一些新功能(更新webpack 1到2等等)时,我必须在每个项目中手动完成(或者我根本不做).
我想对此采取更专业的方法.你能向我推荐一些材料或态度吗?
我目前的目标是:使用我的devstack(框架)拥有一个repo(私有github并在验证后公开).每次我开始一个新项目时,我都会将它分叉(以便它保持为上游原点)并开始开发.每当我改变一些核心功能或添加我想要在其他项目中的东西时,我想以某种方式将其推送到devstack repo.我也可以手动将此代码复制到devstack,但我不想写两次,所以更好的方法会有所帮助.
我怎么能这样做,我的想法好吗?基本上,一些建议,如果它完全有意义,一些文章的链接将帮助我.谢谢.