協同開發
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:

