一、了解Git和Github
1、什么是GIT?
Git是一個免費、開源的版本控制軟件
2、什么是版本控制系統?
版本控制是一種記錄一個或若干個文件內容變化,以便將來查閱特定版本修訂情況得系統。
- 系統具體功能
記錄文件的所有歷史變化
隨時可恢復到任何一個歷史狀態
多人協作開發或修改
錯誤恢復
版本控制的工具:
- svn
- git :軟件幫助使用者進行版本的管理
3、什么是Github
Github是全球最大的社交編程及代碼托管網站(https://github.com/)。
Github可以托管各種git庫,並提供一個web界面(用戶名.github.io/倉庫名)
4、 Github和Git是什么關系
Git是版本控制軟件
Github是項目代碼托管的平台,借助git來管理項目代碼
二、使用Git
一個創業者的故事:
項目背景:這個創業者想開發一個資源共享的系統
階段一:順利上線代碼
首先在你創建的項目的文件夾里面右鍵--->點擊Gir Bash Here---->吧git運行起來。
1、初始化:git init
2、如果你第一次使用git的時候,需要配置一下。如果你已經配置了,以后就不用配置了
3、吧當前的目錄以及及所有的子文件添加到git:git add . #所有的文件
git templates/index.html #具體添加的文件
4、真實的吧數據提交上線:git commit -m "描述信息"
5、查看狀態,看那個是否被修改過:git status
一定記得先add,后commit,add之后是沒有放到版本里的,只有commit的時候才有版本
6、查看有幾個版本:查看版本提交記錄 :git log
7、回滾到上一個版本:git reset --hard 版本號
沒一次生成的時候commit后面都會隨機的生成版本號
8、再跳回去(查看往后的版本號):git reflog
Git把管理的文件分為了兩個區域四個狀態。
add到暫存狀態的時候成綠色了,在commit的時候就沒有了
提供了這個回滾的功能。
階段二:當開發到一半的時候出現bug,修復bug
- 開發直播功能(預計一周開發完成)
當項目開發到一半的時候,出現bug了怎么辦?
解決思路:把我們的代碼變成沒開發之前的代碼,改完bug再提交。先把你當前開發的代碼拿走,找個地方先存起來。
那么怎么做呢?
方案一:修復bug:stash
stash用於將工作區發生變化的所有文件獲取臨時存儲在“某個地方”,將工作區還原當前版本未操作前的狀態;stash還可以將臨時存儲在“某個地方”的文件再次拿回到工作區。
特別的:執行 git stash pop 命令時,可能會遇到沖突,因為在緊急修復bug的代碼和通過stash存儲在“某個地方”的代碼會有重合部分,所以執行 git stash pop 時候就會出現沖突,有沖突解決沖突即可。
stash相關常用命令:
- git stash 將當前工作區所有修改過的內容存儲到“某個地方”,將工作區還原到當前版本未修改過的狀態
- git stash list 查看“某個地方”存儲的所有記錄
- git stash clear 清空“某個地方”
- git stash pop 將第一個記錄從“某個地方”重新拿到工作區(可能有沖突)
- git stash apply 編號, 將指定編號記錄從“某個地方”重新拿到工作區(可能有沖突)
- git stash drop 編號,刪除指定編號的記錄
當你新開發的代碼和你修復的代碼發生沖突的時候就手動解決沖突。
方案二:修復bug:利用分支(推薦)
默認會有一個master的分支。只做線上的版本,注意不要在master分支上修改,要修改的話就創建一個bug分支
1、創建一個修復bug的分支:git branch bug ,這個bug分支是在master分支上建的,相當於拷貝了一份
2、查看一共有幾個分支 : git branch
3、跳轉到bug分支:git checkout bug
4、跳轉到master分支:git branch master
5、創建一個修復bug的分支:git branch dev #只做開發的版本
現在就有三個分支了,每個分支都是不一樣的,bug修復完了,現在就要合並在master上了。
6、master和bug分支合並:git mare bug
7、刪除bug分支:git branch -d bug
8、繼續開發,切到dev:git branch dev
9、開發完畢,master和dev合並:git marge dev
切換之前一定記得把你的代碼提交一下。
合並的時候可能出現沖突,可能不出現,出現沖突了就得手動解決
修復Bug流程: git branch dev git checkout dev # 寫代碼 git add . git commit -m 'xxx' git checkout master git branch bug git chekcout bug # 修復bug git add . git commit -m '緊急修復bug' git checkout master git merge bug git branch -d bug git checkout dev # 繼續開發
階段三: 兩個地方辦公
雲端需要一個存放代碼的地方用Github
公共的
- Github是用來做代碼托管的
- 碼雲,做代碼托管
- csdn code ,做代碼托管
內部搭建:
- gitlab
1、登錄Github
在家里:
創建完成以后
就會有這樣一個地址,我們就可以用這個地址來提交
下面是正在往遠程推送,完了登錄上去就會有mester分支了。
當然我們也可以吧dev也推送過來,和上面一樣的方式。
在公司:
克隆
克隆的時候只是把master分支克隆了,其他的怎么拿呢?
用 git pull origin dev #拿到遠程的dev
創建目錄
家里: git add . git commit -m 'xx' git remote add origin https://github.com/WuPeiqi/greenlu.git git push origin master 公司: # 新公司第一次獲取代碼 方式一 git clone https://github.com/WuPeiqi/greenlu.git 方式二 git init git remote add origin https://github.com/WuPeiqi/greenlu.git git pull origin master 直接拿回來 方式三 git init git remote add origin https://github.com/WuPeiqi/greenlu.git 這的兩句相當於git pull origin master 這一句 git fetch origin master 拿到分支上了 git merge origin/master 合並在一起 # 日后 git pull origin master # 或者 git fetch origin master git merge origin/master # 如果你在本地修改問題,又add,又提交,在線上去拿的時候,或許會沖突
小應用:
vim a1.py #查看內容
cat a1.py #查看內容
當你在家的時候吧代碼上線了。到了公司以后吧線上的代碼拉回來。git pull origin dev
開始寫代碼了。
寫完之后add commit。。。這時候忘了往github上提交了
回到家的時候,那今天寫的代碼沒提交,怎么辦呢?回公司太晚了,在寫一遍浪費時間
,或許你還記着今天寫的代碼,就在這基礎上又開發了,
這下提高了警記了,就記得提交了 add 、commit 、git push origin dev
第二天又到公司了,那昨天的代碼怎么辦呢、、?是拉下來呢?還是推上去呢?
如果你推上去的話,沒有沖突還好,如果有沖突的話,那你把你的沖突都上線了,不讓你提交,所以我們要先拉下來
先去吧代碼拉下來,git pull origin dev 可能會有沖突,解決沖突。