git操作清單

版本控制

git本質(zhì)是一個分布式版本控制系統(tǒng)厉颤,客戶端可以完成clone整個倉庫穴豫,然后進行提交和修改。

一逼友、了解github的工作流

倉庫

遠程倉庫(remote):遠程主倉庫github精肃;

本地倉庫(respository/history):.git文件夾里還包括git自動創(chuàng)建的master分支,并且將HEAD指針指向master分支帜乞。使用commit命令可以將暫存區(qū)中的文件添加到本地倉庫中肋杖;

暫存區(qū)(Index/Stage):在使用git管理項目文件的時候,其本地的項目文件會多出一個.git的文件夾挖函,將這個.git文件夾稱之為版本庫。其中.git文件夾中包含了兩個部分浊竟,一個是暫存區(qū)(Index或者Stage),顧名思義就是暫時存放文件的地方怨喘,通常使用add命令將工作區(qū)的文件添加到暫存區(qū)里;

工作區(qū):本地電腦存放項目文件的地方。

二振定、git add提交到暫存區(qū)必怜、出錯怎么辦?

提交流程為:

Workspace 工作區(qū)git statut 查看狀態(tài)git add .將所有修改加入暫存區(qū)git commit -m 'first commit'將代碼提交到本地倉庫git push將本地倉庫代碼更新到遠程倉庫Remote

場景1:

當(dāng)你改亂了暫存區(qū)某個文件的內(nèi)容后频,想直接丟棄暫存區(qū)的修改時

git checkout --<文件名>

場景2:

當(dāng)你不但改亂了暫存區(qū)某個文件的內(nèi)容梳庆,還添加到了本地倉庫時暖途,想丟棄修改

第一步 git reset HEAD file

第二步 git checkout <文件名>

三、git commit提交到本地倉庫膏执,出錯怎么辦驻售?

1.提交信息出錯

更改commit信息

git commit --amend -m ‘new message’

2.漏提交

commit時,遺漏提交部分更新更米,有兩種解決方案

方案一:再次commit欺栗,此時,git上會出現(xiàn)兩次commit

git commit -m ‘message’

方案二:遺漏文件提交到之前commit上征峦。–no-edit表示提交信息不會更改迟几,在git上僅為一次提交

git add missed-file (missed-file 為遺漏提交文件)

git commit --amend --no-edit

3.提交錯誤文件,回退到上一個commit版本栏笆,再commit

git reset

把暫存區(qū)的修改撤銷掉unstage类腮,重新放回工作區(qū)

git reset HEAD <文件名>

git版本回退,回到到特定的commit_id版本蛉加,可以通過git log查看提交歷史蚜枢,以便確認要回退到哪個版本commit之后的即為ID

git reset --hard commit_id

將版本庫回退1個版本,不僅僅是將本地版本庫的頭指針全部重置到指定版本七婴,也會重置暫存區(qū)祟偷,并且會將工作區(qū)代碼也回退到這個版本

git reset --hard HEAD~1

修改版本庫,保留暫存區(qū)打厘,保留工作區(qū)

將版本庫軟回退1個版本修肠,軟回退表示將本地版本庫的頭指針全部重置到指定版本,且將這次提交之后的所有變更都移動到暫存區(qū)户盯。

git reset --soft HEAD~1

git revert

撤銷某次操作嵌施,此次操作之前和之后的commit和history會保留,并且把這次撤銷作為一次最新的提交

撤銷前一次commit

git revert HEAD

撤銷前2次commit

git revert HEAD^

撤銷指定的版本莽鸭,撤銷也會作為一次提交進行保存吗伤。

git revert commit

git revert是提交一個新的版本,將需要revert的版本的內(nèi)容再方向修改回去硫眨,版本遞增足淆,不影響之前提交的內(nèi)容

git revert和git reset的區(qū)別

git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit礁阁。

在回滾這一操作上看巧号,效果差不多。但是在日后繼續(xù)merge以前的老版本時有區(qū)別姥闭。因為git revert是用一次逆向的commit“中和”之前的提交丹鸿,因此日后合并老的branch時,導(dǎo)致這部分改變不會再次出現(xiàn)棚品,但是git reset直接把某些commit在某個branch上刪除靠欢,因而和老的branch再次merge時廊敌,這些被回滾的commit應(yīng)該還會被引入。

git reset?是把HEAD向后移動了一下门怪,而git revert是HEAD繼續(xù)前進骡澈,只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容薪缆。

四秧廉、常用命令

1.初始化

新建本地倉庫git init

克隆git clone <url>

2.提交

提交所有g(shù)it add .

提交指定文件git add <file1> <file2>

提交文件夾中所有文件到暫存區(qū)git add [dir]

3.撤銷

刪除工作區(qū)文件,并且刪除暫存區(qū)文件記錄git rm <file1> <file2>

刪除暫存區(qū)文件拣帽,工作區(qū)還存在git rm --cached <file>

取消暫存區(qū)已暫存文件git reset HEAD <file

撤銷上一次對文件的操作git checkout --<file>

4.暫存

添加緩存棧:?git stash?;

查看緩存棧:?git stash list?;

推出緩存棧:?git stash pop?;

取出最新緩存:git stash apply;

取出特定緩存內(nèi)容:?git stash apply stash@{1}

5.更新文件

重命令文件疼电,并將已改文件提交暫存區(qū):git mv <file-origin> [file-rename>;

6.查看信息

查看當(dāng)前工作區(qū)所有文件的狀態(tài):?git status;

比較工作區(qū)中當(dāng)前文件和暫存區(qū)之間的差異,修改之后沒有暫存的內(nèi)容:`git diff``

查看提交歷史:git log减拭;參數(shù)-p展開每次提交的內(nèi)容差異蔽豺,用-2顯示最近的兩次更新,如git log -p -2;

7.提交文件到版本庫

將暫存區(qū)中的文件提交到本地倉庫中拧粪,即打上新版本:git commit -m “commit_info”;

將所有已經(jīng)使用git管理過的文件暫存后一并提交修陡,跳過add到暫存區(qū)的過程:git commit -a -m “commit_info”;

提交文件時,發(fā)現(xiàn)漏掉幾個文件可霎,或者注釋寫錯了魄鸦,可以撤銷上一次提交:git commit --amend;

8.標(biāo)簽

列出現(xiàn)在所有的標(biāo)簽:git tag;

使用特定的搜索模式列出符合條件的標(biāo)簽,例如只對1.4.2系列的版本感興趣:git tag -l "v1.4.2.*";

創(chuàng)建一個含附注類型的標(biāo)簽癣朗,需要加-a參數(shù)拾因,如git tag -a v1.4 -m "my version 1.4";

使用git show命令查看相應(yīng)標(biāo)簽的版本信息,并連同顯示打標(biāo)簽時的提交對象:git show v1.4;

如果有自己的私鑰旷余,可以使用GPG來簽署標(biāo)簽绢记,只需要在命令中使用-s參數(shù):git tag -s v1.5 -m "my signed 1.5 tag";

驗證已簽署的標(biāo)簽:git tag -v,如git tag -v v1.5;

創(chuàng)建一個輕量級標(biāo)簽的話正卧,就直接使用git tag命令即可蠢熄,連-a,-s以及-m選項都不需要,直接給出標(biāo)簽名字即可炉旷,如git tag v1.5;

將標(biāo)簽推送到遠程倉庫中:git push origin?签孔,如git push origin v1.5窘行;

將本地所有的標(biāo)簽全部推送到遠程倉庫中:git push origin --tags;

9.分支

創(chuàng)建本地分支?git branch 分支名

查看本地分支git branch

查看遠程分支?git branch -a

切換分支?git checkout 分支名?(一般修改未提交則無法切換骏啰,大小寫問題經(jīng)常會有,可強制切換?git checkout 分支名 -f?非必須慎用)

將本地分支推送到遠程分支?git push <遠程倉庫> <本地分支>:<遠程分支>

從遠程倉庫中抓取本地倉庫中沒有更新git fetch

拉取遠程分支倉庫git pull

推送本地分支到遠程分支git push

拉取遠程新分支?git checkout -b serverfix origin/serverfix

合并本地分支?git merge hotfix:(將 hotfix 分支合并到當(dāng)前分支)

合并遠程分支?git merge origin/serverfix

刪除本地分支?git branch -d hotfix:(刪除本地 hotfix 分支)

刪除遠程分支?git push origin --delete serverfix

移除遠程倉庫 git remote rm [remote-name]`

上傳新命名的本地分支:git push origin newName;

創(chuàng)建新分支:git branch branchName:(創(chuàng)建名為 branchName 的本地分支)

切換到新分支:git checkout branchName:(切換到 branchName 分支)

創(chuàng)建并切換分支:git checkout -b branchName:(相當(dāng)于以上兩條命令的合并)

查看本地分支:git branch

查看遠程倉庫所有分支:git branch -a

本地分支重命名:?git branch -m oldName newName

重命名遠程分支對應(yīng)的本地分支:git branch -m oldName newName

把修改后的本地分支與遠程分支關(guān)聯(lián):git branch --set-upstream-to origin/newName

修改遠程倉庫在本地的簡稱:git remote rename [old-name] [new-name]

查看遠程倉庫信息:git remote show origin

10.查詢配置信息

列出當(dāng)前配置:git config --list

列出repository配置:git config --local --list

列出全局配置:git config --global --list

列出系統(tǒng)配置:git config --system --list

11.配置用戶信息

配置用戶名:git config --global user.name "your name";

配置用戶郵箱:git config --global user.email "youremail@github.com";

12.其他配置

配置git命令輸出為彩色的:git config --global color.ui auto;

配置git使用的文本編輯器:git config --global core.editor vi;

六抽高、配置SSH

1. 查看是否生成了 SSH 公鑰

$ cd ~/.ssh

$ ls

id_rsa id_rsa.pub known_hosts

復(fù)制代碼其中 id_rsa 是私鑰,id_rsa.pub 是公鑰透绩。

2. 如果沒有那就開始生成翘骂,設(shè)置全局的user.name與user.email

git config --list // 查看是否設(shè)置了user.name與user.email壁熄,沒有的話,去設(shè)置

// 設(shè)置全局的user.name與user.email

git config --global user.name “XX”

git config --global user.email “XX”

3. 輸入?ssh-keygen?即可(或ssh-keygen -t rsa -C "email")

$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /Users/schacon/.ssh/id_rsa.

Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.

The key fingerprint is:

4. 生成之后獲取公鑰內(nèi)容碳竟,輸入?cat ~/.ssh/id_rsa.pub?即可草丧, 復(fù)制ssh-rsa一直到 .local這一整段內(nèi)容

$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU

GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3

Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA

t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En

mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx

NrRFi9wrf+M7Q== schacon@agadorlaptop.local

5. 打開 GitLab 或者 GitHub,點擊頭像莹桅,找到設(shè)置頁左側(cè)找到 SSH keys 按鈕并點擊昌执,輸入剛剛復(fù)制的公鑰即可

參考

潔癖者用 Git:pull --rebase 和 merge --no-ff

最常見的 Git 問題和操作清單匯總

git基本操作,一篇文章就夠了诈泼!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懂拾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子铐达,更是在濱河造成了極大的恐慌岖赋,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮孙,死亡現(xiàn)場離奇詭異唐断,居然都是意外死亡,警方通過查閱死者的電腦和手機杭抠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門脸甘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人偏灿,你說我怎么就攤上這事丹诀。” “怎么了菩混?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵忿墅,是天一觀的道長。 經(jīng)常有香客問我沮峡,道長疚脐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任邢疙,我火速辦了婚禮棍弄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疟游。我一直安慰自己呼畸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布颁虐。 她就那樣靜靜地躺著蛮原,像睡著了一般。 火紅的嫁衣襯著肌膚如雪另绩。 梳的紋絲不亂的頭發(fā)上儒陨,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天送漠,我揣著相機與錄音傀蚌,去河邊找鬼振诬。 笑死露乏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笛园。 我是一名探鬼主播隘击,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼研铆!你這毒婦竟也來了埋同?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蚜印,失蹤者是張志新(化名)和其女友劉穎莺禁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窄赋,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡哟冬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忆绰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浩峡。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖错敢,靈堂內(nèi)的尸體忽然破棺而出翰灾,到底是詐尸還是另有隱情,我是刑警寧澤稚茅,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布纸淮,位于F島的核電站,受9級特大地震影響亚享,放射性物質(zhì)發(fā)生泄漏咽块。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一欺税、第九天 我趴在偏房一處隱蔽的房頂上張望侈沪。 院中可真熱鬧,春花似錦晚凿、人聲如沸亭罪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽应役。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箩祥,已是汗流浹背呻惕。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滥比,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓做院,卻偏偏與公主長得像盲泛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子键耕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

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