1、创建本地库 在github网站进行创建。
2、在本地pc上创建库和github的远程库进行关联,有两种选择:
1)从github上进行克隆,克隆到本地。
命令为:git clone git@github.com:wbh91128/git_test.git。执行完毕之后,默认 为远程仓库 git_test.git 起别名 origin。其次,为在相应的目录下创建目录 git_test ,并且将项目拷贝到该目录上。
2)在本地创建一个库,进行初始化。
git init
git remote add origin git@github.com:wbh91128/git_test.git (和远程库进行 关联,并进行关联)
接下来进行 push 操作。
git add .
git commit -m “”
git push origin master
这样,本地库的master分支和github远程库上的master分支进行关联
3、在本地创建分支,并且同步到远程仓库中。
1)在本地创建分支 git branch guest_branch
2)在本地库中切换到 guest_branch 分支,git checkout guest_branch
3)在guest_branch 分支下,添加文件等,然后push到远程
git push origin guest_branch 这句话相当于在远程创建分支,并且远程的guest_branch 分支和 本地的guest_branch 分支是同步的。
-
查看分支 git branch -a
*** guest_branch
master
remotes/origin/guest_branch
remotes/origin/master
在本地:
每次提交一次,节点就会向后添加一个,而master分支指向最后一次添加的节点。而HEAD指针始终指向当前分支的最后一次提交。现在要进行的操作是:git branch guest_branch
git checkout guest_branch(切换到某一个分支,是指就是将HEAD指针指向那个分支的提交节点)
由于 本地的master分支是跟踪远程的master分支的,如果想要本地的dev_branch分支也要跟踪远程的dev_branch 分支,则进行push操作。
git push origin dev_branch
这个命令操作之后,将会在远程库 github中创建分支 dev_branch,同时将本地的dev_branch 分支的内容push到远程github的dev_branch 分支上。进行跟踪。
因此操作完成后,本地的master分支跟踪远程的master分支,本地的guest_branch 分支根据远程github的guest_branch 分支。
github上的分支跟踪图:
4、进行分支合并
有这样的分支结构,在本地是这样的:
上面的分支图表示:
- 本地master分支和远程github的master分支进行跟踪
- 本地的dev_w_branch和远程dev_w_branch 的分支进行跟踪
- 本地的dev_w_sub_branch 和远程的dev_w_sub_branch 进行同步跟踪
在master分支上,在commit的信息为 add guest_js.js 的点之后,创建分支 dev_w_branch,在这个分支上用户进行的提交信息有 add file dev_w_1.js,add_file_dev_w_2.js。 - 在commit add_file_dev_w_2.js 之后,在dev_w_branch 的基础上,进行创建分支,dev_w_sub_branch。
- 在dev_w_sub_branch 分支上进行提交 commit add_dev_w_sub_1.js 点。
注:分支永远指向最后一次提交 commit的节点。而且,HEAD指针永远指向当前用户所在分支的分支名称。
相应同步跟踪到远程github上,远程的分支图是这样的:
目前要进行分支合并:即将 dev_w_sub_branch 分支去合并 dev_w_branch 分支上。但是首先要在本地进行合并,然后提交到远程。(红色线代表合并)
执行命令:
1)首先切换到 dev_w_branch, git checkout dev_w_branch
2)将dev_w_sub_branch 合并到 dev_w_branch,这个操作必须在dev_w_branch 中进行操作,因此要切换到 dev_w_branch 分支。git merge dev_w_sub_branch
首先合并:将dev_w_branch 去合并 dev_w_sub_branch 分支
1)切换到dev_wbranch 分支 git checkout dev_w_branch
2)进行合并,git merge dev_w_sub_branch(只是在本地进行合并)
3)在本地 merge完毕之后,发现 remote/origin/dev_w_branch 和 本地的dev_w_branch不一致,不能进行同步跟踪。需要将在dev_w_branch 分支上的变化提交到远程github。github是将dev_w_branch 和 remote/origin/dev_w_branch 进行同步追踪的,因此在 dev_w_branch 分支上,进行push操作,git push origin dev_m_branch(远程合并)
在本地的库中就变成这样:
而在远程变成这样:
此时不再需要 dev_w_sub_branch 分支,因此要删除它,首先要在本地进行删除。
则在 dev_w_branch 分支之上,对 dev_w_sub_branch 进行删除。
git branch -d dev_w_sub_branch (只是将分支 dev_w_sub_branch在本地删除)
执行完毕之后 本地变成这样:
很明显,远程的分支 remote/origin/dev_w_sub_branch 并没有被删除,因此要删除该分支,执行命令:git push origin --delete dev_w_sub_branch(将分支在远程删除)。远程变成这样:远程分支 dev_w_sub_branch 已经被删除。
本地变成这样:
每一个分支都有可以提交自己的文件:
比如在master分支中,文件主要有:
readme.txt,login.js
在dev_w_branch分支中,文件主要有:
readme.txt,login.js Hello.js
那么两个分支进行合并之后,master分支的文件变为:
readme.txt,login.js Hello.js