閱讀目錄:
- Git 基礎(chǔ)概念
- 常用的命令
- 簡明指南
3.1 創(chuàng)建新倉庫
3.2 檢出倉庫
3.3 添加和提交
3.4 推送改動
3.5 分支管理
3.6 更新與合并
3.7 查看歷史
3.8 版本回退
3.9 刪除文件
3.10 遠(yuǎn)程倉庫命令總結(jié)
3.11 分支操作命令總結(jié)- 參考文獻(xiàn)
Git是Linus Benedict Torvalds更好的管理Linux系統(tǒng)而開發(fā)的一個“分布式版本控制工具”,對團(tuán)隊協(xié)作開發(fā)極其友好。高端大氣上檔次惕橙!
Git命令超級的多澡屡,所以本文只列舉工作中最常用的幾條命令:
0. GIt 基礎(chǔ)概念
工作區(qū)(Working Directory):簡單的說赌蔑,就是本地可以編輯的文件郭厌;
版本庫(Repository):工作區(qū)有一個隱藏目錄 .git
,這個不算工作區(qū),而是Git的版本庫;
暫存區(qū)(stage):git add
后還沒有提交到倉庫的中間狀態(tài)絮识;
此外還有Git為我們自動創(chuàng)建的第一個分支 master
,以及指向master
的一個指針叫 HEAD
哲银。
HEAD : 它指向你最后一次提交的結(jié)果鞍爱。
Git 模型圖:
1. 常用的命令
一周工作中,最常用的三種命令厢钧,總結(jié)成三個字:拉鳞尔、提、推早直。
即:拉取遠(yuǎn)程倉庫最新代碼寥假、提交代碼到倉庫、推送本地代碼到遠(yuǎn)程
拉取遠(yuǎn)程倉庫最新代碼
1. git fetch origin <branch-name> // 先從遠(yuǎn)程分支抓取最新代碼
2. git merge --no-ff -m '<merge message>' // 將抓下來的遠(yuǎn)程代碼和本地代碼合并
提交代碼到倉庫
將遠(yuǎn)程分支代碼拉取下來以后霞扬,和本地代碼合并糕韧,解決沖突后,提交自己的修改
1. git add <file-name> // 添加文件到暫存區(qū)
2. git commit -m '<commit message>' // 將暫存區(qū)提交到倉庫
推送本地代碼到遠(yuǎn)程
1. git push // 將本地代碼推送到遠(yuǎn)程倉庫
2. 簡明指南
2.1 創(chuàng)建新倉庫
創(chuàng)建新文件夾喻圃,打開萤彩,然后執(zhí)行
git init
以創(chuàng)建新的 git 倉庫。
2.2 檢出倉庫
克隆遠(yuǎn)端服務(wù)器上的倉庫:
git clone <respository-path>
2.3 添加和提交
你可以提出更改(把它們添加到暫存區(qū))级及,使用如下命令:
git add <filename> 或 git add --all
這是 git 基本工作流程的第一步乒疏;使用如下命令以實際提交改動:
git commit -m "代碼提交信息"
現(xiàn)在,你的改動已經(jīng)提交到了 HEAD
饮焦,但是還沒到你的遠(yuǎn)端倉庫怕吴。
2.4 推送改動
你的改動現(xiàn)在已經(jīng)在本地倉庫的 HEAD
中了。執(zhí)行如下命令以將這些改動提交到遠(yuǎn)端倉庫:
git push origin master
可以把 master 換成你想要推送的任何分支
2.5 分支管理
分支是用來將特性開發(fā)絕緣開來的县踢。在你創(chuàng)建倉庫的時候转绷,master 是“默認(rèn)的”分支。在其他分支上進(jìn)行開發(fā)硼啤,完成后再將它們合并到主分支上议经。
創(chuàng)建一個叫做“feature_x”的分支,并切換過去:
git checkout -b feature_x
切換回主分支:
git checkout master
再把新建的分支刪掉:
git branch -d feature_x
2.6 更新與合并
要更新你的本地倉庫至最新改動,執(zhí)行:
git pull
以在你的工作目錄中 獲壬飞觥(fetch) 并 合并(merge) 遠(yuǎn)端的改動咧织。
要合并其他分支到你的當(dāng)前分支(例如 master),執(zhí)行:
git merge <branch>
在這兩種情況下籍救,git 都會嘗試去自動合并改動习绢。遺憾的是,這可能并非每次都成功蝙昙,并可能出現(xiàn)沖突(conflicts)闪萄。 這時候就需要你修改這些文件來手動合并這些沖突(conflicts)。改完之后奇颠,你需要執(zhí)行如下命令以將它們標(biāo)記為合并成功:
git add <filename>
在合并改動之前败去,你可以使用如下命令預(yù)覽差異:
git diff <source_branch> <target_branch>
2.7 查看歷史
如果你想了解本地倉庫的歷史記錄,最簡單的命令就是使用:
git log
你可以添加一些參數(shù)來修改他的輸出烈拒,從而得到自己想要的結(jié)果圆裕。 只看某一個人的提交記錄:
git log --author=<name>
一個壓縮后的每一條提交記錄只占一行的輸出:
git log --pretty=oneline --abbrev-commit
或者你想通過 ASCII 藝術(shù)的樹形結(jié)構(gòu)來展示所有的分支, 每個分支都標(biāo)示了他的名字和標(biāo)簽:
git log --graph --oneline --decorate --all
看看哪些文件改變了:
git log --name-status
這些只是你可以使用的參數(shù)中很小的一部分。更多的信息缺菌,參考:
git log --help
最全的一條查看歷史命令:
git log --graph --pretty=oneline --abbrev-commit --decorate --all
2.8 版本回退
已經(jīng)添加到暫存區(qū)stage葫辐,恢復(fù)到工作區(qū):
git reset HEAD <file-name>
用版本庫里的版本替換工作區(qū)的版本代碼:
git checkout -- fileName
版本回退到上一個版本:
git reset --hard HEAD^
版本回退到某個提交:
git reset --hard <commit-id>
2.9 刪除文件
rm fileName //刪除本地,可直接git rm
git rm file Name //修改進(jìn)入緩存區(qū)
git commit -m '' //提交到版本庫
2.10 遠(yuǎn)程倉庫命令總結(jié)
經(jīng)過以上操作后搜锰,代碼已經(jīng)可以提交到本地的Git倉庫伴郁,下面介紹遠(yuǎn)程倉庫的一些操作
本地Git倉庫和GitHub倉庫之間的傳輸密鑰:
ssh-keygen -t rsa -C "youremail@example.com" //使本機(jī)可以往github上提交
把本地倉庫的內(nèi)容關(guān)聯(lián)到GitHub倉庫:
git remote add origin git@github.com:user-name/respository-name.git
本地庫的所有內(nèi)容推送到遠(yuǎn)程庫(初始化一個遠(yuǎn)程倉庫代碼):
git push -u origin master //當(dāng)前分支master所有代碼推送到遠(yuǎn)程進(jìn)行初始化
本地修改后提交到遠(yuǎn)程倉庫 (修改推送):
git push origin branch-name
從遠(yuǎn)程倉庫克隆一個倉庫到本地 :
git clone git@github.com:zhangyusir/hello.git
本地和遠(yuǎn)程同時創(chuàng)建分支產(chǎn)生關(guān)聯(lián):
git checkout -b branch-name origin/branch-name
將本地的分支和遠(yuǎn)程的分支關(guān)聯(lián)起來:
git branch --set-upstream-to branch-name origin-name
2.11 分支操作命令總結(jié)
查看本地分支:
git branch
創(chuàng)建分支并切換:
git checkout -b <branch-name>
切換分支:
git checkout<branch-name>
在當(dāng)前分支快速合并其他分支:
git merge branch-name
保留分支的提交歷史既禁止快速合并:
git merge --no-ff -m "commit message" branch-name
刪除分支:
git branch -d branch-name //強(qiáng)制刪除-D
將當(dāng)前分支的修改放到“儲藏”:
存儲 :git stash 恢復(fù) : git stash pop 列表 : git stash list