赞
踩
在本地init
一个仓库,然后创建一个develop
分支,并在这个分支上进行文件操作,接着commit
所做的修改。
$ git init
Initialized empty Git repository in D:/practice/testBranch/.git/
$ git checkout -b develop
Switched to a new branch 'develop'
$ vim a.txt
$ git add a.txt
$ git commit -m "add a new file"
[develop (root-commit) f9ac3b8] add a new file
1 file changed, 1 insertion(+)
create mode 100644 a.txt
接着你切到master
分支上,进行文件操作。这时就会出现下面的错误:
$ git checkout master
error: pathspec 'master' did not match any file(s) known to git.
git init
命令会默认创建一个master
分支,并将HEAD
(它是一个特殊的指针,指向当前所在的本地分支)指向到该分支上。虽然如此,但是你通过git branch -a
命令来查看本地和远程的分支时,是看不到任何分支的。
git checkout master
命令其实做了两件事:一是使HEAD
指回master
分支;二是将工作目录恢复成master
分支所指向的快照内容。
在HEAD
指回master
分支后,需要将工作目录恢复到master
分支所指向的内容。但是由于你从开始一直在develop
分支上进行操作,master
分支对应的工作目录相当于还什么都没有,这样就出现匹配不到任何文件。
你只需要在初始化一个仓库后,先在master
分支上进行一些commit
操作,比如增加一个README.md
文件,这样就真正创建了一个master
分支。例如:
$ git init Reinitialized existing Git repository in D:/practice/testBranch/.git/ $ vim README.md $ git add README.md warning: LF will be replaced by CRLF in README.md. The file will have its original line endings in your working directory. $ git commit -m "add a new file" [master (root-commit) 0e8c7c3] add a new file 1 file changed, 1 insertion(+) create mode 100644 README.md $ git push Counting objects: 3, done. Writing objects: 100% (3/3), 219 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: remote: Create a pull request for 'master' on GitHub by visiting: remote: https://github.com/benben/testBranch/pull/new/master remote: To github.com:benben/testBranch.git * [new branch] master -> master
在进行push
操作时,你就可以看到提示,在远程仓库创建了一个master
分支,并且本地的master
分支指向远程的master
分支。
这时你通过git branch -a
就可以看到所有本地和远程的分支。接着就可以创建其他分支,并且可以在master分支之间任意切换。
$ git branch -a
* master
remotes/origin/master
在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。