參考:https://www.cnblogs.com/wupeiqi/p/7295372.htmlhtml
commit以前要先設置帳號 git config --global user.email 'xx@xxx.com' git config --global user.name 'xxx'
git init 初始化,表示即將對當前文件夾進行版本控制。 git status 查看Git當前狀態,如:那些文件被修改過、那些文件還未提交到版本庫等。 git add <文件> 將指定文件添加到版本庫的暫存狀態。 git add . 將所有文件添加到版本庫的暫存狀態。 git checkout <文件> 從暫存狀態拿回工做區 git commit -m '提交信息' 將暫存區的文件提交到版本庫的分支。 git commit -a -m '提交信息' ====> 至關於兩條命令: 1 git add . 2 git commit -m '提交信息' git log 查看提交記錄,即:歷史版本記錄 git reflog 查看版本歷史(更詳細) git reset --hard <版本號> 回到某一個版本
git stash 將工做區(紅色的文件)的文件暫存都"某個神奇的地方" git stash pop 將"某個神奇的地方"的第一個記錄拿到當前工做區 1 自動合併 2 出現衝突(須要手動解決衝突) git stash list 查看'某個神奇的地方'存儲的全部記錄 git stash clear 清空'某個神奇的地方' git stash apply <編號> 將指定編號的記錄拿回工做區 git stash drop <編號> 將指定編號的記錄從工做區刪除
注意:千萬不要在master分支上作開發python
git branch <分支名> 【在當前分支上】建立分支 git checkout <分支名> 切換分支 git branch -d <分支名> 刪除分支 git merge <分支名> 將分支合併到當前分支 會產生一條合併記錄 可能會產生衝突(若是兩個分支都修改了同一條記錄) git branch 查看分支
合併分支時的三種狀況?git
1 【直接合並】主分支有的功能, 子分支都有, 而且子分支開發了新功能 2 【會產生一條合併記錄】主分支有的【部分】功能, 子分支沒有, 而且子分支開發了新功能 3 【會產生衝突,須要本身手動去處理衝突】主分支和子分支修改了同一條代碼
代碼託管的網站: github Bitbucket 碼雲
本身建立代碼託管的網站: gitlabgithub
1 git remote add origin https://github.com/.... 將遠程倉庫添加個別名 # origin就是後面倉庫地址的別名 2 git push -u origin master 把master推到origin遠程倉庫 3 git clone <倉庫地址> 下載倉庫代碼 4 git pull origin dev 把分支dev拉取到本地(注意:先本身在本地建個分支dev) git fetch origin dev 將遠程分支拉倒本地版本庫 git merge origin/dev 將本地origin/dev合併到工做區 ===> 上面兩條命令至關於: git pull origin dev git rebase origin/dev (==> 至關於git merge origin/dev, 但這是去看合併歷史不會出現分叉) # 保持提交記錄的整潔
1 容許他人操做程序
- 合做者 (倉庫-->setting-->collaborators)
- 建立組織 (new organization)
2 分支
- master
- dev
- sch
- xdb
3 協同開發規則
一塊兒合併
合併時間:(通常1-2天)小功能開發好了合併一次
問題: git push origin dev 可能會報錯
解決辦法:先 git pull origin dev 拉取代碼
建立review分支web
問題: 怎麼在github上給別人代碼添加功能?sql
1 fork
2 添加完功能
3 pull requestjson
方式一: httpsvim
git remote add origin https://用戶名:密碼@github.com/......app
方式二: sshssh
1 先在本地電腦生成公鑰私鑰: ssh-keygen.ext
2 把公鑰到github上設置
3 經過git@github.com:...下載倉庫代碼
1 項目目錄下: vim .gitignore
# Byte-compiled / optimized / DLL files # pycharm .idea/ .DS_Store offline-script/ media/ # database migrations */migrations/*.py !*/migrations/__init__.py __pycache__/ *.py[cod] *$py.class # Django stuff: *.log local_settings.py *.sqlite3 # 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/ .pytest_cache/ # Translations *.mo *.pot # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # 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/ .dmypy.json dmypy.json
2 能夠在建立github倉庫時選上
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.10 切換tag git fetch origin tag V1.2 git push origin --tags git pull origin --tags git clone -b v0.1