???????????????????????????????????????Git for windows
本文只是自己的一些學(xué)習(xí)總結(jié)岖常,方便自己查看妖异,如果對您閱讀不適蟀俊,抱歉Rぐ睢U!
常用命令(省略$):git --help(查看命令);mkdir (創(chuàng)建目錄);
git init (將文件變成Git可管理的倉庫);
ls -ah(查看.git隱藏文件); pwd(當(dāng)前目錄); git add(添加文件到倉庫);
git commit -m(上傳文件到倉庫); git diff(查看修改內(nèi)容);
git status(查看當(dāng)前狀態(tài)); git log(查看版本); git log --pretty=oneline(查看版本);
git reflog(查看歷史版本); git reset --hard HEAD^(返回到上一個版本);
cat mygit.txt(查看當(dāng)前版本內(nèi)容);git checkout -- mygit.txt(未add撤銷修改);
git reset HEAD mygit.txt->git checkout -- mygit.txt(add后撤銷修改);
rm mygit.txt -> git checkout -- mygit.txt(撤銷刪除);
rm mygit.txt -> git rm mygit.txt -> git commit (刪除文件);
$ git remote add origin git@github.com:lxh597/learngit.git(關(guān)聯(lián)github)魔慷;
$ git push -u origin master(上傳到github倉庫);
$ git push origin master(本地修改后推送到github);
$ git clone git@github.com:lxh597/warehouse.git(克隆到本地);
$ git checkout -b dev(創(chuàng)建并切換至dev分支曹仗,相當(dāng)于git branch dev + git checkout dev); $ git branch(查看當(dāng)前分支);
$ git branch dev(創(chuàng)建dev分支); $ git checkout dev(切換至dev分支);
$ git merge dev(講dev分支合并到當(dāng)前分支); $ git branch -d dev(刪除dev分支);
$ git merge --no-ff -m “msg” dev(不適用fast forword合并岖免,log能看出曾經(jīng)合并過);
$ git stash(儲存當(dāng)前工作現(xiàn)場); $ git stash list(查看儲存列表);
$ git stash pop(恢復(fù)并刪除stash list內(nèi)容);
$ git stash 可多次儲存馏慨,用git stash list查看,然后使用git stash apply stash@{0}恢復(fù)侧甫,使用git stash drop刪除;
$ git remote -v(查看遠(yuǎn)程倉庫信息)
$ git tag v1.0(創(chuàng)建標(biāo)簽);
$ git log --pretty=oneline --abbrev-commit -> $ git tag v0.9 53ef5ce (根據(jù)commit id);
$ git tag(查看標(biāo)簽); $ git show v1.0(查看標(biāo)簽信息);
$ git tag -a v0.1 -m “version 0.1” 3a9175f (-a 標(biāo)簽名 -m說明);
$ git push origin v1.0(推送標(biāo)簽到遠(yuǎn)程);
$ git push origin --tags(所有未推送的標(biāo)簽推送到遠(yuǎn)程);
$ git tag -d v1.0(刪除標(biāo)簽);
$ git push origin :refs/tags/v0.9(刪除推送到遠(yuǎn)程的標(biāo)簽);
$ git push origin -d tag v0.1(同上);
一熄守、下載安裝
1腹缩、github 搜索git for windows
2常潮、選擇第一個waylau/git-for-win
3诸衔、選擇Git for windows Setup下載
4渣淳、下載完成后看到如下圖標(biāo) 雙擊安裝
5旁赊、點擊下一步
6鲜屏、最后True Type font為可選項(字體)
7、點擊下一步
8也殖、此項無影響土思,默認(rèn)勾選第一個
9、選擇換行符風(fēng)格
1)checkout為windows換行符忆嗜,commit為Unix風(fēng)格己儒;
2)checkout時不做任何處理,commit為Unix風(fēng)格捆毫;
3)文件的換行符不做任何處理闪湾;
10、選擇MinTTY窗口绩卤,美觀途样;
11、默認(rèn)設(shè)置即可濒憋;
12何暇、點擊install安裝;最后點擊finish即可凛驮;
13裆站、安裝完成后開始菜單會看到;目錄下shift+右鍵也會看到Git Bash 和Git GUI 選擇Git Bash黔夭;
二宏胯、創(chuàng)建版本庫
安裝完成后打開git命令行輸入:
$git config --global user.name? “ your name”
$git config --global user.email? “ 123456789@qq.com”? (你的郵箱地址)
因為git是分布式版本控制系統(tǒng),每臺機器都必須有自己的名字和郵箱纠修;--global表示此設(shè)備上的所有Git倉庫都會使用這個配置胳嘲,也可以為不同倉庫指定不同的用戶名和email地址厂僧;
選擇一個合適地方創(chuàng)建一個空文件夾
$ mkdir filename (創(chuàng)建一個空文件夾)
$ cd filename (進(jìn)入該文件夾目錄)
$ pwd (查看當(dāng)前目錄)
$ git init (將這個目錄變成Git可以管理的倉庫)出現(xiàn)如下信息表示創(chuàng)建成功扣草,并為一個空倉庫
Initialized empty Git repository in F:/learngit/learn/.git/
此時該目錄下多了一個.git的隱藏目錄,此目錄是Git跟蹤管理版本庫的颜屠,切勿修改辰妙,可能會破壞Git倉庫;此文件可以設(shè)置顯示隱藏文件或者輸入ls -ah命令查看甫窟;
在配置好的Git倉庫目錄下新建一個mygit.txt文件(名字隨意)密浑,我使用的sublime,字符編碼設(shè)置為utf-8;切勿使用windows文本文檔(原因百度)粗井;
內(nèi)容(隨意):Git is a version control system.
Git is free software.
一定要放到配置的Git倉庫文件目錄下尔破,不然Git找不到文件街图;
$ git add filename.txt
將文件添加到Git倉庫;執(zhí)行以上代碼沒有任何提示懒构,表示添加成功餐济,Unix哲學(xué)“沒有消息就是好消息”;
添加文件可以一次添加多個(如:$ git add filename1.txt? filename2.txt)
將文件提交到倉庫胆剧,輸入如下命令:
$ git commit -m “wrote a mygit file” (-m后面是提交說明絮姆,建議輸入一些有意義的內(nèi)容,方便自己或者別人閱讀)
上面提示告訴你一個文件改動(添加mygit.txt文件)秩霍,插入兩行內(nèi)容(文件有2行內(nèi)容)
$ git add 可以一次添加一個也可以添加多個文件篙悯,可反復(fù)多次使用,$ commit 一次將所有文件提交完成铃绒;
三鸽照、基本操作
Git is a distributed version control system.
Git is free software.
修改mygit.txt文件如上,命令行輸入$ git status
$git status可以查看倉庫當(dāng)前的狀態(tài)颠悬,上面告訴我們mygit文件被修改過移宅,但是還沒有被提交;
但$ git status不能查看具體被修改的內(nèi)容椿疗,如果不記得上次怎么修改的mygit文件漏峰,可以使用$ git diff命令查看;
-為被刪除的內(nèi)容 +為新增內(nèi)容 白色為未修改內(nèi)容届榄;
使用$ git add mygit.txt將修改過后的文件提交浅乔,沒有任何提示
再次輸入$ git status,最后一行提示將要被修改的文件包括mygit.txt
下一步使用$ git commit -m ”update mygit.txt”提交修改
一個文件被修改,插入一行铝条,刪除一行靖苇;
使用$ git status 查看當(dāng)前狀態(tài)
上面提示告訴你沒有需要提交的修改,工作目錄是干凈的班缰;
要隨時使用git status掌握工作區(qū)狀態(tài)贤壁,如果告訴你有文件被修改過,可以使用$ git diff查看
再次使用修改文件內(nèi)容如下并保存:
Git is a distributed version control system.
Git is free software distributed under the GPL.
$ git add mygit.txt埠忘;
$ git commit -m “update twice”脾拆;
使用$ git log可以查看修改文件的信息(從近到遠(yuǎn)),如下:
也可使用$ git log --pretty=oneline,結(jié)果如下:
后面為commit -m“”引號中的說明(所以前面說到最好輸入有意義的內(nèi)容)莹妒,前面為commit id名船,即為版本號(如下圖);表示為當(dāng)前版本旨怠;上一個版本為HEAD^,上上個版本為HEAD^^渠驼,上100個版本為HEAD100個^。鉴腻。迷扇。(HEAD-100)
使用$ git reset --hard HEAD^ 回退到上一個版本:
使用$ cat mygit.txt查看當(dāng)前版本內(nèi)容為上一版本內(nèi)容:
而你的文件里面也會變成這樣:
使用$ git log查看百揭,發(fā)現(xiàn)最新版本已經(jīng)被刪除:
如果第二天你突然又想恢復(fù)到前面最新的版本,這是你發(fā)現(xiàn)你已經(jīng)找不到這個版本的commit id蜓席;你可以使用:$ git reflog
然后 $ git reset --hard 9899562
使用 $ cat mygit.txt 然后你的文件也會變成這樣:
四信峻、管理修改
將mygit文件修改,添加兩段內(nèi)容:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.
依次使用$ cat mygit.txt ; $ git add mygit.txt ; $ git status輸出如下內(nèi)容:
然后再次修改mygit文件:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
輸入$ cat mygit.txt 輸出:
使用$ git commit -m “change threetimes” 提交修改瓮床,然后查看狀態(tài)$ git status:
此處提示有未提交的修改balabala
輸入$ git diff HEAD --mygit.txt 查看工作區(qū)(文件)和版本庫(.git隱藏文件)中最新版本的區(qū)別:
此時文件中是這樣:
而版本庫中是這樣:
可見第二次修改并沒有被提交盹舞,因為git版本庫分為暫存區(qū)和master分支,HEAD為指向master分支的指針即當(dāng)前版本的指針隘庄,使用git修改文件時踢步,git add是將文件添加到暫存區(qū),而git commit -m是將暫存區(qū)的修改提交到master分支丑掺;
第二次修改時未add到暫存區(qū)获印,所以不會被提交。
所以正確的操作方式應(yīng)該是:
第一次修改->add->第二次修改->add->commit街州;
五兼丰、撤銷修改
git撤銷修改分兩種,第一種是沒有add到暫存區(qū)唆缴,第二種是已經(jīng)add到暫存區(qū)的鳍征,下面我們在mygit文件中添加一行(可用cat 命令查看):
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
oh shit.
此時修改未被add,可使用$ git checkout -- mygit.txt面徽,這樣修改就被撤銷掉了:
如果修改后的文件已經(jīng)被add艳丛,但沒有commit,此時可使用$ git reset HEAD mygit.txt將文件從暫存區(qū)的修改撤銷掉趟紊,如圖1倒數(shù)第二行提示氮双,$ git reset HEAD mygit.txt 后使用第一步的$ git checkout -- mygit.txt,即可將文件修改撤銷霎匈,如圖2:
六戴差、刪除文件
首先在工作區(qū)新建一個delete.txt文件,并且add commit:
使用rm delete.txt命令刪除文件铛嘱,此時你在工作區(qū)中已經(jīng)看不到此文件暖释,但是你使用git status命令,會出現(xiàn)如下提示:
此時分兩種情況弄痹,誤刪或者確認(rèn)刪除:
如果是誤刪可使用$ git checkout -- delete.txt 饭入,同時你發(fā)現(xiàn)文件回到了工作區(qū):
如果確定要刪除此文件在rm mygit.txt 之后輸入 git rm mygit.txt 然后commit提交:
七、Github遠(yuǎn)程倉庫
首先注冊一個github賬號肛真,進(jìn)入setting中的SSH KEY頁面,在git bash中輸入cd ~/.ssh查看是否有.ssh文件爽航,如果有蚓让,輸入ls -a會輸出(下圖)乾忱,然后使用$ clip? <? ~/.ssh/id_rsa.pub,將文件內(nèi)容復(fù)制到剪切板历极,如果沒有.ssh文件窄瘟,輸入$ ssh-keygen -t rsa -C "youremail@example.com"(郵箱地址),然后一路回車趟卸,出現(xiàn)下圖2:
按照前面操作執(zhí)行:
在github SSH KEY頁面中隨便輸入一個title蹄葱,然后右鍵點擊粘貼,提交锄列,然后github遠(yuǎn)程倉庫就配置成功了:
點擊創(chuàng)建一個新的倉庫图云,名字設(shè)為learngit,其他默認(rèn)設(shè)置邻邮,點擊創(chuàng)建:
根據(jù)github提示在本地learngit倉庫輸入如下命令:
$ git remote add origin git@github.com:lxh597/learngit.git(lxh597改為你的github賬號名竣况,用于關(guān)聯(lián)遠(yuǎn)程庫);origin為遠(yuǎn)程庫名字筒严,git默認(rèn)丹泉;
然后:git push -u origin master
第一次push會出現(xiàn)提示:輸入yes就ok了:
然后你的github上就會出現(xiàn)你上傳的文件了:
說明:git push實際上是把當(dāng)前分支master推送到遠(yuǎn)程,第一次推送master分支時鸭蛙,加上-u參數(shù)摹恨,git不但會把本地master分支推送到遠(yuǎn)程新的master分支,還會講其關(guān)聯(lián)起來娶视,后面的推送或者拉區(qū)就可以簡化命令睬塌;
現(xiàn)在只要本地做了提交,就可以通過$ git push origin master 把本地master分支推送到github
八歇万、遠(yuǎn)程克隆
登陸github創(chuàng)建一個新的倉庫揩晴,取名warehouse,勾選下方自動生成一個readme文件:
輸入$ git clone git@github.com:lxh597/warehouse.git(注意修改賬號名)贪磺,cd進(jìn)入查看:
九硫兰、分支管理
當(dāng)你開發(fā)一個新功能而又不能在短時間內(nèi)完成,這時你又不能提交未完成的文件寒锚,因為這樣可能會使別人無法正常工作劫映,如果代碼全部寫完再進(jìn)行提交,又可能會有丟失進(jìn)度的風(fēng)險刹前;
你可以創(chuàng)建一個屬于你自己的分支泳赋,別人看不到,想提交就提交喇喉,等你把工作做完祖今,再把這個分支合并到原來的分支上,這樣既安全又不影響他人工作;
使用$ git checkout -b dev(創(chuàng)建一個名為dev的分支并切換至dev分支)千诬,相當(dāng)于$ git branch dev耍目,$ git checkout dev;使用$ git branch 查看當(dāng)前分支:
在README文件中添加一行代碼徐绑,然后add commit 提交:
切換回master分支:git checkout master邪驮,然后使用git merge dev將dev合并到當(dāng)前分支,然后使用git branch -d dev刪除dev分支: