1. 远程库
的名字就是origin,这是git默认的叫法,也可以改成别的,但origin这个名字一看就是远程库。
在github中创建一个git仓库(learngit)
把本地库的内容推送到远程,用git push命令,实际上是把当前的分支master推送到远程
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
在github中的仓库中:
2. 从远程库克隆
在GitHub中创建一个新的仓库gitskills
克隆一个本地库(git clone)
3. 分支管理
创建和合并分支
git merge <分支> 用于合并指定分支到当前分支
Eg: git merge dev 将dev分支合并到master上
删除分支:
git branch -d <分支>
例如:git branch -d dev 将dev分支
<<
查看分支:git branch
创建分支:git branch <name>
切换分支: git checkout <name>
创建+切换分支: git checkout -b <name>
合并某分支到当前分支:git merge <name>
合并分支时,加上 --no-ff 参数可以用普通模式进行合并,合并后的历史有分支,能看出来层间做过合并,而fast forward合并后就看不出曾做过合并。
例如:
删除分支:git branch -d <name>
4. 解决冲突
在git无法自动合并分支时,就必须首先解决冲突,解决冲突后,再提交,合并完成
(例如在dev分支中对readme.txt文件进行修改提交后,又在master中对该文件进行修改提交后,将dev分支合并master时,合并失败,会出现合并冲突的,然后进行手动修改)
git log --graph 命令可以看到分支合并图
5. 修复bug
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再用git stash pop回到工作现场。
6. 删除分支
git branch -d <分支>
强制删除分支:git branch -D <分支>
7. 多人协作
查看远程库信息:git remote -v(本地创建的分支如果不推送到远程,对其他人是不可见的)
从本地推送分支:git push origin branch-name
(如果推送失败,先用git pull抓取远程的新提交)
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
(本地和远程分支的名称最好一致)
建立本地分支和远程分支的关联:git branch --set-upstream branch-name origin/branch-name
从远程抓取分支:git pull
(如果有冲突,先处理冲突)
- Rebase :把本地未push的分叉历史整理成直线。
在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
9. 标签管理
新建标签:git tag <tagname> 默认HEAD ,也可指定一个commit id
指定标签信息:git tag -a <stgname> -m “jhdhfsah”
查看所有标签:git tag
删除标签:git tag -d <标签>
推送某个标签到远程: git push origin <tagname>
一次性推送全部尚未推送到远程的本地标签: git push origin --tags
注:如果标签已经推送到远程,要删除远程标签,先从本地删除
Git tag -d <tagname>
从远程删除:git push origin :refs/tags/<tagname>