Git協同開發操作 GitHub

2022-09-16 22:45:28 字數 4612 閱讀 8648

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 重新命名遠端...