试图了解 Git 个分支
Trying to understand Git Branches
我是从 Git 开始的,但我并不完全了解分支的工作原理。
我开始了一个基本项目,并执行了以下操作:
- 从'master'本地分支开始,创建2个文件:1.txt和2.txt。添加那些文件。提交和推送。 => origin/master 现在有这 2 个文件。
- 从 'local/master = head/master' => wip_12_pushed 创建一个正在进行的分支 (wip)(它应该有文件 1 和 2)
- 仍然在本地主控中,再创建两个 文件 (3,4)) 但 甚至不要添加它们。
- 从 'local/master' 创建一个分支 => wip_34_not_added (我想这应该仍然只有文件 1,2... as 3,4尚未添加)
- 在本地 master 中,再创建两个 文件 (5,6),添加它们,提交它们并 推送它们。
- 从 'local/master'=> wip_files_56_pushed 创建分支(因此应该推送文件 1、2、5、6)
- 在本地 master 中,再创建两个 文件 (7,8),添加它们,提交它们但不要推送它们
- create local branch from 'local/master => wip_78_committed_only(所以这应该有文件 1,2,5,6(全部推送),不确定 5,6。它们是否也应该像提交的那样出现在新分支中?)
我必须了解的问题是,当我切换到那些不同的分支时,我真的看不出我的 windows 命令行有什么不同?甚至转到我的 windows 文件夹,所有文件仍然存在,所以 我怎么知道哪个文件属于哪个分支?
甚至,我 切换到分支 'wip_56_pushed',这是在对文件 7 和 8 做任何事情之前创建的。然后我从那里做了 git push --set-upstream origin wip_56_pushed
分支和 文件 7 和 8 仅在 local/master 和 'wip78_committed' 中处于提交状态被推送到远程 origin/master 还有? 我原以为这个 'wip_56_pushed' 分支不知道新文件?
git push --set-upstream origin wip_56_pushed
不会将 wip_56_pushed
推到 origin/master
,而是推到 origin/wip_56_pushed
。当您之前将文件 7 和 8 添加到 master 并可能将其推送时,它们当然存在于 origin/master
中。如果你想将本地 wip_56_pushed
推送到 origin/master
,请执行 git push --set-upstream origin wip_56_pushed:master
.
至于哪些文件属于哪些分支,这个很简单。如果您已签出分支 X,则所有未取消跟踪的文件 (git status
) 都是您已签出的分支的一部分。
你是如何从一个分支切换到另一个分支的?你用了很多次 push.. 此时可能不需要,但甚至没有提到 checkout 甚至一次,主要用于在分支之间切换.. 你能分享以下
的输出吗
1 ) git reflog
2) git ls-tree --name-only master
3) git ls-tree --name-only < branch name >
(分享每个分支的结果)
我是从 Git 开始的,但我并不完全了解分支的工作原理。 我开始了一个基本项目,并执行了以下操作:
- 从'master'本地分支开始,创建2个文件:1.txt和2.txt。添加那些文件。提交和推送。 => origin/master 现在有这 2 个文件。
- 从 'local/master = head/master' => wip_12_pushed 创建一个正在进行的分支 (wip)(它应该有文件 1 和 2)
- 仍然在本地主控中,再创建两个 文件 (3,4)) 但 甚至不要添加它们。
- 从 'local/master' 创建一个分支 => wip_34_not_added (我想这应该仍然只有文件 1,2... as 3,4尚未添加)
- 在本地 master 中,再创建两个 文件 (5,6),添加它们,提交它们并 推送它们。
- 从 'local/master'=> wip_files_56_pushed 创建分支(因此应该推送文件 1、2、5、6)
- 在本地 master 中,再创建两个 文件 (7,8),添加它们,提交它们但不要推送它们
- create local branch from 'local/master => wip_78_committed_only(所以这应该有文件 1,2,5,6(全部推送),不确定 5,6。它们是否也应该像提交的那样出现在新分支中?)
我必须了解的问题是,当我切换到那些不同的分支时,我真的看不出我的 windows 命令行有什么不同?甚至转到我的 windows 文件夹,所有文件仍然存在,所以 我怎么知道哪个文件属于哪个分支?
甚至,我 切换到分支 'wip_56_pushed',这是在对文件 7 和 8 做任何事情之前创建的。然后我从那里做了 git push --set-upstream origin wip_56_pushed
分支和 文件 7 和 8 仅在 local/master 和 'wip78_committed' 中处于提交状态被推送到远程 origin/master 还有? 我原以为这个 'wip_56_pushed' 分支不知道新文件?
git push --set-upstream origin wip_56_pushed
不会将 wip_56_pushed
推到 origin/master
,而是推到 origin/wip_56_pushed
。当您之前将文件 7 和 8 添加到 master 并可能将其推送时,它们当然存在于 origin/master
中。如果你想将本地 wip_56_pushed
推送到 origin/master
,请执行 git push --set-upstream origin wip_56_pushed:master
.
至于哪些文件属于哪些分支,这个很简单。如果您已签出分支 X,则所有未取消跟踪的文件 (git status
) 都是您已签出的分支的一部分。
你是如何从一个分支切换到另一个分支的?你用了很多次 push.. 此时可能不需要,但甚至没有提到 checkout 甚至一次,主要用于在分支之间切换.. 你能分享以下
的输出吗1 ) git reflog
2) git ls-tree --name-only master
3) git ls-tree --name-only < branch name >
(分享每个分支的结果)