git使用方法之我有一個文件要上傳

上手階段

我有一個文件要上傳侍芝。不僅如此,后期還要不斷的修改埋同、添加等等竭贩,于是我覺得應該用git。于是莺禁,我用了留量,打開“開始”按鈕,找到git目錄夾哟冬,里面有三個不知道是什么鬼的東西楼熄,于是有了下面三段文字。

Git Bash:
Bash浩峡,Unix shell的一種可岂,Linux與Mac OS X v10.4都將它作為默認shell。
Git Bash就是一個shell翰灾,是Windows下的命令行工具缕粹,可以執(zhí)行Linux命令。
Git Bash是基于CMD的纸淮,在CMD的基礎上增添一些新的命令與功能平斩。所以建議在使用的時候,用Bash更加方便咽块。

Git CMD:
(命令行提示符)是Windows操作系統(tǒng)上的命令行解釋程序绘面。當你在Windows上安裝git并且習慣使用命令行時,可以使用cmd來運行git命令。

Git GUI:
基本上針對那些不喜歡黑屏(即命令行)編碼的人揭璃。它提供了一個圖形用戶界面來運行您喜歡的git命令晚凿。

于是,我打開了Git GUI瘦馍,準備踐行人類前進的不竭動力——懶歼秽,沒想到,對方讓我建立一個“工程”情组,于是哲银,我發(fā)現(xiàn)了一個真理:懶,是優(yōu)秀的另一種表現(xiàn)形式呻惕。
我要讓自己變優(yōu)秀荆责。
于是,我打開了Git Bash亚脆。

開始

git裝上做院,就沒用過,于是我執(zhí)行下面兩行代碼來證明我是我濒持,因為我有我的賬號和密碼键耕,當然,是需要修改的柑营。config的意思是“配置”屈雄,--global表全局。即官套,你這臺機器上所有的Git倉庫都會使用這個配置酒奶,當然也可以對某個倉庫指定不同的用戶名和Email地址。

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

我用的是windows奶赔,先建個文件夾惋嚎,命名為git-upload.并在Git Bash里cd到這個文件夾(每個文件夾都要進行一次cd,不能一步到位)站刑。為了確保是否轉到這個文件夾另伍,輸入pwd(“騙我的?”好記绞旅,哈哈)摆尝,防止計算機騙我,哈哈因悲。計算機立馬顯示當前倉庫的位置堕汞。

初始化

倉庫的廠房已經搭建好了,現(xiàn)在該初始化了囤捻,搭建一些基礎配置臼朗。
于是,git init蝎土,我發(fā)現(xiàn)多了一個.git文件视哑,這個屬于基礎設施類文件,意味著不要亂動誊涯,否則“牽一發(fā)而動全身”挡毅,后果很嚴重。如果還沒看到暴构,那是隱藏了跪呈,輸入ls -ah,就OK了取逾。

往倉庫添加貨品

廠房搭建好了耗绿,基礎配置也好了,那就上貨吧砾隅∥笞瑁可是,我只有一個文件:文本.txt晴埂。于是究反,我用git add 文本.txt,把貨品放到了暫存區(qū)儒洛,也就是放到了小推車上精耐,我也可以再往小推車上放幾個,最后來一個git commit -m "備注信息琅锻,很重要卦停,盡量備注吧,你會感謝自己的"恼蓬,然后沫浆,就把小推車(暫存區(qū))上的貨品,全放上去了滚秩。
后來专执,要把一整個文件夾放小推車上,那我就用了 git add 文件夾/ 來添加整個文件夾及內容或者用 git add *.文件類型 來添加目錄中所有此文件類型的文件郁油。
然后本股,我有了一個大膽的想法,我想一下子把所有文件全部上傳桐腌,git真不錯拄显,早就想到了,用 git add . 案站,全給放小推車(暫存區(qū))上了躬审。

關聯(lián)遠程倉庫

雖然把貨品都用commit進行提交了,但也只是提交到了本地倉庫,還沒有上傳到遠程倉庫承边,讓別人都看到我的工作遭殉。于是,我打開了我的Gitee(本文以Gitee為例博助,其與GitHub操作基本是一樣的)险污,點開SSH公鑰,將公鑰標題設置為ssh-key-02富岳,然后蛔糯,要粘貼公鑰內容,才想起來沒有公鑰窖式,于是乎蚁飒,在git bash里輸入 ssh-keygen -t rsa -C "youremail@example.com" (不要直接復制粘貼,是你的email)萝喘,然后其實是可以一路回車的飒箭,我就這么干的。然后蜒灰,根據bash的提示弦蹂,打開文件目錄,打開.ssh文件夾强窖,發(fā)現(xiàn)一個密鑰對 (兩個文件)凸椿,id_rsa是私鑰,不能泄露出去翅溺,id_rsa.pub是公鑰脑漫,可以放心地告訴任何人。然后咙崎,我就打開公鑰优幸,一波復制粘貼,公鑰搞定褪猛。
另外网杆,涉及git的文本文件,不要使用Windows自帶的記事本伊滋,建議Notepad++碳却,不然,容易出錯笑旺。
現(xiàn)在只是讓我的gitee信任了我的計算機昼浦,即,讓Git信任了本地倉庫筒主,還沒有關聯(lián)遠程倉庫关噪,可現(xiàn)在遠程倉庫并不存在鸟蟹,所以,先創(chuàng)建遠程倉庫使兔,在我的gitee上建钥,倉庫名稱同樣是git-upload,點擊創(chuàng)建火诸,成功后锦针,就可以關聯(lián)了荠察。
git remote add origin git@gitee.com:wsgdiv/git-upload.git(修改成你的地址置蜀,這是我的。)
關聯(lián)成功了悉盆。
我發(fā)現(xiàn)關聯(lián)的名稱是origin盯荤,我又有了一個大膽的想法,我想讓我的本地倉庫同時關聯(lián)gitee和github焕盟,當然秋秤,GitHub的密鑰對也是要建立好的。
然后脚翘, 我先git remote -v查看了一下灼卢,當前本地倉庫已經關聯(lián)的遠程倉庫,只有gitee来农,我先把gitee遠程庫刪掉鞋真,git remote rm origin,OK沃于,然后涩咖,關聯(lián)兩個遠程庫,為了有所區(qū)別繁莹,名字不能一樣檩互。
git remote add gitee git@gitee.com:wsgdiv/git-upload.git
git remote add github git@github.com:wsgdiv/git-upload.git
現(xiàn)在,我的本地倉庫關聯(lián)兩個遠程庫了咨演。
然后闸昨,我用git push -u origin master把本地庫的內容推送到遠程,實際上是把當前分支master推送到遠程薄风。因為是第一次推送零院,所以加了 -u ,還把本地的master分支和遠程的master分支關聯(lián)起來村刨,在以后的推送或者拉取時就可以簡化命令告抄。
當然,現(xiàn)在是兩個遠程庫嵌牺,所以打洼,不能用origin了龄糊,要用各自的遠程庫名字。

文件修改與回退

突然想起來募疮,有個文件需要更改炫惩,于是乎,在 文本.txt 中又加了一行阿浓。這時文件進行了更改他嚷,我想看一下本地git狀態(tài),用git status芭毙,那我到底更改了什么呢筋蓖?git diff 文本.txt 了解一下。

Administrator@XTZ-01804182126 MINGW64 ~/Desktop/git-upload (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   "\346\226\207\346\234\254.txt"

no changes added to commit (use "git add" and/or "git commit -a")

Administrator@XTZ-01804182126 MINGW64 ~/Desktop/git-upload (master)
$ git diff 文本.txt
diff --git "a/\346\226\207\346\234\254.txt" "b/\346\226\207\346\234\254.txt"
index c6a6747..bf2adc1 100644
--- "a/\346\226\207\346\234\254.txt"
+++ "b/\346\226\207\346\234\254.txt"
@@ -1,3 +1,5 @@
 寫點啥呢退敦,不知道粘咖,所以就這吧。
 再寫一行
-第三行侈百。
\ No newline at end of file
+第三行瓮下。
+
+第五行
\ No newline at end of file

Administrator@XTZ-01804182126 MINGW64 ~/Desktop/git-upload (master)
$

其實,文件的修改在于钝域,我加了三個字:第五行讽坏。
現(xiàn)在可以提交了,git commit -m "在文本.txt第五行加了三個字:第五行"
然后例证,我又對文件做了修改路呜,不小心寫了廢話,這可咋整战虏?算了拣宰,就讓我們回到過去,還記得“那天放學烦感,夕陽下的奔跑巡社,那是我逝去的青春”
git log 查看,這樣查看手趣,信息繁雜晌该,用 git log --pretty=oneline

$ git log --pretty=oneline
ade5f84dd686f31d12d1fa008820d29493b1abc1 (HEAD -> master) 寫的廢話
d0615a755560e0604098886f9a4d0a2a9810f05e (origin/master) first commit
d9addb3c08be0b087ddff59030fe90d454faa1dd 第一個文本文件
Administrator@XTZ-01804182126 MINGW64 ~/Desktop/git-upload (master)

回到寫廢話之前,git reset --hard HEAD^绿渣,因為是回到往前數(shù)第二個版本朝群,所以,兩個中符,如果100個的話姜胖,可以寫HEAD~100。
然而淀散,我發(fā)現(xiàn)我應該撤回到ade5f84dd686f31d12d就可以了右莱,完了蚜锨,這咋整?“來的時候好好的慢蜓,回不去了”亚再。
這時,千萬不要關閉時光通道晨抡,也就是命令行窗口
git reset --hard ade5f
OK氛悬,回來了。萬一把窗口關了耘柱,就git reflog如捅,會顯示每一次的操作。

對修改的撤銷

我又對文件做了修改帆谍,發(fā)現(xiàn)修改錯了伪朽,我想回到修改之前轴咱,現(xiàn)在只是對文件進行了保存汛蝙,還沒有用git add放到小推車(暫存區(qū))上,因為修改了多處朴肺,工作量又很大窖剑,于是
git checkout -- 文本.txt
就好了,哪個文件做了修改戈稿,就操作哪個文件西土。
問題來了,如果用git add放到了小推車(暫存區(qū))上鞍盗,還沒用git commit放到貨架上需了,就用
git reset HEAD 文本.txt
git checkout -- 文本.txt
就撤銷了。
如果已經git commit了呢般甲?這個剛扯過肋乍,往上翻。

文件的刪除與恢復

刪除文件
rm test.txt
git rm test.txt
git commit -m "remove test.txt"
如果刪錯了敷存,想要恢復墓造。(已用commit提交過或者add過)
git checkout -- test.txt
當然,如果沒提交過锚烦,就沒法恢復了觅闽。

分支

現(xiàn)在,我有一些節(jié)日貨品還沒到上貨時間涮俄,節(jié)日還沒有到來蛉拙,可現(xiàn)在貨品已經提前送到,那怎么辦彻亲,先放在一邊的小倉庫里吧孕锄,這個臨時的小倉庫叫分支室叉,也可以進行add和commit操作。
git checkout -b dev 創(chuàng)建并切換dev分支
等同于:
git branch dev
git checkout dev
還有硫惕,可以用 git branch 查看當前所處分支茧痕。
現(xiàn)在,節(jié)日到了恼除,要把dev這個小倉庫的貨品合并到大倉庫里踪旷。
git checkout master 切換到主分支
git merge dev 合并dev分支到當前分支
git branch -d dev 刪除dev分支
補充:
創(chuàng)建并切換到新的dev分支,可以使用:
git switch -c dev
直接切換到已有的master分支豁辉,可以使用:
git switch master
git log --graph命令可以看到分支合并圖
git merge --no-ff -m "merge with no-ff" dev 注意--no-ff參數(shù)令野,表示禁用Fast forward,因為Fast forward模式下徽级,刪除分支后气破,會丟掉分支信息。加上--no-ff參數(shù)就可以用普通模式合并餐抢,合并后的歷史有分支现使,能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并旷痕。

bug分支

bug的出現(xiàn)碳锈,往往很突然,剛好你正在忙欺抗,去臨時修bug售碳,所以,先把當前工作現(xiàn)場保存起來
git stash 把當前工作現(xiàn)場“儲藏”起來绞呈,等以后恢復現(xiàn)場后繼續(xù)工作
git stash list 查看“儲藏”起來的工作現(xiàn)場
如何恢復贸人?
一是用git stash apply恢復,但是恢復后佃声,stash內容并不刪除艺智,你需要用git stash drop來刪除;
另一種方式是用git stash pop秉溉,恢復的同時把stash內容也刪了:
當然力惯,也可以多次stash,恢復的時候召嘶,先用git stash list查看父晶,然后恢復指定的stash,用命令:
$ git stash apply stash@{0}
在master分支上修復了bug弄跌,往往這個bug在dev分支上也是存在的甲喝,所以
cherry-pick xxx(bug分支commit版本號前綴) 讓我們能復制一個特定的提交到當前分支
補充:
git branch -D feature 強行刪除,需要使用大寫的-D參數(shù)
git remote 查看遠程庫的信息,用git remote -v顯示更詳細的信息
git push origin master 把該分支上的所有本地提交推送到遠程庫
git push origin dev 把dev分支上的所有本地提交推送到遠程庫對應的dev分支
git checkout -b dev origin/dev 創(chuàng)建遠程origin的dev分支到本地
git pull把最新的提交從origin/dev抓下來足绅,然后,在本地合并旁瘫,解決沖突直撤,再推送
git branch --set-upstream-to=origin/dev dev 設置dev和origin/dev的鏈接
git rebase 把分叉的提交歷史“整理”成一條直線非竿,看上去更直觀。缺點是本地的分叉提交已經被修改過了谋竖。

標簽

其實红柱,就是我們經常遇到的用來區(qū)分版本的版本號
git tag v1.0 打了個標簽
git tag 查看所有標簽
git tag v0.9 f52c633 要對add merge這次提交打標簽,它對應的commit id是f52c633
git show <tagname>查看標簽信息
git tag -a v0.1 -m "version 0.1 released" 1094adb 創(chuàng)建帶有說明的標簽蓖乘,用-a指定標簽名锤悄,-m指定說明文字
注意:標簽總是和某個commit掛鉤。如果這個commit既出現(xiàn)在master分支嘉抒,又出現(xiàn)在dev分支零聚,那么在這兩個分支上都可以看到這個標簽。
git tag -d v0.1 刪除標簽
git push origin v1.0 推送某個標簽到遠程
git push origin --tags 一次性推送全部尚未推送到遠程的本地標簽
如果標簽已經推送到遠程些侍,要刪除遠程標簽就麻煩一點隶症,先從本地刪除:
git tag -d v0.9
git push origin :refs/tags/v0.9

參考鏈接:
https://www.liaoxuefeng.com/wiki/896043488029600
https://www.cnblogs.com/lbbog/p/11458988.html

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市娩梨,隨后出現(xiàn)的幾起案子沿腰,更是在濱河造成了極大的恐慌览徒,老刑警劉巖狈定,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異习蓬,居然都是意外死亡纽什,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門躲叼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芦缰,“玉大人,你說我怎么就攤上這事枫慷∪美伲” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵或听,是天一觀的道長探孝。 經常有香客問我,道長誉裆,這世上最難降的妖魔是什么顿颅? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮足丢,結果婚禮上粱腻,老公的妹妹穿的比我還像新娘庇配。我一直安慰自己,他們只是感情好绍些,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布捞慌。 她就那樣靜靜地躺著,像睡著了一般柬批。 火紅的嫁衣襯著肌膚如雪卿闹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天萝快,我揣著相機與錄音锻霎,去河邊找鬼。 笑死揪漩,一個胖子當著我的面吹牛旋恼,可吹牛的內容都是我干的。 我是一名探鬼主播奄容,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冰更,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昂勒?” 一聲冷哼從身側響起蜀细,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎戈盈,沒想到半個月后奠衔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡塘娶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年归斤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刁岸。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡脏里,死狀恐怖,靈堂內的尸體忽然破棺而出虹曙,到底是詐尸還是另有隱情迫横,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布酝碳,位于F島的核電站矾踱,受9級特大地震影響,放射性物質發(fā)生泄漏击敌。R本人自食惡果不足惜介返,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圣蝎,春花似錦刃宵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至关面,卻和暖如春坦袍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背等太。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工捂齐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缩抡。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓奠宜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瞻想。 傳聞我的和親對象是個殘疾皇子压真,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容