使用github 托管代码简单使用教程--远程操作
- 3.连接本地仓库与远程仓库
- 3.1 git clone 克隆实现链接
- 3.2 git remote add origin
- 4.远程操作
- 4.1 git checkout -b 切换分支1
- 4.2 git branch 查看分支
- 4.3 git merge 合并分支
- 4.3.1 step1:切换成主分支
- 4.3.2 step2:合并分支
- 4.3.3 step3:删除分支
- 4.3.4 git merge --no-ff 带参数合并分支
- 4.3.5 -D 强制删除没有合并的分支
- 4.4 git switch 切换分支2
- 4.5 解决冲突
- 4.6 分支管理策略
- 4.7 创建bug分支
- 4.7.1 git stash
- 4.7.2 bug 修复工作流程
- 4.7.3 git stash apply + git stash drop
- 4.7.4 git stash pop
- 4.7.5 git stash list
- 4.7.6 git cheery-pick 一键修复多分支bug
- 4.8 创建 feature 分支--新功能开发
- 4.9 多人协作
- 4.9.1 git remote
- 4.9.2 git push 推送特定分支
- 4.9.3 git pull
- 4.10 rebase
- 5.[git push](https://blog.csdn.net/u010312474/article/details/107915694)
廖雪峰老师博文学习笔记:https://www.liaoxuefeng.com/wiki/896043488029600/897884457270432
git pull 和 git fetch的区别?
3.连接本地仓库与远程仓库
3.1 git clone 克隆实现链接
克隆远程仓库到本地,克隆下来的仓库自然的形成和远程仓库的链接。
step 1.在github 平台上新建仓库
step 2.克隆改仓库到本地
git clone git@github.com:cyy-hub/Deecamp.git
step 3.在本地仓库上进行文件管理
step 4.将需要上推到远程仓库的文件进行Push操作
注意:
1.clone仓库,git会将本地的master 分支与远程的master分支对应起来。远程仓库默认名称是origin.
2.克隆下来时,只能看到master分支, 从远程创建其他分支到本地
git checkout -b dev origin/dev
3.2 git remote add origin
step1. 在本地新建一个仓库(新建一个文件夹之后 git init)
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
step 2.在github 平台上新建仓库(两个仓库的名字暂时设为一致)
step 3. 创建链接
git remote add origin git@github.com:cyy-hub/Deecamp.git
step 4.在本地仓库上进行文件管理
step 5.将需要上推到远程仓库的文件进行Push操作
第一次上推的时候用git push -u origin master,本地的master分支内容推送的远程新的master分支,同时将本地的master分支和远程的master分支关联起来
git push -u origin master
参考博文:https://www.cnblogs.com/longshiyVip/p/5642360.html
4.远程操作
每次提交,git 将每个版本串成一条时间线,一条时间线就是一个分支.
Head 指向当前作用的分支,如果没有新建分支,即为指向master分支。
4.1 git checkout -b 切换分支1
$ git checkout -b dev
Switched to a new branch ‘dev’
git checkout命令加上-b参数表示创建并切换到新的分支上,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch ‘dev’
4.2 git branch 查看分支
$ git branch
- dev
master
4.3 git merge 合并分支
4.3.1 step1:切换成主分支
git checkout master
4.3.2 step2:合并分支
(将指定分支(dev)合并到当前分支(master))
git merge dev
4.3.3 step3:删除分支
合并完可以选择删除过多的分支(dev)
git branch -d dev
4.3.4 git merge --no-ff 带参数合并分支
一般情况下,Git会用Fast forward模式合并。但这种模式下,删除分支后,会丢掉分支信息。如果要禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
git merge --no-ff -m “merge with no-ff” dev
因为合并且创建一个新的commit,所以加上-m参数,把commit描述写进去。
4.3.5 -D 强制删除没有合并的分支
git branch -D feature-vulcan
4.4 git switch 切换分支2
创建(-c参数)并切换到新的分支上
git switch -c dev
切换到已有分支
git switch master
4.5 解决冲突
两个分支上对同一个文件进行了修改,修改内容不一致,无法直接merge,需要手动解决冲突后再提交。
merge 的时候会显示冲突文件在哪里
CONFLICT (content): Merge conflict in readme.txt
打开对应的文件,会提示冲突内容,保留想留下的,去掉><=,再add,commit
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
带参数的git log 可以查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
4.6 分支管理策略
1.master 分支需要保持稳定性,仅用来发布新版本,不能在上面干活;
2.每个人在各自的分支上干活,稳定时的往主分支中合并即可
4.7 创建bug分支
4.7.1 git stash
把当前工作现场存储起来,等之后恢复现场继续工作。运行完git stash 之后用git status来查看工作区就是干净的。
git stash
4.7.2 bug 修复工作流程
每个bug 都可以通过一个新的临时分支来修复,修复后合并分支,然后删除临时分支。
step1: 确定在哪个分支上修复bug, 就在该分支上创建临时分支
step2: 修复big文件, 提交文件add, commit
step3:切换回原分支,合并分支merge
step4: 删除bug 分支
4.7.3 git stash apply + git stash drop
step1: 恢复内容
git stash apply
step2: 删除stash里的内容
git stash drop
多个现场保护在stash 中,apply可以指定想要恢复的工作现场
$ git stash list
stash@{0}: WIP on dev: f52c633 add merge
$ git stash apply stash@{0}
4.7.4 git stash pop
同时完成恢复和删除
git stash pop
4.7.5 git stash list
git stash list可以查看被保护起来的现场的情况,git stash pop 保存
4.7.6 git cheery-pick 一键修复多分支bug
修复了一个分支上的一个bug之后,从这个分支创建出来的分支同样存在这样的bug 。修复同样的分支,不需要再操作一遍。只需要把刚刚在 4.7.2 step 2 中的commit 所做的修改复制到copy 分支中。
step1: 切换到需要修复的copy 分支
step2: 复制修复修改
git cherry-pick 版本号
此处会创建一个新的的commit.
注:整个修复过程可以选择任意一个待修复的分支做修复,然后在其他分支上cherry-pick 该修复
4.8 创建 feature 分支–新功能开发
在软件开发中,总需要开发新功能,需要跑一些实验性的代码。所以开发一个新功能的时候,应该创建一个feature 分支,在上面进行开发,合并,删除。
4.9 多人协作
4.9.1 git remote
查看远程分支,-v 可以查看抓取和推送权限
$ git remote
origin
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push) # 可以看到说明有推送权限
4.9.2 git push 推送特定分支
在工程开发中需要确定哪些分支需要推送,哪些分支不需要、
git push origin master # 推送master分支
git push origin dev # 推送dev 分支
4.9.3 git pull
将远程代码库的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
协同开发时,git push 时(其他小伙伴已经push 操作过),报错:
$ git push origin dev
To github.com:michaelliao/learngit.git
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to ‘git@github.com:michaelliao/learngit.git’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.
解决:先用git pull 将远程仓库中的 dev 分支来回来,回自动在本地合并。很大的可能需要手动解决冲突,再push。
$ git pull
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt
Automatic merge failed; fix conflicts and then commit the result.
4.10 rebase
(使git 提交历史变成一条干净的时间线)
git push:error: failed to push some refs to
git pull+ git status:Your branch is ahead of ‘origin/master’ by 3 commits.
git rebase
4.4 git fetch
将远程代码库的最新内容拉到本地,在检查拉到本地的内容以后决定是否合并到工作区的分支中。 (git merge需要自己操作么)
廖雪峰老师博文学习笔记:https://www.liaoxuefeng.com/wiki/896043488029600/897884457270432
5.git push
git push origin HEAD:refs/for/master