在我的分支上,我在.gitignore中有一些文件
在不同的分支上,这些文件不是.
我想将不同的分支合并到我的,我不在乎这些文件是否不再被忽略.
不幸的是我明白了:
合并将覆盖以下未跟踪的工作树文件
如何修改我的pull命令来覆盖这些文件,而不必自己查找,移动或删除这些文件?
我曾经在一个本地分支机构工作,并将更改推送到远程.我想恢复该分支上的更改并对其执行其他操作,但我不想完全失去工作.我在考虑在本地创建一个新分支并在那里复制旧分支,然后我可以恢复更改并继续处理旧分支.还有更好的方法吗?或者我该怎么做?
有人知道切换和跟踪远程分支这两个命令之间的区别吗?
git checkout -b branch origin/branch
git checkout --track origin/branch
Run Code Online (Sandbox Code Playgroud)
我认为两者都跟踪远程分支,所以我可以将我的更改推送到原点上的分支,对吧?
有什么实际差异吗?
谢谢!
我有时会使用该checkout -b选项创建一个新分支,同时检查它并在一个命令中设置跟踪.
在新环境中,我收到此错误:
$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?
Run Code Online (Sandbox Code Playgroud)
为什么Git不喜欢它?这曾经使用相同的回购.
我已经克隆了一个存储库,之后其他人创建了一个新的分支,我想开始研究它.我阅读了手册,看起来很简单.奇怪的是它不起作用,我发现的所有帖子都表明我做的是正确的.因此,我会让自己受到抨击,因为这一定有明显的错误:
似乎是正确的行动
git fetch
git branch -a
* master
remotes/origin/HEAD --> origin/master
remotes/origin/master
git checkout -b dev-gml origin/dev-gml
Run Code Online (Sandbox Code Playgroud)
此时出现问题,由于某些原因git fetch我无法看到dev-gml远程分支.为什么不?如果我新近克隆存储库,它就在那里,所以远程分支肯定存在:
$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a …Run Code Online (Sandbox Code Playgroud) 将单个远程分支作为本地分支进行跟踪非常简单.
$ git checkout --track -b ${branch_name} origin/${branch_name}
Run Code Online (Sandbox Code Playgroud)
将所有本地分支推送到远程,根据需要创建新的远程分支也很容易.
$ git push --all origin
Run Code Online (Sandbox Code Playgroud)
我想反过来.如果我在一个源上有X个远程分支:
$ git branch -r
branch1
branch2
branch3
.
.
.
Run Code Online (Sandbox Code Playgroud)
我是否可以为所有远程分支创建本地跟踪分支,而无需手动创建每个分支?说出类似的话:
$ git checkout --track -b --all origin
Run Code Online (Sandbox Code Playgroud)
我用google搜索和RTM,但到目前为止已经上传了.
我想在这个git存储库中定义一个新的"root"分支."root"分支是指完全独立于存储库1中所有其他分支的分支.
不幸的是,甚至在Arepo的提交树的基础上提交(让我们称之为)包含很多文件(这是一个在已经相当成熟的项目上初始化的存储库).
这意味着即使我A作为新分支提供<start-point>,这个新分支也不会从"干净的平板"开始,而是包含所有提交的文件A.
有没有什么方法可以在这个存储库中创建一个完全裸的分支,<start-point>尽可能接近A?
1 BTW,这不等于创建一个新的回购.由于很多原因,单独的回购将不太方便.
编辑:好的,这是我做的,基于vcsjones的回答:
# save rev of the current earliest commit
OLDBASE=$(git rev-list --max-parents=0 HEAD)
# create a new orphan branch and switch to it
git checkout --orphan newbranch
# make sure it's empty
git rm -rf .
# create a new empty commit in the new branch, and
# save its rev in NEWBASE
git commit …Run Code Online (Sandbox Code Playgroud) 当我想取消暂存文件时,我所有的 Git 教程都显示如下内容:
$ git add *
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
modified: CONTRIBUTING.md
Run Code Online (Sandbox Code Playgroud)
此提示告诉我们git reset用于取消暂存文件。
但是,在我的终端中,我看到:
git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: cat.js -> catcat.js
renamed: tolendo.gogo -> tolendo.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme (copy).md
tolendo (copy).txt
zing (copy).html
Run Code Online (Sandbox Code Playgroud)
我的终端告诉我使用,git …
我在github上有一个存储库,它有一个主分支(master)和一个分支用于一些实验工作.我做了一些提交并推到实验分支,一切都很好.
现在,在另一台机器上,我尝试克隆我的存储库(git clone repository),然后切换到实验分支(git checkout branchname),但每次我这样做时,我的头都会分离,我无法推动我的更改.我究竟做错了什么?我觉得我在某个地方缺少一个基本的git概念,但是阅读随机的git手册页并没有给我任何线索.
我是git的新手,所以我很抱歉,如果我是一个白痴,但我在文档中找不到任何可以帮助我重新认识的东西.
编辑
跟踪分支的概念是我所缺少的.现在我认识到这个概念一切都很清楚.就个人而言,我发现git branch --track语法比直观更直观git checkout -b branch-name origin/branch-name.
谢谢您的帮助!
我使用git-svn并且我注意到当我必须在执行a之后修复合并冲突时,例如和的选项git svn rebase的含义是相反的.也就是说,如果存在冲突并且我想保留来自SVN服务器的版本并丢弃我在本地进行的更改,我必须使用,当我期望它.--ours--theirsgit checkoutourstheirs
这是为什么?
例:
mkdir test
cd test
svnadmin create svnrepo
svn co file://$PWD/svnrepo svnwc
cd svnwc
echo foo > test.txt
svn add test.txt
svn ci -m 'svn commit 1'
cd ..
git svn clone file://$PWD/svnrepo gitwc
cd svnwc
echo bar > test.txt
svn ci -m 'svn commit 2'
cd ..
cd gitwc
echo baz > test.txt
git commit -a -m 'git commit 1'
git svn rebase
git checkout --ours test.txt …Run Code Online (Sandbox Code Playgroud)