git是乙個用於幫助使用者實現版本控制的軟體
安裝:第一階段:在美國進修的日子
1.命令:
git init
git status 檢視當前資料夾的狀態 全部紅色
git add+檔名 對指定檔案進行版本控制 當前檔名變綠色
git add . 對指定資料夾下的所有檔案及子目錄進行版本控制 所有變綠
git commit -m '詳細的描述資訊' 建立提交記錄
git log 檢視所有提交記錄 當前版本之前上乙個版本的資訊,之後的就沒有
git reflog 提交版本的資訊更詳細一點
git reset --hard 提交記錄(版本號)
第二階段:在開發遊戲殺sx的功能,開發的過程中臨時需要修復已上線專案的bug問題或者新功能到來時
方式一:
git stash 全部暫存到神奇的地方(拿走)
git stash pop 從神奇的地方取回來再進行開發新的功能
git stash 只儲存那些紅色的檔案,表示那些沒有被add commit那些檔案
注意:當拿走這些檔案的時候,又在本地修改再加新東西的時候,在pop回來預設它要合併,這時候要產生衝突,解決衝突手動解決就行了。
git stash 將當前工作區所有修改過的內容儲存到「某個地方」,將工作區還原到當前版本未修改過的狀態
git stash list 檢視「某個地方」儲存的所有記錄
git stash clear 清空「某個地方」
git stash pop 將第乙個記錄從「某個地方」重新拿到工作區(可能有衝突)
git stash drop 編號,刪除指定編號的記錄
方式二:
git branch -m+分支 建立並切換到指定分支
git branch 檢視有那些分支
git branch dev 建立dev分支,表示在當前分支copy乙份**到dev分支
git branch bug 建立bug分支
git branch -d bug 刪除bug分支
git checkout dev 當前分支切換到dev分支
想合併的時候,首先要切換(跳)到自己想合併的分支比如說跳到master分支
git merge dev 把dev分支合併到master了 將指定分支合併到當前分支
如果兩個分支同時修改同一行**,這時候可能會發生衝突,手動解決。
如果**出現問題?
1.新建立乙個bug分支,然後進行bug處理,處理完畢之後,合併到master分支。
2.刪除bug分支
3.回到之前分支繼續開發
第三階段:在家開發寫了一段**存在.git檔案下也就是本地,我自己開的公司在香格里拉酒店租了一層樓。第二天去上班,又不想帶家裡邊的電腦。
需要乙個**託管的**:github/bitbucket/碼雲
自己搭建建立**託管的**:gitlab
在家操作:
1.在github上建立倉庫:倉庫名最好要和本地專案名稱一樣
2.git remote add origin (origin代表的就是建立github倉庫名的位址)
3.git push origin master 把本地master分支推到別名叫origin位址上 (看.git下叫config檔案有對應關係)
1)在倉庫上只有master分支
2)在家有兩分支git branch dev和master
3)我在家是在dev分支上開發的,所以我也要把dev分支也要推到github倉庫上去
4)在家在這裡最好切換到dev分支上再推,git checkout dev git push origin dev 這時候在github倉庫上就有兩分支了master和dev
在公司香格里拉大酒店操作:
1.轉殖git clone
2.在這裡要進入資料夾 cd 進去
3.在香格里拉本地再建立乙個dev分支 git branch dev
4.再切換到dev分支, git checkout dev 在這裡copy的是master分支的**
5.git pull origin dev 拉github倉庫的dev分支的**
如果在公司沒提交**到github倉庫上?1.py
到了家之後?git pull origin dev 發現沒有1.py,在家繼續開發2.py功能git push origin dev
第二天到了公司?git pull origin dev---->要出現merge合併記錄
在公司繼續開發,新增3.py, git push origin dev
回家拉** git fetch origin dev 但是1.py 3.py 沒拉下來,還沒在本地這時候在版本庫
git merge origin/dev 這時候本地就有1.py 2.py 3.py檔案
如果不想分叉:使用git fetch origin dev + git rebase origin/dev
git rebase的作用?
如果在公司寫的**忘記提交了,回家繼續開發新的功能,第二天到公司用git pull 或者 git fetch+git merge可能會出現分叉,如果想保持提交記錄的整潔,就用git fetch + git rebase 最終的作用就是保持提交記錄的整潔。
第四階段:多人協同開發
1.允許他人操作**
a.合作者模式
b.建立組織模式
2.分支
-master
-dev
-開發者1的分支
-開發者2的分支
3.規則
一起合併
合併間隔時間 1-2天合併一次
遇到的問題:別人在之前提交過,我再去提交要報錯,在這個時候就要先把別人提交的**拉下來,可能產生衝突。發生衝突自己修改,修改完再push提交上去
4.做codereview 從新看下**
a.組長
b.組長之下稍微可以的人
建立review分支:符合業務組長去審查,如果邏輯沒問題,用工具檢測只是跑效能,語法有沒有問題,pep8遵從
第五階段:給別人**貢獻力量
先fork
再pull request
其它:
a.不用反覆輸入使用者名稱密碼登入
git remote add origin https://使用者名稱:密碼@github.com/......./...git
ssh:
[email protected]:*****/*****.git
生成一對公鑰私鑰:
ssh-key命令:下有兩個ssh-keygen.exe ssh-keyscan.exe檔案
再執行ssh-keygen.exe 記住儲存的位置一直回車下去
找到公鑰放在github settings中即可
b.忽略檔案
vim .gitignore 中可以寫忽略的檔案,比如:*.sql,*.pyc
忽略檔案也要提交到倉庫中,方便其它人拉取下來再做提交操作
以斜槓「/」開頭表示目錄;
以星號「*」通配多個字元;
以問號「?」通配單個字元
以方括號「」包含單個字元的匹配列表;
以嘆號「!」表示不忽略(跟蹤)匹配到的檔案或目錄;
各種忽略
c.版本
git tag -a v1.0 -m '版本介紹' 本地建立tag
git show v1.0 檢視
git tags -n 檢視本地tag
git tag -l 'v1.4.2.*' 檢視本地tag,模糊匹配
git tag -d v1.0 刪除tag
git push origin :refs/tags/v0.2 更新遠端tag
git checkout v.1.1 切換tag
git fetch origin tag v1.2
git push origin --tags
git pull origin --tags
git clone -b v1.0 [email protected]:*****/*****.git
github準確搜尋開源專案
in:name django stars:>3000 forks:>...
in:readme django stars:>1000
in:description 微服務 language:python pushed:>2019-10-11
github協同開發
github協同開發 多人共同開發 大致有兩種方式 合作者組織 建立乙個組織,組織內的成員可以一起開發多個專案。有兩點 所有人不能在dev分支進行開發 如果兩人都在同一分支開發,在公司都提交,a晚上回家拉 下來想測試自己的一部分 發現測不了,因為dev還有b的未完成的可能有bug的 每個人單獨開乙個...
GitHub協同開發fork
github協同開發時,master建了乙個倉庫,然後其他人可以fork,這時可以在自己的賬號建立乙個副本,然後可以編輯自己的部分 為了方便在本地開發,可以使用github desktop,在本地修改倉庫之後和自己的github同步 點開後就可以看到本地的專案,進行修改就可以了,就會顯示出修改的檔案...
git操作遠端分支 協同開發
新增遠端倉庫 git remote add joe git git.com joe.le frontend.git 修改遠端倉庫位址 git remote set url joe git git.com joe.le frontend.git 刪除遠端倉庫 git remove joe 重新命名遠端...