网站建设含义,怎么查自己是不是团员,wordpress开发 文档下载,珠海网站制作价格Git分支操作本地仓库创建分支合并分支删除分支远程仓库push 推送远程分支pull 拉取远程分支fetch 更新远程分支本地分支与远程分支的跟踪关系本地仓库
由于Git的分布式特性#xff0c;所以没有绝对的本地和远程概念#xff0c;一切都是相对的。对于分支的操作#xff0c;个…
Git分支操作本地仓库创建分支合并分支删除分支远程仓库push 推送远程分支pull 拉取远程分支fetch 更新远程分支本地分支与远程分支的跟踪关系本地仓库
由于Git的分布式特性所以没有绝对的本地和远程概念一切都是相对的。对于分支的操作个人认为其实重点在于本地的分支操作而对于远程仓库的分支操作归结起来只有 推送 和 拉取
创建分支
创建本地分支有两种命令方式第一是使用分支命令branch第二是使用查看命令checkout
推荐使用查看命令 git checkout -b new_branch_name它是下面两条命令的简写
git branch new_branch_name
git checkout new_branch_name深度应用在某个场景下当我们的项目在不断推进后老板突然说“第一版其实还不错我们再看一下”我“…”。
这时我们当然可以使用回滚或者查看历史版本的方式在这之前先备份一下当前代码又或者创建个分支保护一下什么的但是这样做仍然可能会很危险亦或者很麻烦这个时候我们就会想如果能在第一版有个分支就好了。是的我们还可以根据某个历史提交状态来创建一个分支。
仍然使用查看命令git checkout -b branch_name SHA-1使用历史提交版本的SHA-1校验和来创建指定历史版本的分支SHA-1校验和的值可以通过git log查看它实际上也是多个命令的简写
git checkout SHA-1
git branch branch_name
git checkout branch_namegit checkout -b甚至可以根据远程仓库来创建本地分支git checkout -b local_branch remote/remote_branch
说明git branch会根据当前的代码状态创建分支不管这个状态是最终状态还是某个历史状态git checkout 查看 / 切换分支也可以查看某个历史版本
除此之外还能使用git checkout --orphan branch_name创建一个空白分支
命令总结
git checkout -b branch_name 创建分支git checkout -b branch_name SHA-1 在历史版本SHA-1位置创建分支git checkout -b branch_name remote/remote_branch 基于远程分支创建分支git checkout --orphan branch_name 创建空白分支
合并分支
git提供了两种合并指令 merge 和 rebase用于将两个或两个以上的开发历史加入(合并)一起。如果合并没有冲突则会自动进行一次提交。
git merge branch_name将 branch_name 分支合并到当前分支
删除分支
使用git branch -d branch_name来删除指定分支及时的删除一些无用分支是个良好的习惯不然我们将在众多分支中晕头转向。使用git remote prune remote 来清除本地缓存的无效远程分支指针
远程仓库
实际上并不存在显性的对远程分支的操作所有对远程分支的操作都是 push 的副作用。
对远程仓库的操作一般时 fetchpull 和 push这个操作的意义在于同步远程仓库和本地仓库更确切的说法是将本地仓库的某条分支和远程仓库的某条分支进行同步。
比如本地仓库有 master 和 test 两条分支远程仓库有 master 和 develop 两条分支我们可以将远程仓库的 develop 分支同步到本地的 master 分支上也可以将本地的 master 分支同步到远程仓库的 master 分支上同步的实质时合并两条分支如果是两条不相关的分支则不能合并即推送 / 拉取不成功强行推送 / 拉取除外。
push 推送远程分支
push的完整写法是
git push remote local_branch:remote_branch意思是将本地 local_branch 分支推送到远程仓库的 remote_branch 分支并进行 merge 合并如果远程仓库没有 remote_branch 分支则会创建分支所以在远程分支不存在的情况下该操作相当于创建远程分支 省略远程分支名 git push remote local_branch git会推送local_branch分支到远程仓库的与本地分支同名的远程分支 eggit push origin dev 相当于 git push origin dev:dev 的简写 省略本地分支名 git push remote :remote_branch Git会删除远程仓库上的remote_branch分支即用一个空分支更新remote_branch分支相当于删除远程分支 eggit push origin :dev 相当于 git push origin --delete dev 省略所有分支名 git push remote 如果当前分支和远程分支存在追踪关系则本地分支和远程分支都可以忽略。如果当前分支只有一个远程主机那么远程主机也可以省略。 git push --all remote 将本地的所有分支都推送到远程主机。 git push --force remote [local_branch:remote_branch] 当服务器上版本和本地版本不一致时push会发生冲突git会提示我们先使用pull来解决冲突如果一定要推送可以使用这个命令除非一定要这样否则应该避免使用force。
pull 拉取远程分支
和push类似pull的完整写法是注意本地分支和远程分支的顺序
git pull remote remote_branch:loacl_branch意思是将远程仓库 remote_branch 分支拉取到本地仓库的 local_branch 分支并进行merge合并如果本地仓库没有 local_branch 分支则会创建分支。 省略本地分支名 git pull remote remote_branch git会拉取remote_branch分支当前本地分支 省略所有分支名 git pull remote 如果当前分支和远程分支存在追踪关系则本地分支和远程分支都可以忽略。如果当前分支只有一个远程主机那么远程主机也可以省略。 git pull remote --rebase 合并的时候采用rebase模式
fetch 更新远程分支
git pull 实际上是 git fetch 和 git merge 的联合操作
git pull origin master相当于
git fetch origin master
git merge origin/master本地分支与远程分支的跟踪关系
git branch -vv 查看分支跟踪情况git branch --set-upstream-toremote/branch_name branch_name 将branch_name分支追踪远程分支remote/branch_namegit branch -u remote/branch_name 设置当前分支追踪远程分支 remote/branch_name