让我们说我们在git中有以下情况:
创建的存储库:
mkdir GitTest2
cd GitTest2
git init
Run Code Online (Sandbox Code Playgroud)主服务器中的一些修改发生并得到提交.
echo "On Master" > file
git commit -a -m "Initial commit"
Run Code Online (Sandbox Code Playgroud)Feature1分支主,一些工作完成:
git branch feature1
git checkout feature1
echo "Feature1" > featureFile
git commit -a -m "Commit for feature1"
Run Code Online (Sandbox Code Playgroud)同时,在主代码中发现错误并建立了修补程序分支
git checkout master
git branch hotfix1
git checkout hotfix1
Run Code Online (Sandbox Code Playgroud)该错误在修补程序分支中修复并合并回主服务器(可能在拉取请求/代码审查之后):
echo "Bugfix" > bugfixFile
git commit -a -m "Bugfix Commit"
git checkout master
git merge --no-ff hotfix1
Run Code Online (Sandbox Code Playgroud)feature1的开发继续:
git checkout feature1
Run Code Online (Sandbox Code Playgroud)现在我的问题:说我需要我的功能分支中的修补程序,可能是因为那里也出现了错误.如何在不将提交复制到我的功能分支的情况下实现此目的?我想阻止在我的功能分支上获得两个与功能实现无关的新提交.如果我使用Pull请求,这对我来说尤其重要:所有这些提交也将包含在Pull Request中,并且必须进行审核,尽管已经完成(因为修补程序已经在主服务器中).
我做不到git merge master --ff-only:"致命:不可能快进,堕胎."但我不确定这是否对我有所帮助.
我有一个名为'skeleton'的本地Git存储库,用于存储项目框架.它有一些分支,用于不同类型的项目:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Run Code Online (Sandbox Code Playgroud)
如果我想查看一个新项目的主分支,我可以做
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
Run Code Online (Sandbox Code Playgroud)
一切都是我想要的.具体来说,新的主分支指向骨架主分支,我可以推拉以移动对基本项目设置的更改.
但是,如果我想要克隆另一个分支,那么什么不起作用.我无法得到它,所以我只拉动我想要的rails分支,例如分支,然后新的存储库有一个master分支,rails默认情况下推送到骨架存储库的分支并从中拉出.
这有什么好办法吗?或者,也许这不是Git想要我构建事物的方式,我当然对此持开放态度.也许我应该有多个存储库,Ruby on Rails骨架存储库跟踪主骨架存储库?任何克隆Ruby on Rails骨架存储库的单个项目.
我想我正在理解git的基本概念.
我已经设置并克隆了一个远程存储库.我还创建了一个服务器端空存储库,并将我的本地存储库链接到它.
我的问题是我不明白之间的区别:
据我所知,master是一个本地分支,而remotes/origin/master是一个远程分支.
但究竟什么是起源/主人?
我用了
git reset --hard dc082bc...由于一些错误的提交,恢复到分支回到所需的先前状态.这让我当地的分公司很好.但是,我想将'origin'上的分支回滚到同一个commit,以便我可以重新开始.谁能告诉我如何将原始分支(非主人)恢复到此提交?
我已经尝试过git push origin master,但它给出了以下错误
! [rejected] branch -> branch (non-fast-forward) error: failed to push some refs to 'git@github.com:xxx/xxx.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
从一个git分支,我的一个同事跑了
git diff origin master
Run Code Online (Sandbox Code Playgroud)
它应该做什么?什么是origin单独指向?
这是相关的,但在In Git中没有涉及, origin/master与origin master之间有什么区别?
为什么有两个“原点/主”指针(一个在头部是红色,一个在底部是绿色)?
85ea9aa (HEAD -> master, origin/master) rewrote weight routines to include initialization
b511483 refactored mnist with globals
33a515e refactored naive to use model-ref dictionary for weights
c0253d2 reworked matrix build
ba654ea (origin/master) initial baseline of julia mnist implementation following Dogra
Run Code Online (Sandbox Code Playgroud) git ×6
branch ×1
commit ×1
diff ×1
git-branch ×1
git-clone ×1
git-flow ×1
git-remote ×1
github ×1
reverting ×1