開發(fā)中如何使用git來管理代碼,以及如何與pycharm 結(jié)合使用

在開發(fā)中舰蟆,很多公司一般都會用到git趣惠、svn狸棍、cvs等方式來管理代碼。使用平臺有很多味悄,比如github草戈、gitlab、碼云侍瑟、自己的服務(wù)器等唐片。

介紹

代碼版本管理工具

CVS代碼版本管理工具

  • 解決了多個人協(xié)同開發(fā),代碼合并的問題丢习,從服務(wù)器更新代碼完成合并牵触,降低了排查問題的難度,每次提交都有記錄咐低;
  • 新的問題:代碼在服務(wù)器上同時存儲了多個版本(完整)揽思,重復(fù)量過大,對服務(wù)器存儲空間要求大见擦。

SVN代碼版本管理工具

  • 在實現(xiàn)CVS所有功能的基礎(chǔ)上钉汗,實現(xiàn)了差異化管理,讓服務(wù)的儲存空間不再出現(xiàn)重復(fù)的代碼鲤屡,極大的節(jié)省了服務(wù)器空間损痰。

git代碼版本管理工具
全稱:分布式版本控制系統(tǒng)
git支持分布式部署酒来,可以有效卢未、高速的處理從很小到非常大的項目版本管理。分布式相比于集中式的最大區(qū)別在于開發(fā)者可以提交到本地堰汉,每個開發(fā)者通過克铝缮纭(git clone),在本地機器上拷貝一個完整的Git倉庫翘鸭。

  • 相對于傳統(tǒng)的SVN管理工具滴铅,去服務(wù)器,沒有服務(wù)器的概念就乓,每個開發(fā)人員的本地倉庫既是開發(fā)端也是服務(wù)器汉匙,可以和另一個人完成代碼同步和版本管理
  • 基于網(wǎng)絡(luò),突破了局域網(wǎng)的顯示生蚁,可以讓開發(fā)人員隨時隨地在任何時間辦公噩翠,可以通過廣域網(wǎng)完成代碼的同步和版本管理
  • 基于本地,在沒有網(wǎng)絡(luò)的情況下守伸,可以讓代碼在自己的本地倉庫完成代碼的同步和版本的管理绎秒,將不同功能不同批次的代碼管理在不同的代碼

代碼版本管理平臺

  • github:有私有和公共倉庫,私有倉庫一般收費
  • gitlab:可以免費搭建私有倉庫尼摹,并且可以部署在自己的服務(wù)器
  • 碼云:中國社區(qū)推出的基于git的代碼托管平臺

具體操作见芹。

1剂娄、注冊代碼管理平臺賬號

??????注冊github:
官網(wǎng):https://github.com/
??????注冊碼云:
官網(wǎng):https://gitee.com/
(以下操作一碼云為例)

2、安裝git

官方下載地址:https://git-scm.com/downloads
網(wǎng)盤鏈接:https://pan.baidu.com/s/1iKxNx_K6k5wH8Hy7DeFIoA 提取碼:7xp3
安裝步驟比較簡單玄呛,一路下一步阅懦。注意地方:安裝目錄
測試是否安裝好:右鍵可以看到如下圖所示

git安裝好后

3、配置環(huán)境變量

找到安裝路徑:D:/Git/usr/bin
并在環(huán)境變量里面添加路徑:
我的電腦 --> 右鍵屬性 --> 高級環(huán)境設(shè)置 --> 環(huán)境變量 --> 系統(tǒng)變量 --> Path里面添加

4徘铝、配置遠程倉庫開發(fā)人員

在桌面打開終端輸入一下代碼:(三次回車)

ssh-keygen -t rsa -C "碼云賬號"

解釋:
????ssh-keygen:生成秘鑰文件的命令
????-t rsa:指定秘鑰的算法
????-C :添加開發(fā)人員身份
如果報不是內(nèi)部或外部命令耳胎,說明環(huán)境變量添加有問題。

配置遠程長褲開發(fā)人員

(此時惕它,C:\Users\Administrator\下面會生成一個.ssh的文件怕午,里面是私鑰和密鑰,如下如所示淹魄。)


公私鑰列表

????然后打開C:\Users\Administrator.ssh\id_rsa.pub,復(fù)制其中的內(nèi)容郁惜,添加到遠程倉庫的SSH秘鑰列表

步驟
1.右上角下拉箭頭,找到設(shè)置甲锡,點擊進入

設(shè)置

2.左列在安全設(shè)置下面點擊SSH公鑰
ssh公鑰

3.然后添加標題兆蕉,添加公鑰,點擊確定即可
添加公鑰

如果是注冊的是github缤沦,前面步驟基本一樣虎韵,這里步驟在github網(wǎng)站,右上角-->setting --->New SSH key-->SSH keys->添加公鑰

5缸废、git本地和遠程倉庫的交互

1.本地創(chuàng)建一個文件夾:作為本地倉庫

2.進入文件夾包蓝,鼠標右擊,使用git bash here 打開企量,使用git工具管理文件夾

3.配置git用戶养晋,執(zhí)行命令配置

    git config --global user.name "起一個名字"
    git config --global user.email "碼云賬戶"

解釋:
?????????--global參數(shù),用例參數(shù)梁钾,表示這臺機器所有的git倉庫都會使用這個配置

#查看自己的配置信息
git config --list

4.初始化倉庫

  git init

執(zhí)行命令,初始化這個文件夾逊抡,轉(zhuǎn)換為本地倉庫姆泻。此時出現(xiàn)了一個隱藏文件.git,跟蹤管理版本庫的文件冒嫡,不要手動修改這個目錄里面的文件拇勃。

HTTP方式

5.將遠程倉庫關(guān)聯(lián)到本地倉庫,執(zhí)行命令,這里采用HTTP方式關(guān)聯(lián)孝凌。

  git remote add origin https:地址

此地址是遠程倉庫的地址方咆,如下圖:

https關(guān)聯(lián)地址

同步倉庫信息
就是將平臺上的文件拉取到本地文件夾內(nèi),實現(xiàn)平臺與本地同步蟀架,執(zhí)行如下代碼:

  git pull --rebase origin master

6.現(xiàn)在來實現(xiàn)一下本地開發(fā)后將代碼推送到遠程平臺
在本地倉庫添加一個文件demo1.txt瓣赂,輸入一些內(nèi)容榆骚,保存;
此時在Git Base Here開發(fā)工具中輸入一下命令煌集,可以查看版本管理狀態(tài)

 git status

7.將文件添加到暫存區(qū)

git add demo1.txt

8.將暫存區(qū)的新文件妓肢,提交到本地倉庫

git commit demo1.txt -m "基礎(chǔ)代碼1"

9.將本地倉庫中的數(shù)據(jù)推送遠程倉庫

    git push origin master:master

解釋:git push <遠程主機名><本地分支名>:<遠程分支名>

【注意】在要求輸入用戶名和密碼的時候,輸入錯誤可能會導(dǎo)致下次不再彈出輸入用戶名和密碼的窗口苫纤,遇到此情況課通過以下代碼解決:

  git config --system --unset credential.helper

解釋:

  • 暫存區(qū):臨時存儲代碼的緩沖區(qū)域碉钠,暫存區(qū)的存在,是為例將非常頻繁的小改動統(tǒng)一存儲起來卷拘,等修改的代碼成型可以提交了喊废,再將暫存區(qū)的代碼提交到本地倉庫
  • 本地倉庫:接受代碼版本管理的一個倉庫,方便開發(fā)人員在沒有網(wǎng)絡(luò)的情況下提交的數(shù)據(jù)依然接受版本管理
  • 遠程倉庫:一個多人協(xié)同開發(fā)的公共倉庫栗弟,保持24小時在線污筷,在最大程度上讓所有開發(fā)人員在聯(lián)網(wǎng)的第一時間同步到最新代碼

SSH方式

采用SSH方式關(guān)聯(lián),將遠程倉庫關(guān)聯(lián)到本地倉庫
步驟:
1、在本地新建一個目錄
【注】由于上面配置git用戶時横腿,采用了--global颓屑,所以這里就不要再配置了。

2耿焊、初始化倉庫

 git init

3揪惦、拉取遠程倉庫完整項目

git clone 遠程倉庫鏈接地址

這次鏈接地址需要選擇SSH,如下如:


SSH

4罗侯、拉取遠程項目后器腋,在本地倉庫新建demo2.txt

5、通過如下代碼查看版本管理狀態(tài)

  git status

6钩杰、將文件添加到暫存區(qū)

 git add demo2.txt

7纫塌、將暫存區(qū)的新文件,提交到本地倉庫

  git commit demo2.txt -m "新增demo2"

8讲弄、將本地倉庫中的數(shù)據(jù)推送遠程倉庫

  git push 

此時只需要這一行代碼即可措左,也不需要輸入用戶名和密碼

分支創(chuàng)建即運用
  • 創(chuàng)建分支
  git  branch  分之名
  • 切換分支
  git  checkout  分支名
  • 查看分支
  git  branch
  • 在主分之下合并其他分支下的文件到主分支下
  ?git  merge  分支名
  • 刪除分支
  ?git  branch  -d  dev

案例:

1、創(chuàng)建dev分支
    git branch dev
2避除、切換到dev分支下怎披,并創(chuàng)建新文件或修改demo3.txt
    git checkout dev
3、查看狀態(tài)
    git status
4瓶摆、提交暫存區(qū)
    git add demo3.txt
4凉逛、提交本地倉庫
    git commit demo3.txt
5、切換回主分之
    git checkout master
6群井、合并dev分支到master分支
    git merge dev
7状飞、在主分之下推送到遠程倉庫
    git push
8、刪除不需要的分支
    git branch -d dev
9、強制刪除dev分支
    git branch -D dev 

【注意】在分支中添加修改文檔后诬辈,需要添加到暫存區(qū)提交到到本地倉庫酵使,才會出現(xiàn)主分之和其他分支內(nèi)部文件的差異。

版本回滾

在開發(fā)過程中自晰,出現(xiàn)了代碼問題凝化,新提交的代碼導(dǎo)致項目崩潰,git可以讓代碼回滾到上一個正常的狀態(tài)酬荞。

  • 差異排查
git diff

解釋:
如:-1,2 +1,4
修改前:從第一行開始搓劫,有兩行發(fā)生變動
修改后:從第一行開始,有四行添加

  • 查看提交歷史日志
git reflog/log 

reflog :簡要信息
log : 詳細信息

  • 版本回滾
    將先做版本回滾到9473dc93 這個版本
git reset --hard 9473dc93 

回退到此版本后混巧,在此版本之后做的任何操作都會失效

版本沖突

什么是版本沖突
本地倉庫有待提交的數(shù)據(jù)枪向,和服務(wù)器上的數(shù)據(jù)不一致。

例如:A和B同時開發(fā)咧党,都pull遠程倉庫的代碼秘蛔,A修改了demo1.py,提交并推送成功傍衡,B也修改了demo1.py深员,提交并推送,發(fā)現(xiàn)失敗蛙埂,產(chǎn)生了版本沖突倦畅,原因是推送前沒有更新

原則:先更新,再提交绣的,推送前先git pull獲取最新代碼叠赐,在合并,最后push提交

一旦發(fā)生沖突屡江,需要手工合并芭概,git用<<<<<<,=======,>>>>>>標記出不同分支的內(nèi)容,我們修改后再提交本地數(shù)據(jù)惩嘉。

制造沖突
git branch dev
git checkout dev
#在dev分支下修改1.txt 添加一行this is branch dev change
git add 1.txt
git commit 1.txt -m "branch dev change"
git checkout master
#在master分支下修改1.txt 添加一行this is master change
git add 1.txt
git commit 1.txt -m "master change"
git merge dev
此時查看1.txt罢洲,內(nèi)容如下
this is first demo
<<<<<<< HEAD
this is master change
=======
this is branch dev change
>>>>>>> dev

沖突處理:
通過手動修改哪些留哪些去除

<1.txt修改后內(nèi)容為>

this is first demo
this is master change
this is branch dev change

然后依次執(zhí)行如下代碼

git add 1.txt
git commit 1.txt -m "finall change"
git checkout master
git push origin master:master

【注意】以上合并發(fā)生沖突后,狀態(tài)一直處于合并狀態(tài)文黎,在添加到本地倉庫后奏路,需要竟分支切換到推送文件夾下,才能進行推送臊诊。

Pycharm使用git

打開pycharm,選擇環(huán)境變量:
file-->setting-->version control-->git-->Path to git
填入:c:\program files\git\cmd\git.exe

1斜脂、菜單欄vcs-->get from viersion control-->version control:git-->URL:碼云clone地址-->選擇一個本地倉庫

2抓艳、新建demo4.py-->寫入代碼,右擊-->git-->add-->commit file-->填寫描述帚戳,然后commit-->repository-->push

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玷或,一起剝皮案震驚了整個濱河市儡首,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偏友,老刑警劉巖蔬胯,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異位他,居然都是意外死亡氛濒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門鹅髓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舞竿,“玉大人,你說我怎么就攤上這事窿冯∑保” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵醒串,是天一觀的道長执桌。 經(jīng)常有香客問我,道長芜赌,這世上最難降的妖魔是什么仰挣? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮较鼓,結(jié)果婚禮上椎木,老公的妹妹穿的比我還像新娘。我一直安慰自己博烂,他們只是感情好香椎,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禽篱,像睡著了一般畜伐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躺率,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天玛界,我揣著相機與錄音,去河邊找鬼悼吱。 笑死慎框,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的后添。 我是一名探鬼主播笨枯,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馅精?” 一聲冷哼從身側(cè)響起严嗜,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洲敢,沒想到半個月后漫玄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡压彭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年睦优,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哮塞。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡刨秆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忆畅,到底是詐尸還是另有隱情衡未,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布家凯,位于F島的核電站缓醋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏绊诲。R本人自食惡果不足惜送粱,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掂之。 院中可真熱鬧抗俄,春花似錦、人聲如沸世舰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跟压。三九已至胰蝠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間震蒋,已是汗流浹背茸塞。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留查剖,地道東北人钾虐。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像笋庄,于是被迫代替她去往敵國和親效扫。 傳聞我的和親對象是個殘疾皇子效览,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344