協同開發
1、引子:假如三個人共同開發同一份代碼,每個人都各自安排了任務,當每個人都完成了一半的時候,提交不提交呢?
要提交,提交到dev嗎,都上傳了一半,這樣回家拿出來的代碼根本跑不起來。所以,
為每一個人創建一個分支,各自都在各自的分支上寫代碼,互不影響。
很短時間內大家暫時先合並一次,不然沖突太多了。但是這個分支不是dev,而是review分支,當老大看完沒問題之后再合並到dev分支。
協同開發的兩種方式:
方式一:創建項目合作者:
碼雲:
github:
方式二:創建組織,邀請成員
碼雲:
github:
創建完之后寫代碼
先創建了一個dev的分支 git branch dev git checkout dev git push origin dev 又創建了一個review的分支 git branch review gir checkout review git push origin review 創建自己的分支 git branch a git branch b git branch c git checkout c git pull origin review
假如現在有兩個人在進行開發
A創建了個文件 git branch A git checkout A touch a.py git add . add commit -m 'inital' git push origin A ls vim a.py #寫了一些內容 git add . add commit -m 'a功能開發完畢' git push origin A #現在兩人都寫完了,開始合並和review進行合並了 git checkout review git pull origin review #遠程的review拉下來 #合並發到review git merge A ls git status git push origin review #再次寫的時候 git pull origin review B創建了個文件 git branch B git checkout B touch b.py ls git add . add commit -m 'b功能開發完畢' git push origin B ls vim c.py #寫了一些內容 git add . add commit -m 'c開發完畢' git push origin B #現在兩人都寫完了,開始合並和review進行合並了 git checkout review #git pull origin review #如果先沒有,把遠程的review拉下來 #合並發到review git merge B ls git status git push origin review #這時候的review是最新的,那么A先提交了,完了B還得拉先來再合並一次 老大看了review分支,如果OK,可以放到dev分支進行測試,如果測試沒有問題了 才放到master分支。 master分支:線上的版本,永遠保證線上的版本,無論是回滾到哪都是能用的
GIT忽略文件
當你提交代碼的時候不要把所有的代碼都提交,尤其是你自己的隱藏文件,還有pycharm自動生成的隱藏文件,
兩個方式:
手動修改:在你add的時候不要把它添加進去就行了
創建.gitignore文件
碼雲:
github:
修改 :需要改一下配置文件
.gitignore vim . gitignore /idea touch a.log touch b.log 不要所有.log文件了,在編輯的時候寫上*.log
一些規則
以斜杠“/”開頭表示目錄; 以星號“*”通配多個字符; 以問號“?”通配單個字符 以方括號“[]”包含單個字符的匹配列表; 以嘆號“!”表示不忽略(跟蹤)匹配到的文件或目錄;
樣板:
# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ # Translations *.mo *.pot # Django stuff: *.log .static_storage/ .media/ local_settings.py # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/
GIT版本Tag
git tag -a V0.1 -m 'version0.1' 本地創建Tag git show v0.1 查看 git tags -n 查看本地Tag git tag -l 'v1.*' 查看本地Tag,模糊匹配 git tag -d v0.1 刪除Tag git push origin :refs/tags/v0.2 更新遠程tag git checkout v0.1 切換tag git fetch origin tag V1.2 git push origin 0.1 git pull origin 0.1 git clone -b v0.1 #操作示例 XXX MINGW64 ~/PycharmProjects/study (dev) $ git tag -a V0.1 -m 'version0.1' XXX MINGW64 ~/PycharmProjects/study (dev) $ git show v0.1 tag V0.1 Tagger: XXX <XXX@qq.com> Date: Sun Jul 1 00:13:25 2018 +0800 version0.1 commit cc915e200275d56f8630a35043e5c973c9521233 (HEAD -> dev, tag: V0.1) Merge: fb39758 8a7f6ea Author: XXX <XXX@qq.com> Date: Sat Jun 30 13:45:28 2018 +0800 merge 3.py:Merge branch 'dev' of https://gitee.com/XXX/study1 into dev XXX MINGW64 ~/PycharmProjects/study (dev) $ git tag -n V0.1 version0.1 XXX MINGW64 ~/PycharmProjects/study (dev) $ git tag -l 'V*' V0.1 $ git checkout V0.1 Note: checking out 'V0.1'. XXX MINGW64 ~/PycharmProjects/study ((V0.1)) $ git push origin V0.1 Counting objects: 5, done. Delta compression using up to 8 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 620 bytes | 620.00 KiB/s, done. Total 5 (delta 2), reused 0 (delta 0) remote: Powered by Gitee.com To https://gitee.com/XXX/study1.git * [new tag] V0.1 -> V0.1 XXX MINGW64 ~/PycharmProjects/study ((V0.1)) $ git pull origin V0.1 From https://gitee.com/XXX/study1 * tag V0.1 -> FETCH_HEAD Already up to date.
查看tag: