git的基本操作

############ssh key及 配置信息#############

設(shè)置Git的user name和email:

$ git config --global user.name ""

$ git config --global user.email ""

生成SSH密鑰過程:

1.查看是否已經(jīng)有了ssh密鑰:cd ~/.ssh

如果沒有密鑰則不會有此文件夾惜论,有則備份刪除

2.生存密鑰:$ ssh-keygen -t rsa -C “郵箱”

按3個回車析恢,密碼為空

.在github上添加ssh密鑰嘀韧,這要添加的是“id_rsa.pub”里面的公鑰

#############本地初始化一個目錄為代碼倉庫##################

git init? 初始化倉庫

1惋鸥、創(chuàng)建一個新目錄作為代碼倉庫

2酗洒、執(zhí)行 git init;

? 執(zhí)行之后會發(fā)現(xiàn)多了一個.git目錄

? 這就說明倉庫已經(jīng)初始完成

3裁眯、在github上創(chuàng)建一個新的代碼倉庫(創(chuàng)建對應(yīng)的代碼倉庫)

4页响、git remote add origin git鏈接?

5、正常提交代碼即可鸟缕。?

########克隆一個項目#######

https? 速度慢晶框、需要輸入賬號和密碼/ ssh 會被公司限制 兩種協(xié)議

要克隆一個倉庫,首先必須知道倉庫的地址懂从,后使用git clone命令克隆然授段。

git clone git鏈接

Git支持多種協(xié)議,包括https番甩,但通過ssh支持的原生git協(xié)議速度最快侵贵。

git clone git https鏈接

or

git clone git鏈接

通常推薦大家直接git clone 一個項目的方式來創(chuàng)建本地的代碼倉庫!

演示一下在github上如何創(chuàng)建一個代碼倉庫T笛ΑG嫌卡睦!

###############創(chuàng)建分支################

Git鼓勵大量使用分支:

創(chuàng)建分支:git branch <name> (默認(rèn)當(dāng)前所在分支為基礎(chǔ)分支,可以指定其它分支)

切換分支:git checkout <name>

創(chuàng)建+切換分支:git checkout -b <name> <基礎(chǔ)分支名稱>(origin/master)

提交剛創(chuàng)建的分支:git push origin branch-name

更新分支:Git pull origin branchname? or Git fetch origin branchname? git merge --no-ff 目標(biāo)分支

合并某分支到當(dāng)前分支:git merge --no-ff <branch1分支名稱>(把分支branch1合并到當(dāng)前分支上)

git merege (fast forward? and --no-ff )

通常漱抓,合并分支時表锻,如果可能,Git會用Fast forward模式乞娄,但這種模式下瞬逊,刪除分支后,會丟掉分支信息仪或。

如果要強制禁用Fast forward模式确镊,Git就會在merge時生成一個新的commit,這樣范删,從分支歷史上就可以看出分支信息

請注意--no-ff參數(shù)蕾域,表示禁用Fast forward請注意--no-ff參數(shù),表示禁用Fast forward

git merge --no-ff -m "merge with no-ff" dev

因為本次合并要創(chuàng)建一個新的commit到旦,所以加上-m參數(shù)旨巷,把commit描述寫進去

查看本地分支:git branch? or git branch -l

查看遠程分支:git branch -r

查看所有分支(本地+遠程):git branch -a

帶*的分支為當(dāng)前工作的分支

刪除本地分支:

git branch -d branchnamne

or

git branch -D? branchname 強制刪除

刪除遠程分支:

Git push origin --delete branchname (刪除遠端分支branchname)

Git push origin :branchname (直接刪除遠端分支branchname)

獲取遠程倉庫的分支(本地沒有的分支)

git pull origin $branch:$branch

實例:git pull? origin? branchname:branchname

############git commit####################

git commit -m''? 只會提交已經(jīng)git add過的文件(包括新增、修改厢绝、刪除等所有修改操作)

git commit -a -m'' 會提交除新增未add的文件之外的所有修改操作

#############git diff ####################

Git diff? filename? 顯示本地文件修改的內(nèi)容同版本庫的差別

Git diff? branchone? branchtwo? 對比兩個branch不同之處

Git diff? tagone? tagtwo? ? 對比兩個tag 不同之處

########刪除文件###########

在本地直接刪除文件

1契沫、rm? file? (工作區(qū)中文件刪除)

2带猴、git add file (文件刪除的狀態(tài)添加到暫存區(qū)中)

3昔汉、git commit? (提交文件刪除的狀態(tài)到本地的版本庫中)

以上三步可以縮減為兩步:

1、git rm file (直接把刪除的文件添加到暫存區(qū)中)

2拴清、git commit? (提交文件刪除的狀態(tài)到本地的版本庫中)

#############刪除文件###############

1靶病、git rm filename? 然后 git commit 即可

2、rm filename? / git add? / git commit

git rm filename 就是 rm filename 的簡化版

########查看當(dāng)前工作區(qū)修改狀態(tài)#######

git status;

要隨時掌握工作區(qū)的狀態(tài)口予,

使用git status命令

如果git status告訴你有文件被修改過娄周,

用git diff可以查看修改內(nèi)容。

git diff 默認(rèn)查看所有被修改過的文件(不包括新增未add的文件)

git diff filename (查看具體某個文件的修改內(nèi)容 )

###########查看log記錄#####

git log? 默認(rèn)列出之前提交過記錄(根據(jù)提交時間由近到遠排列)

git log -n? 列出指定提交次數(shù)的記錄

git log --pretty=oneline? 列出簡單記錄信息(commitid 和 提交注釋)

git reflog -n 查看指定次數(shù)的提交操作的記錄信息(commitid)

log? and? reflog

兩者都是查看所有的commit操作的記錄沪停,log查看不到reset回退時跳過的commit操作的commitid

(可以夸版本回退一次煤辨,進行實際演示)

git log

git reflog

git reset --hard commitid

git log

git reflog

git log? --graph? 可以查看分支合并圖

#########撤回和回滾#######

1、在工作區(qū)內(nèi)修改了文件但沒有提交到暫存區(qū)撤銷所有修改:

git checkout -- file.name? 可以丟棄工作區(qū)的修改 木张,只針對已跟蹤的文件

git checkout -- file? ? ? ? 命令中的--很重要众辨,沒有--,就變成了“切換到另一個分支”的命令

2舷礼、文件已經(jīng)添加到暫存區(qū)撤回:

git reset HEAD file

or

git rm --cached filename

3鹃彻、文件已經(jīng)提交到了本地的版本庫且未推向遠端的版本庫中:

git reset --hard HEAD~n

or

git reset --hard commitid(推薦)

HEAD 表示提交的最新版本。HEAD^表示上一個版本妻献,HEAD^^表示上上個版本蛛株。HEAD~100表示往上100個版本团赁。

(上兩個版本 HEAD~2)

4、文件已經(jīng)從本地倉庫推倒遠程倉庫的回退

? git log? or git reflog 找到目標(biāo)版本

? git reset --hard commitid

? git push -f origin master? (-f 參數(shù)是強制覆蓋的意思谨履,沒有該參數(shù)會推送失敗欢摄,因為遠程倉庫的版本高于當(dāng)前版本)


? git revert commitid



git revert 是生成一個新的提交來撤銷某次提交,此次提交之前的commit都會被保留

git reset 是回到某次提交笋粟,提交及之前的commit都會被保留剧浸,但是此次之后的修改都會被退回到暫存區(qū)


團隊開發(fā)時,版本回退一定要通知其他人員矗钟!如果其他同事在每次提交前沒有先更細后提交的意識或習(xí)慣的話唆香,回退是白費功夫。

http://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html

######################狀態(tài)凍結(jié)####################

git stash? ? ? 凍結(jié)當(dāng)前修改狀態(tài)

git? stash list? 列出總結(jié)列表

git? stash pop? 可以按版本恢復(fù)某個凍結(jié)狀態(tài)并刪除

git? stash apply? 只是按某個版本恢復(fù)某個凍結(jié)狀態(tài)不刪除

git? stash drop? ? 刪除指定某個凍結(jié)狀態(tài)

####################tag管理#####################

創(chuàng)建tag:

git tag -a tagname? -m “添加tag的描述信息”? (tag要有個規(guī)則標(biāo)識例如:feature_abc_v1.1 吨艇,給當(dāng)前分支打一個tag名為tagname)

命令git tag <name>用于新建一個標(biāo)簽躬它,默認(rèn)為HEAD,也可以指定一個commit id东涡;

提交創(chuàng)建的tag:

git push origin tagname (同提交分支操作一樣)

命令git tag可以查看所有標(biāo)簽冯吓。

查看tag:

git tag?

or

git tag -l

查看標(biāo)簽的具體信息:

git show tag-name

刪除標(biāo)簽:

Git tag -d tagname (本地刪除)

Git push orign (空格):refs/tags/tagname (把刪除的tag提交到遠端)

刪除標(biāo)簽實例:

git tag -d v0.9

git push origin :refs/tags/v0.9

獲取遠程倉庫的tag信息(本地沒有)

git fetch origin tag $tag

##########同遠程倉庫關(guān)聯(lián)#########

查看當(dāng)前代碼關(guān)聯(lián)的遠程倉庫信息

git remote? 直接回車,列出所有關(guān)聯(lián)的遠程倉庫

git remote -v? 回車 列出每個遠程倉庫名及對應(yīng)的倉庫地址url

git remote add [shortname] [url]: 添加同一個遠程倉庫的關(guān)聯(lián)關(guān)系

git remote remove shortname : 刪除同一個遠程倉庫的關(guān)聯(lián)關(guān)系

要關(guān)聯(lián)一個遠程庫疮跑,使用命令git remote add origin git@server-name:path/repo-name.git组贺;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容祖娘;

此后失尖,每次本地提交后,只要有必要渐苏,就可以使用命令git push origin master推送最新修改掀潮;

分布式版本系統(tǒng)的最大好處之一是在本地工作完全不需要考慮遠程庫的存在,也就是有沒有聯(lián)網(wǎng)都可以正常工作琼富,而SVN在沒有聯(lián)網(wǎng)的時候是拒絕干活的仪吧!

當(dāng)有網(wǎng)絡(luò)的時候,再把本地提交推送一下就完成了同步鞠眉,真是太方便了薯鼠!

 .gitignore規(guī)則不生效的解決辦法

把某些目錄或文件加入忽略規(guī)則,按照上述方法定義后發(fā)現(xiàn)并未生效械蹋,原因是.gitignore只能忽略那些原來沒有被追蹤的文件出皇,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的朝蜘。那么解決方法就是先把本地緩存刪除(改變成未被追蹤狀態(tài))恶迈,然后再提交:

git rm -r --cached .

git add .

git commit -m 'update .gitignore'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子暇仲,更是在濱河造成了極大的恐慌步做,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奈附,死亡現(xiàn)場離奇詭異全度,居然都是意外死亡,警方通過查閱死者的電腦和手機斥滤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門将鸵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人佑颇,你說我怎么就攤上這事顶掉。” “怎么了挑胸?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵痒筒,是天一觀的道長。 經(jīng)常有香客問我茬贵,道長簿透,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任解藻,我火速辦了婚禮老充,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘螟左。我一直安慰自己啡浊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布路狮。 她就那樣靜靜地躺著虫啥,像睡著了一般蔚约。 火紅的嫁衣襯著肌膚如雪奄妨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天苹祟,我揣著相機與錄音砸抛,去河邊找鬼。 笑死树枫,一個胖子當(dāng)著我的面吹牛直焙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砂轻,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼奔誓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厨喂,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤和措,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜕煌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體派阱,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年斜纪,在試婚紗的時候發(fā)現(xiàn)自己被綠了贫母。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡盒刚,死狀恐怖腺劣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情因块,我是刑警寧澤誓酒,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站贮聂,受9級特大地震影響靠柑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吓懈,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一歼冰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耻警,春花似錦隔嫡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至温兼,卻和暖如春秸滴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背募判。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工荡含, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人届垫。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓释液,卻偏偏與公主長得像,于是被迫代替她去往敵國和親装处。 傳聞我的和親對象是個殘疾皇子误债,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

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

  • 1、直接克隆遠程倉庫的某個分支 git clone -b 遠程分支名 遠程倉庫地址 本地文件夾名 如...
    曹軒躍閱讀 632評論 0 1
  • 第一部分:Git的基本操作 初始化操作 $ git config -global user.name #設(shè)置提交...
    莊欲以莘閱讀 1,886評論 0 4
  • git的基本操作 Git 的工作就是創(chuàng)建和保存你項目的快照及與之后的快照進行對比。 1.獲取與創(chuàng)建項目命令git ...
    初夏涼雨閱讀 266評論 0 1
  • 1. GIT命令 git init在本地新建一個repo寝蹈,進入一個項目目錄糟袁,執(zhí)行g(shù)it init,會初始化一個re...
    江邊一蓑煙閱讀 792評論 0 0
  • 這篇博文是自己在學(xué)習(xí)git過程中的思考總結(jié)躺盛。本文僅僅代表個人的看法项戴,如有不妥地方還請本文文末留言。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,060評論 4 18