git命令續(xù)

1、克隆一份項目代碼

$ git clone git@github.com:akun/pm.git

2痴脾、有一個新項目是由你發(fā)起的颤介,你要將初始化的項目工程放到 Git 版本倉庫中

$ mkdir pm

$ cd pm

$ git init

$ touch README.md

$ git add README.md

$ git commit

3梳星、Git 是分布式的版本控制系統(tǒng)赞赖,所以剛才的操作滚朵,算是已經(jīng)在你本地版本控制起來了,為了推送本地倉庫到遠(yuǎn)程倉庫前域,就還得執(zhí)行:

$ git remote add origin git@github.com:akun/pm.git

$ git push -u origin master

4辕近、一般這個時候都會設(shè)置下~/.gitconfig或.git/config中的配置,最基本的就是用戶名和郵箱匿垄。

確認(rèn)當(dāng)前的 Git 配置信息:

$ git config --list

設(shè)置用戶名和郵箱:

$ git config user.name akun

$ git config user.email admin@example.com

5移宅、剛才的命令只是對.git/config生效,如果想全局生效椿疗,也就是~/.gitconfig漏峰,就得加上--global參數(shù),比如:

$ git config --global user.name akun

$ git config --global user.email admin@example.com

6届榄、開始一天的工作浅乔,首先更新工作目錄:

$ cd ~/projects/pm

$ git checkout develop? # 我想在 develop 分支上開始一天的工作

6.1、更新方式一:

$ git fetch --all? # 從遠(yuǎn)程倉庫獲取所有分支的代碼變更

$ git merge

6.2铝条、更新方式二:

$ git fetch --all

$ git rebase? # 默認(rèn)就衍合 develop 分支的代碼了

6.3靖苇、更新方式三:

$ git pull? # 懶得理解 fetch 和 merge 就直接 pull 吧

7、修改

7.1班缰、可能你寫了一個新的模塊贤壁,需要納入項目的版本控制:

$ git add tools.py

7.2、可能你發(fā)現(xiàn)某個模塊已經(jīng)陳舊了埠忘,不再使用了:

$ git rm utils.py

7.3脾拆、可能你發(fā)現(xiàn)一個模塊的命名不太合理,需要改名:

$ git mv model.py models.py

7.4莹妒、可能你要創(chuàng)建一個新的較大的模塊假丧,需要?dú)w檔為目錄的方式:

$ mkdir groups

$ touch groups/__init__.py

$ git add groups/__init__.py

7.5、可能你發(fā)現(xiàn)要寫的模塊代碼布局類似于舊的模塊动羽,直接復(fù)制個代碼模版:

$ cp users/tests.py groups/tests.py

$ git add groups/tests.py

8包帚、檢查

一個任務(wù)完成了,這個時候一般會將代碼更新到版本倉庫(分為本地版本倉庫和遠(yuǎn)程版本倉庫)运吓。

8.1渴邦、習(xí)慣上會先檢查下修改狀態(tài):

$ git status

8.2、看到一些 Git 狀態(tài)信息拘哨,確認(rèn)是修改了哪些文件谋梭,之后一般會自己 code review 一下代碼的改動,可能有的人會習(xí)慣直接用 Git 方式來查看:

$ git diff

8.3倦青、這里的 diff 只是查看其中“工作目錄”和“暫存區(qū)域”的區(qū)別瓮床。要查看“暫存區(qū)域”和“本地倉庫”的區(qū)別,可以用:

$ git diff --staged? # 或 git diff --cached

工作目錄:git clone 后獲得的一份本地的代碼,也包括新編輯的隘庄,尚未加入版本控制的代碼

暫存區(qū)域:git add 后暫存起來踢步,尚未 git commit 的代碼

本地倉庫:git commit 后正式被版本控制記錄起來的代碼

然后本地運(yùn)行下相關(guān)的單元測試,確認(rèn)是否有問題丑掺。一般來說這個時候获印,沒有什么特殊情況,就直接進(jìn)入“提交”甚至是“推送”階段了街州,然后結(jié)束一個工作日或工作周期兼丰,但難免會有些特殊情況出現(xiàn)。

9唆缴、取消修改

當(dāng)你 code review 完后鳍征,發(fā)現(xiàn)有些改動不滿意;或者運(yùn)行完單元測試面徽,發(fā)現(xiàn)有些測試用例沒通過蟆技,你可能會進(jìn)行取消這些修改的操作。

9.1斗忌、如果還沒 add质礼,那么可以:

$ git checkout -- main.py

9.2、為了避免剛好跟分支名重合织阳,所以加了兩個斜杠(雖然概率很低)眶蕉,如果已經(jīng) add 了,但還沒 commit唧躲,那么可以:

$ git reset HEAD main.py

9.3造挽、萬一剛提交完畢,也就是已經(jīng) commit 了弄痹,才發(fā)現(xiàn)代碼有問題饭入,比如:忘記把某個文件提交了,這個時候咋辦肛真?Git 好處是可以覆蓋上一次提交谐丢,那么可以:

$ git add tests.py

$ git commit --amend

上面還只是簡單的撤銷操作,Git 還能支持更高級的重寫歷史功能蚓让,想掌握高級技能的可以實踐下這個文檔:Git-工具-重寫歷史

10乾忱、解決沖突

有時候同別人合作寫一個模塊的代碼,會把對方代碼合并或衍合過來历极,比如:對方修復(fù)了某個缺陷窄瘟,你剛好也需要這個修復(fù);再比如:對方完成了某個特性趟卸,你也剛好需要用下這 個特性等等各種情況蹄葱。

10.1氏义、第一種是合并操作時候有沖突:

$ git fetch --all

$ git merge bugfix/remove_error

# 這個時候就提示你代碼沖突了,處理完沖突的代碼后

$ git diff? # code review 下代碼

$ git add remove.py

$ git commit

# 日志中就多了一條合并操作的日志了

10.2图云、另一種是衍合操作時有沖突:

$ git fetch --all

$ git rebase bugfix/remove_error

# 這個時候就提示你代碼沖突了惯悠,處理完沖突的代碼后

$ git diff? # code review 下代碼

$ git rebase --continue? # 有時候會 git rebase --skip

# 直到不用再 rebase 為止

這里也提下直接合并本地分支,有時候你創(chuàng)建的分支只是自己用用琼稻,沒有共享給別人,因為本地已經(jīng)有了這份分支代碼了饶囚,那么就省去gitfetch操作帕翻,類似上述方式合并或衍合代碼就行。

11萝风、刪除分支

如果確認(rèn)工作完畢的分支不再需要了嘀掸,那就記得及時清理掉。

11.1规惰、刪除遠(yuǎn)程分支:

$ git push origin :features/batch_remove

11.2睬塌、刪除本地分支:

$ git branch -d features/batch_remove

11.3、一段時間后歇万,一定有一堆別人的分支揩晴,然后你gitfetch下來了,這樣就出現(xiàn)在本地的分支清單中贪磺,但遠(yuǎn)程版本庫中已經(jīng)刪除了硫兰,如果想本地分支清單干凈些,可以在gitfetch時候這樣執(zhí)行:

$ git fetch --all -p

12寒锚、沖突情景

12.1劫映、有時候合并或衍合代碼,但本地有修改了一半的代碼沒有提交刹前,可以先暫存起來:

$ git stash

# 合并或衍合完畢代碼后

$ git stash pop? # 恢復(fù)剛才修改了一半的代碼

12.2泳赋、如果需要保留本地修改,直接pull網(wǎng)絡(luò)代碼(不commit)

git stash -> git pull -> git stash pop -> 解決沖突 -> 繼續(xù)編輯 ->(如果有warning提示未解決沖突,則git add -u ) -> git commit (需要提交的話) -> git push

12.3喇喉、如果需要直接提交Commit

git commit -> git pull -> 解決沖突 -> (如果有warning提示未解決沖突,則git add -u )-> git commit -> git push

參考鏈接

Q祖今、git倉庫刪除所有提交歷史記錄,成為一個干凈的新倉庫

1.Checkout (git checkout --orphan latest_branch)

2. Add all the files (git add -A)

3. Commit the changes (git commit -am "commit message")

4. Delete the branch (git branch -D master)

5.Rename the current branch to master (git branch -m master)

6.Finally, force update your repository (git push -f origin master)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拣技,一起剝皮案震驚了整個濱河市衅鹿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌过咬,老刑警劉巖大渤,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掸绞,居然都是意外死亡泵三,警方通過查閱死者的電腦和手機(jī)耕捞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烫幕,“玉大人俺抽,你說我怎么就攤上這事〗下” “怎么了磷斧?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捷犹。 經(jīng)常有香客問我弛饭,道長,這世上最難降的妖魔是什么萍歉? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任侣颂,我火速辦了婚禮,結(jié)果婚禮上枪孩,老公的妹妹穿的比我還像新娘憔晒。我一直安慰自己,他們只是感情好蔑舞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布拒担。 她就那樣靜靜地躺著,像睡著了一般攻询。 火紅的嫁衣襯著肌膚如雪澎蛛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天蜕窿,我揣著相機(jī)與錄音谋逻,去河邊找鬼。 笑死桐经,一個胖子當(dāng)著我的面吹牛毁兆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阴挣,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼气堕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了畔咧?” 一聲冷哼從身側(cè)響起茎芭,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎誓沸,沒想到半個月后梅桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拜隧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年宿百,在試婚紗的時候發(fā)現(xiàn)自己被綠了趁仙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡垦页,死狀恐怖雀费,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痊焊,我是刑警寧澤盏袄,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站薄啥,受9級特大地震影響辕羽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜罪佳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一逛漫、第九天 我趴在偏房一處隱蔽的房頂上張望黑低。 院中可真熱鬧赘艳,春花似錦、人聲如沸克握。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菩暗。三九已至掰曾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間停团,已是汗流浹背旷坦。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佑稠,地道東北人秒梅。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像舌胶,于是被迫代替她去往敵國和親捆蜀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,486評論 1 26
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評論 9 163
  • 昨天天朗氣清幔嫂,惠風(fēng)和暢辆它,是個出游的好日子。于是小女子與兩舍友去長隆水上樂園一游履恩,此游可謂是受益良多啊锰茉。 其一,重溫...
    小妞辣閱讀 136評論 0 0
  • 只要不是發(fā)生在自己身上的事情咐刨,自己總能想的很透徹,為別人解答疑惑時扬霜,也不會糾結(jié)定鸟,并且總能一語驚醒夢中人,可是著瓶,為什...
    昭月予娉閱讀 85評論 0 0
  • 女靜閱讀 354評論 0 0