我来自Subversion背景,当我有一个分支时,我知道我正在处理的是"这些工作文件指向这个分支".
但是对于Git,我不确定我何时在NetBeans或Notepad ++中编辑文件,无论它是与主服务器还是其他分支相关联.
git在bash中没有问题,它告诉我我在做什么.
我的同事和我在同一个存储库上工作,我们已经将它分成两个分支,每个分支在技术上用于不同的项目,但是它们有相似之处,所以我们有时会想要master从... 返回到*branch.
但是,我有branch.我的问题是,我的同事怎么能专门拉那个分支?
一个git clone回购似乎并不在本地创建分支的他,虽然我可以在我结束推后住上unfuddle看到它们.
此外,当我最初创建分支时,我做了-b checkout.不确定这是否有很大的不同?
$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
$ git fetch origin discover
$ git checkout discover
Run Code Online (Sandbox Code Playgroud)
这些是我跑的命令.但它绝对不起作用.
我希望能够检查该分支,然后推送并提交来自各个协作者或工作站的分支更改.
我想合并两个已分开一段时间的分支,并想知道哪些文件已被修改.
遇到这个链接:http://linux.yyz.us/git-howto.html这非常有用.
比较我遇到的分支的工具是:
git diff master..branchgit log master..branchgit shortlog master..branch想知道是否有类似"git status master..branch"的东西只能看到两个分支之间不同的文件.
在没有创建新工具的情况下,我认为这是您现在可以做到的最接近的工具(如果文件被多次修改,当然会显示重复):
git diff master..branch | grep "^diff"想知道是否有我遗漏的东西......
master创建了一个新的分支,我们称之为test.
有几个开发人员要么提交master或创建其他分支,然后再合并master.
假设工作test需要几天时间,并且您希望不断test更新内部提交master.
我会做git pull origin master的test.
问题1:这是正确的方法吗?其他开发人员可以轻松地处理相同的文件,就像我工作顺便说一句.
我的工作test已经完成,我准备把它合并回来master.以下是我能想到的两种方式:
A:
git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test
Run Code Online (Sandbox Code Playgroud)
B:
git checkout test
git pull origin master
git checkout master
git merge test
Run Code Online (Sandbox Code Playgroud)
我没有使用,--rebase因为根据我的理解,rebase将从中获取更改master并将其叠加在其上,因此它可以覆盖其他人所做的更改.
问题2:这两种方法中哪一项是正确的?那有什么区别?
所有这一切的目标是让我的test分支更新所发生的事情,master然后我可以将它们合并回master希望保持时间线尽可能线性.
可能重复:
使当前Git分支成为主分支
我的Git存储库中有两个分支:
masterseotweaks(最初创建master)我创建seotweaks的目的是迅速将其合并回来master.然而,那是三个月前,这个分支的代码是13个版本master.
它已经有效地成为我们的工作主分支,因为现在所有的代码master或多或少已经过时了.
我知道非常糟糕的做法,经验教训.
你知道如何master用那些替换分支的所有内容seotweaks吗?
我可以删除所有内容master并合并,但这不是最佳实践.
我克隆了一个Git存储库,它包含大约五个分支.但是,当我这样做时,git branch我只看到其中一个:
$ git branch
* master
Run Code Online (Sandbox Code Playgroud)
我知道我可以git branch -a看到所有分支,但是我如何在本地拉出所有分支,所以当我这样做时git branch,它显示以下内容?
$ git branch
* master
* staging
* etc...
Run Code Online (Sandbox Code Playgroud) 我在Git中创建了一个新分支:
git branch my_branch
Run Code Online (Sandbox Code Playgroud)
推它:
git push origin my_branch
Run Code Online (Sandbox Code Playgroud)
现在说有人在服务器上做了一些更改,我想从中拉出来origin/my_branch.我做:
git pull
Run Code Online (Sandbox Code Playgroud)
但我得到:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like …Run Code Online (Sandbox Code Playgroud) 我使用以下命令推送到我的远程分支:
git push origin sandbox
Run Code Online (Sandbox Code Playgroud)
如果我说
git push origin
Run Code Online (Sandbox Code Playgroud)
这会推动我的其他分支的变化,还是只更新我当前的分支?我有三个分支:master,production和sandbox.
该git push文件是不是这个很清楚,所以我想澄清这一点为好.
哪些分支和遥控器可以git push完全更新以下命令?
git push
git push origin
Run Code Online (Sandbox Code Playgroud)
origin 上面是一个遥控器.
据我所知,git push [remote] [branch]只会将该分支推送到远程.
如果我跑git branch -d XYZ,有没有办法恢复分支?有没有办法回去,好像我没有运行删除分支命令?