通過pycharm使用git[圖文詳解]
通過pycharm初始化git環境
因為之前內網搭建了gitlab,參考此文章centos6搭建gitlab,所以可以通過gitlab很方便的建立一個project,我這邊從無到有,先從gitlab上checkout一個倉庫,這個專案之前已經從gitlab上建立了
checkout之後,可能pycharm識別不到,這時候這樣enable一下
在本地新建一個檔案,注意建立完是紅色的,表示還未新增,add之後是綠色的,做過修改是藍色的,忽略的檔案是灰色的
add之後變成綠色
也可以不用add,直接commit 整個目錄
之後選擇commit and push 就提交上去了
過程中會很明確的,這裡是從本地的master上傳到origin遠端的master上
push之後在gitlab上就可以看到了
分支操作
預設初始化完的工程會有一個master分支,我們一般在dev分支上開發,之後測試沒問題再合併到master上,現在就新建一個dev分支
在pycharm的右下角有git的相關分支資訊(前提是用了git),可以看到當前只有一個master分支(本地和origin)
從origin master checkout一個分支到本地命名為dev
新建分支後可以看到current分支變為dev
注意,這個dev實際是本地的,origin並沒有dev分支,不信到gitlab上看
通過右下角的checkout可以自如的在dev和master分支上切換
一般情況下就在本地的dev上開發即可,開發完就可以刪掉這個本地dev分支了,如果想在origin上也建立一個dev分支,需要commit一下
預設是把本地的dev傳給origin master上
修改一下,改成dev,注意那裡變成加號了+dev
ok,push之後到gitlab上看一眼吧。已經有了dev分支了
merge分支
因為平時開發在dev中,開發完畢後需要把它合併到master上
我們可以先到dev下更新一些東西,然後commit上去(origin dev),我的習慣是如果專案較小,可以不用origin dev,本地的dev只是一個臨時的分支,合併到master後就可以刪掉,不用上傳到origin dev.
之後checkout到本地的master上,dev新增的東西是看不到的,在master上去merge dev
merge之後,會發現,剛才dev更新的東西,master也更新了,之後提交到origin master,merge之後相當於已經commit過了,所以直接push,或者你修改點什麼,再重新commit and push
之後就可以看到origin master已經和本地的dev程式碼一致了
程式碼從gitlab下發到生產環境
原生代碼傳到gitlab後,可以直接從生產環境上git pull取回最新程式碼。
以下操作就是在伺服器上通過命令列來做了
git clone
第一次down程式碼
git clonehttp://iaasgit1.prod.bj1/iaas/SQLaudit.gitsqlaudit
會把程式碼down到sqlaudit目錄中
之後可以通過pull來更新
git pull和程式碼回滾
#如果之前已經正確clone後,可以通過git pull進行同步程式碼,可指定分支
git pull #是pull當前分支的最新程式碼
git pull origin dev #表示fetch origin 的dev分支到當前目錄,並與當前分支合併,相當於git fetch origin dev && git merge origin dev,取下來再合併
git pull origin dev:master #表示從遠端origin dev取下程式碼,並與本地的master分支合併(非當前分支)
git branch #檢視當前分支
git reset --hard 08b07fd34cba9c8a69f72da09d142409baf81cee #回滾程式碼到08b..這個版本(此版本可從gitlab獲取到)
git 儲存密碼
在git clone 之後git pull一次,會讓輸入使用者名稱和密碼,輸入後執行
git config credential.helper store
將會在當前專案的.git/config中新增一行
[credential]
helper = store
表示密碼已經被儲存了,下次就不需要輸入密碼了,適合使用指令碼同步時使用
git忽略
git忽略某種型別檔案的方式
在專案根目錄下建立 .gitignore,這個檔案也可以通過pycharm建立並支援自動補全功能
內容類似如下,然後把這個檔案也提交到git上,匹配到的程式碼將不受git管理
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
migrations/
.idea/
logs/
static/images/logo.png
web_sso/migrations/0001_initial.py