Github(4)-远程操作
使用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
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
總結
以上是生活随笔為你收集整理的Github(4)-远程操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shiro学习笔记
- 下一篇: 机器学习知识总结系列-机器学习中的优化算