git -GitHub-git常用命令(git安裝及命令使用)

git命令自動補(bǔ)全(MAC)

1.安裝Homebrew
一 瘸羡、安裝bash-completion

  1. $ brew install bash-completion

  2. '' if [ -f $(brew --prefix)/etc/bash_completion ]; then
    '' . $(brew --prefix)/etc/bash_completion
    '' fi
    添加到~/.bash_profile(如果沒有該文件,新建一個)

二臭蚁、拷貝文件最铁、設(shè)置路徑
訪問下面網(wǎng)站
{https://github.com/git/git.git}
找到”contrib/completion/”目錄下的git-completion.bash ,然后點擊編輯垮兑,拷貝其內(nèi)容冷尉,復(fù)制到文本文件,保存為 git-completion.bash 文件 然后將文件用命令拷貝到 ~/ 目錄下
三系枪、配置~/.bash_profile
~/.bash_profile文件(該目錄下如果沒有雀哨,新建一個)中添加下邊的內(nèi)容:
source ~/.git-completion.bash
執(zhí)行命令:source ~/.bash_profile

1. 安裝git

Ubuntu: sudo apt-get install git
Mac: brew install git

2. git 基本使用

? {版本的創(chuàng)建和回退}
? {工作區(qū)和暫存區(qū)}
? {管理修改}
? {撤銷修改}
? {對比文件不同}
? {刪除文件}

2.1 版本的創(chuàng)建和回退

  1. 初始化倉庫
    git
  2. 創(chuàng)建一個git版本庫
    git
  3. 創(chuàng)建版本
    git add 文件或目錄
    git commit -m '版本信息說明' (img)
  4. 查看版本記錄
    git log
    git log --pretty=oneline # 一行顯示
    **git reflog # 查看所有操作記錄
  5. 版本回退
    git reset --hard HEAD^ # ^表示回退到上一個版本
    等價git reset --hard HEAD~數(shù)字 # 數(shù)字對應(yīng)回退到第幾個版本
    或者git reset --hard 版本序列號 # 回退到指定版本

2.2 工作區(qū)和暫存區(qū)(img)

? 第一步:
git add把工作區(qū)文件的修改添加到暫存區(qū);
? 第二步:
git commit提交更改,把{暫存區(qū)}的所有內(nèi)容提交到{當(dāng)前分支}雾棺。

查看當(dāng)前工作樹的狀態(tài):
git status

2.3 管理修改

::git管理的文件的修改膊夹,它只會提交暫存區(qū)的修改來創(chuàng)建版本。::

2.4 撤銷修改

git checkout -- <文件> # 丟棄工作區(qū)的改動

git reset HEAD <文件>
可以把暫存區(qū)的修改撤銷掉捌浩,重新放回工作區(qū)放刨。
{小結(jié)}
? 場景1:::當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時尸饺,用命令git checkout -- file进统。::
? 場景2:::當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時浪听,想丟棄修改螟碎,分兩步,第一步用命令git reset HEAD file迹栓,就回到了場景1掉分,第二步按場景1操作。::
? 場景3:::已經(jīng)提交了不合適的修改到版本庫時克伊,想要撤銷本次提交酥郭,參考版本回退一節(jié)。::

2.5 對比文件不同

  • 對比工作區(qū)和版本中文件的不同
    git diff HEAD -- 文件名
    git checkout -- <文件> # 丟棄工作區(qū)的改動
  • 對比兩個版本之間某個文件的不同
    1)對比HEAD 和 HEAD^ 中code.txt的不同:
    git diff HEAD HEAD^ code.txt

2.6 刪除文件

(1) 我們把目錄中的code2.txt刪除答毫,git status查看工作樹的狀態(tài)褥民。
git status命令會立刻提示哪些文件被刪除了。(img)
(2) 現(xiàn)在你有兩個選擇洗搂,一是確實要從版本庫中刪除該文件消返,那就用命令git rm刪掉,并且git commit(img)
誤刪恢復(fù): git checkout -- code2.txt,這樣文件code2.txt又回來了
{小結(jié)}
::命令git rm用于刪除一個文件耘拇。如果一個文件已經(jīng)被提交到版本庫撵颊,那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心惫叛,你只能恢復(fù)文件到最新版本倡勇,你會丟失最近一次提交后你修改的內(nèi)容。::

3 分支管理

作用:
? 分支之間的互不影響這種特性可以增加團(tuán)隊合作的效率嘉涌。GIT分支的另外一個重要特性就是可以合并不同軟件倉庫(fork)的分支

3.1 創(chuàng)建與合并分支

(1) 一開始的時候妻熊,master分支是一條線,git用master指向最新的提交仑最,再用HEAD指向master扔役,就能確定當(dāng)前分支,以及當(dāng)前分支的提交點警医。
(img)
每次提交亿胸,master分支都會向前移動一步坯钦,這樣,隨著你不斷提交侈玄,master分支的線也越來越長婉刀。
(2) 當(dāng)我們創(chuàng)建新的分支,例如dev時序仙,git新建了一個指針叫dev突颊,指向master相同的提交,再把HEAD指向dev潘悼,就表示當(dāng)前分支在dev上洋丐。
(img)
git創(chuàng)建一個分支很快,因為除了增加一個dev指針挥等,改變HEAD的指向,工作區(qū)的文件都沒有任何變化堤尾。
(3) 不過肝劲,從現(xiàn)在開始,對工作區(qū)的修改和提交就是針對dev分支了郭宝,比如新提交一次后辞槐,dev指針往前移動一步,而master指針不變粘室。
(img)
(4) 假如我們在dev上的工作完成了榄檬,就可以把dev合并到master上。git怎么合并呢衔统?最簡單的方法鹿榜,就是直接把master指向dev的當(dāng)前提交,就完成了合并锦爵。
(img)
git合并分支也很快舱殿,就改改指針,工作區(qū)內(nèi)容也不變险掀。
(5) 合并完分支后沪袭,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉樟氢,刪掉后冈绊,我們就剩下了一條master分支。
(img)

命令:
查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建并切換分支:git branch -b <name>
合并某個分支到當(dāng)前分支:git merge <name>
刪除分支:git branch -d <name>

3.2 合并沖突解決

  • 當(dāng)兩個分支對同一個文件做了修改之后, 合并分支會沖突.
  • git status告訴我們沖突的文件埠啃。
  • git用<<<<<<<死宣,=======,>>>>>>>標(biāo)記出不同分支的內(nèi)容修改之后才能解決沖突, 解決之后再git commit 文件名提交
  • git log --graph --pretty=oneline 查看分支合并情況
  • 合并完成, 刪除分支

3.3 合并分支策略

{快速合并模式}: fast forward
分支上新建一個文件并提交到版本控制, 再合并分支則不能快速合并,git會提示輸入合并信息說明. 輸入之后, git 會合并內(nèi)容并自動創(chuàng)建一次新的提交.

禁用fast forward合并

git merge --no-ff -m '版本說明' 分支名
--no-ff參數(shù)霸妹,表示禁用Fast forward合并

3.4 bug分支

  1. 保存當(dāng)前工作現(xiàn)場,等修復(fù)bug之后繼續(xù)工作
    git stash
  2. 創(chuàng)建bug-001分支修復(fù)bug
  3. 確定要在哪個分支上修復(fù)bug, 假定要在master分支上修復(fù), 就從master創(chuàng)建臨時分支
  4. 現(xiàn)在修復(fù)bug代碼, 然后提交
  5. 修復(fù)完成之后, 切換master分支, 并完成合并, 最后刪除bug-001分支.
  6. git stash list 查看保存的工作現(xiàn)場, git stash pop 恢復(fù)工作現(xiàn)場
    {小結(jié)}
    ::修復(fù)bug時十电,我們會通過創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除鹃骂; 當(dāng)手頭工作沒有完成時台盯,先把工作現(xiàn)場git stash一下,然后去修復(fù)bug畏线,修復(fù)后静盅,再git stash pop,恢復(fù)工作現(xiàn)場寝殴。::

4 使用GitHub

4.1 創(chuàng)建倉庫

(1) 注冊github賬戶蒿叠,登錄后,點擊"New respository"蚣常。(img)
(2) 在新頁面中市咽,輸入項目的名稱,勾選'readme.md'抵蚊,點擊'create repository'施绎。(img)(img)

4.2 添加ssh賬戶

::如果某臺機(jī)器需要與github上的倉庫交互,那么就要把這臺機(jī)器的ssh公鑰添加到這個github賬戶上贞绳。::
(1) 在ubuntu的命令行中谷醉,回到用戶的主目錄下,編輯文件.gitconfig冈闭,修改某臺機(jī)器的git配置俱尼。(img)
(2) 使用如下命令生成ssh密鑰。(img)
ssh-keygen -t rsa -C '郵箱地址'
(3)進(jìn)入主目錄下的.ssh文件件萎攒,下面有兩個文件遇八。
公鑰為id_rsa.pub
私鑰為id_rsa
查看公鑰內(nèi)容,復(fù)制此內(nèi)容耍休。(img)
(4) 點擊賬戶頭像后的下拉三角押蚤,選擇'settings'。(img)
(5) 點擊'SSH and GPG keys'羹应,然后點擊'New SSH Key'添加ssh公鑰揽碘。(img)
(6) 到瀏覽器中粘貼ssh公鑰,點擊'Add SSH Key'园匹。
(img)

4.3 克隆項目

(1) 在瀏覽器中點擊進(jìn)入github首頁雳刺,再進(jìn)入項目倉庫的頁面。(img)
(2) 復(fù)制git地址裸违。
(img)
(3) 回到自己的電腦上掖桦,使用如下命令克隆項目。(img)
git clone 克隆地址
(4) 克隆出錯供汛,執(zhí)行如下命令解決枪汪。(img)
eval "$(ssh-agent -s)"
ssh-add
(5) 在命令行中繼續(xù)執(zhí)行上面的克隆倉庫命令涌穆。(img)

4.4 遠(yuǎn)程交互

  • 上傳分支
    (1) 項目克隆到本地之后,執(zhí)行git checkout -b smart創(chuàng)建分支smart.
    (2)創(chuàng)建一個code.py并提交一個版本
    (3)推送分支

    • git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
      例子: git push origin smart
  • 跟蹤遠(yuǎn)程分支

    • git branch --set-upstream-to=origin/遠(yuǎn)程分支名 本地分支名
      例子:(1) 執(zhí)行如下命令讓本地smart分支跟蹤遠(yuǎn)程smart分支雀久。
      git branch --set-upstream-to=origin/smart smart
  • 從遠(yuǎn)程分支上拉取代碼

    • git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
      例子: #(1) 把遠(yuǎn)程分支smart上的代碼下載并合并到本地所在分支
      git pull origin smart

5 項目中的Git

開發(fā)時的分支

一般在開發(fā)時宿稀,遠(yuǎn)程庫上會有兩個主要分支master分支和dev分支。
{master}:用戶保存發(fā)布的項目代碼赖捌。V1.0,V2.0
{dev}:保存開發(fā)過程中的代碼祝沸。

項目經(jīng)理

? 1) 項目經(jīng)理搭建項目的框架。
? 2) 搭建完項目框架之后越庇,把項目框架代碼放到服務(wù)器罩锐。

普通員工

? 1) 在自己的電腦上,生成ssh公鑰卤唉,然后把公鑰給項目經(jīng)理涩惑,項目經(jīng)理把它添加的服務(wù)器上面。
? 2) 項目經(jīng)理會給每個組員的項目代碼的地址桑驱,組員把代碼下載到自己的電腦上境氢。
? 3) 切換到dev分支,并創(chuàng)建新的分支碰纬。
? 4) 每天在自己的分支上開發(fā)代碼。
? 5) 每一個員工開發(fā)完自己的代碼之后问芬,都需要將自己的代碼合并到本地的dev分支悦析,然后將代碼發(fā)布遠(yuǎn)程的dev分支上。

?著作權(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)我...
    茶點故事閱讀 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
  • 正文 獨居荒郊野嶺守林人離奇死亡卡辰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年胞皱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九妈。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡朴恳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出允蚣,到底是詐尸還是另有隱情于颖,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布嚷兔,位于F島的核電站森渐,受9級特大地震影響做入,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜同衣,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一竟块、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耐齐,春花似錦浪秘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辕翰,卻和暖如春夺衍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喜命。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工沟沙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人壁榕。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓矛紫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親牌里。 傳聞我的和親對象是個殘疾皇子颊咬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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