本地git仓库和github仓库之间的传输是经过SSH加密的,因此:git
若是在本地建立了一个git仓库,又在GitHub建立了一个,而且想让这两个仓库同步,步骤:github
从远程仓库克隆:app
若是先创建了远程仓库,想要把他克隆下来:ssh
master是git 的一个主分支,在仓库中还能够有不少分支,用git branch 分支名 建立,HEAD是一个指针,指向哪一个分支就说明正在哪一个分支上工做,在命令行窗口中输入命令git branch,能够查看仓库中有哪些分支,前面带*号的说明HEAD指向这个分支(正在这个分支工做):加密
分支管理:spa
在以前的提交里,一直只有一条分支master,HEAD指向的分支,表示当前正在工做的分支,修改或建立新文件后产生的新提交都增添到这个分支里,命令行
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也愈来愈长。指针
当咱们建立新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:orm
修改或建立新文件后产生的新提交都增添到dev这个分支里(∵HEAD指向dev),master分支不会产生新的提交!也就是其内容不会被改变!blog
当在dev上的修改完成后,想要把他合并到master里,则只须要将master指针指向dev,以后也能够把dev指针删除掉。
查看分支:git branch
建立分支:git branch <name>
切换分支:git checkout <name>
建立+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>(注意合并分支时HEAD指向的当前分支,<name>写的是非HEAD指向的分支)
若是合并时采用命令(加上no—ff,表示禁用fast forward):
git merge --no-ff -m "common" <name>
合并分支时,加上--no-ff参数就能够用普通模式合并,合并后的历史(用git log –graph查看)有分支,能看出来曾经作过合并,而fast forward合并就看不出来曾经作过合并
删除分支:git branch -d <name>
解决冲突:
假设在dev分支修改了仓库中的某个文件并提交,再切换回master,打开这个文件,会发如今dev中作的修改并无出如今这里,若是咱们此时再对这个文件作修改并提交,再使用git merge命令合并两个分支时就会产生冲突错误,可以使用git status查看冲突内容,再次打开这个文件,会发现冲突内容被写入这个文件,此时须要在这个文件里手动修改解决冲突,再次用git merge命令合并分支
临时退出:
假设当前分支a下的工做没有完成,新建立的文件或新的修改还没完成还不能提交,又须要退出去分支b作别的工做,就须要git stash命令,将当前工做储藏起来,再用git checkout b切换到分支b去作别的工做,完成别的工做以后,要回到原来的工做,须要在再回到分支a,此时用git status命令查看工做区可见工做区是干净的,须要使用git stash pop(stash内容删除,可以使用git stash list命令查看stash内容)或git stash apply(stash内容不删除)命令来恢复原来的工做。
若是要丢弃一个没有被合并过的分支,能够经过git branch -D <name>强行删除。
查看远程仓库信息:git remote(或git remote –v查看更详细信息)
推送分支:git push origin master
推送其余分支,好比dev:git push origin dev
· master分支是主分支,所以要时刻与远程同步;
· dev分支是开发分支,团队全部成员都须要在上面工做,因此也须要与远程同步;
· bug分支只用于在本地修复bug,就不必推到远程了,除非老板要看看你每周到底修复了几个bug;
· feature分支是否推到远程,取决于你是否和你的小伙伴合做在上面开发。
使用git clone从远程库克隆后获得的本地库只有master分支,若是须要在dev上进行开发,则须要使用如下命令建立本地dev分支:
git checkout -b dev origin/dev
这样之后就能够把修改后的dev分支push到远程库,若是有人先推送了新的提交到origin/dev,则后来者再推送就会产生冲突,解决方法:使用
git pull
命令把最新的提交从origin/dev抓取下来,而后再本地合并,方法和解决冲突中同样,再push回去
若提示:There is no tracking information for the current branch. Please specify which branch you want to merge with。。。。
表示没有指定本地dev分支与远程origin/dev分支的连接,根据提示,设置dev和origin/dev的连接:
git branch --set-upstream-to=origin/dev dev
即:
可以使用git remote –v查看远程库名和地址: