(划重点啊盆友们。讲道理我觉得之前在学git的时候,弄那个分支的概念,简直了。)
远程仓库是指托管在因特网或其他网络中的你的项目的版本库。
如果想查看已经配置的远程仓库服务器,可以用git remote命令。如果你已经克隆了自己的仓库,至少能看到origin,这个是Git给的仓库服务器的默认名字。
$ git remote //查看远程仓库服务器
origin
或者用-v,看仓库的简写和对应的url
$ git remote -v
origin http://xxxxxxxxxx.xx
$ git fetch [remote-name]
这个命令会访问远程仓库,从中拉取所有你还没有的数据。执行完成之后你会拥有远程仓库中所有分支的引用。
git push [remote-name][branch-name]
//比如 git push origin master
$ git remote show origin
remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
$ git remote rename 现有的名字 将要命名的名字
# git remote rm 仓库简写名
Git可以给历史中某一个提交打伤标签表示这个提交很重要。比如发布一个功能,就需要打标签。
$ git tag
publish/0.0.1
v1.0
//(按字母顺序排列)
创建附注标签
$ git tag -a v1.4 -m 'hello a '
//-m指定了将会存储在标签中的信息,就是注释啦。。
通过git show命令可以看到标签信息和对应的提交信息
$ git show v1.4
.......//显示打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息。
创建轻量标签
$ git tag v1.5 //只需要提供标签名字
轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字
这时候在轻量标签上运行git show,不会看到额外的标签信息,只会显示出提交信息。
后期打标签
$ git tag -a v1.2 9fceb02
共享标签
创建完标签后必须显式地推送标签到共享服务器上。
$ git push origin [tagname]
一次性把所有不在远程仓库服务器上的标签全部推送
$ git push origin --tags
$ git config --global alias.co checkout
//git config --global alias.[简写] [完整命令]
首先明确,Git保存的是不同时刻的文件快照。
创建新分支
创建新分支的本质就是新建了一个可以移动的指针。
$ git branch 分支名
//会在当前所在的提交对象上创建一个指针
查看各个分支当前所指的对象
$ git log --oneline --decorate
分支切换
$ git checkout 已存在分支
把分支从master切到testing
在testing分支上提交内容
切回master分支再提交
合并分支
$ git checkout master
$ git merge hotfix
当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”
分支合并遇到冲突
<<<<<<< HEAD:index.html
console.log(aaa)
=======
console.log(bbb)
>>>>>>> iss53:index.html
Head所指的是目前指针指的版本,也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支。iss53分支所指的版本在下半部分。需要手动解决冲突。
删除分支
$ git branch -d 需删除的分支名
分支管理
git branch不只可以创建和删除分支,不加任何参数则得到所有分支的一个列表。
$ git branch
iss53
*master
testing
*字符标识现在检出的分支,即HEAD指针指向的分支。
查看每一个分支最后一次的提交:
$ git branch -v
iss53 93b412c fix javascript issue
*master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author
查看哪些分支已经合并到当前分支
$ git branch --merged
iss53
*master
因为之前已经合并了 iss53 分支,所以现在看到它在列表中。 在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。
查看所有包含未合并工作的分支
$ git branch --no-merged
未合并的分支删除会失败
添加某个服务器为当前项目的远程分支之一
$ git remote add [分支名] [地址]
推送本地分支到远程仓库
$ git push origin [分支名]
//Git 自动把 serverfix 分支名扩展为 refs/heads/serverfix:refs/heads/serverfix,意为“取出我在本地的 serverfix 分支,推送到远程仓库的 serverfix 分支中去”。
从远程仓库拉了别人创的新分支,想继续开发,可以用下面命令
$ git checkout -b test origin/test
//test为分支名
$ git checkout --track origin /test
删除远程分支
$ git push origin :[分支名]
分支衍合
merge的合并是合并出一个新的提交。rebase的衍合是把提交直接移动到下个指针
merge如下图
rebase如下图
衍合可以用来清提交记录数据,but官方文档说,一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
然后说如果这么干,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。。。。。
好了差不多总结好了。后面服务器的知识不弄了,看文档~
因篇幅问题不能全部显示,请点此查看更多更全内容