參考資料
git 基本指令
- git init:在當前目錄下脱篙,把這個目錄變成git可以管理的倉庫凸主。創(chuàng)建完成后目錄中多了一個.git的目錄举瑰,用來追蹤git的版本. 工作區(qū)是你電腦里面的文件夾捉腥,倉庫是git創(chuàng)建的快照妓灌,用于版本管理。
- git add和git commit:git add用來將文件添加到倉庫幔戏,git commit 提交到倉庫玛追。git add 命令實際上是把要提交的所有修改放到暫存區(qū)stage,然后執(zhí)行git commit 就可以一次性把暫存區(qū)的所有提交修改到分支闲延。提交完,stage就是干凈的韩玩。如果不用git add到暫存區(qū)stage垒玲,則不會加入到commit中。
添加一個文件并提交
git add readme.md
git commit -m "a new readme file "
添加多個文件并提交
git add file1.txt
git add file2.text file3.txt
git commit -m "add 3 files"
添加所有文件并提交
git add .
git add file2.text file3.txt
git commit -m "add all files"
- git status 查看倉庫的當前狀態(tài)(很重要)找颓;
- git diff <yourfilename> 查看修改的不同之處
- git log 命令顯示從最近到最遠的提交日志
- git reset 退回到之前的版本
退回到上個版本:HEAD表示當前版本合愈,HEAD^表示上個版本,HEAD^^表示上上個版本击狮,HEAD~100表示上100個版本佛析。
git reset --hard HEAD^
回到特定的commit id h
git reset --hard <commit id> 例如1094a
- git reflog 來記錄每一次的操作指令,通過這個可以查看之前的commit id號
- git rm:來刪除文件彪蓬,同時還會將這個刪除操作記錄下來寸莫;如果手動刪了文件夾里面的文件,然后需要同步到git上的版本庫的話就用git rm 然后提交档冬。如果確實是刪錯了的話就用git checkout --test.txt來把誤刪的文件恢復到最新的版本膘茎。
刪除工作區(qū)文件:
bash下執(zhí)行刪除指令
rm README.md
確定也要把版本庫里的也刪除:
git rm README.md
git commit -n "remove README.md"
如果刪錯了想從版本庫里面找回
git checkout -- README.md
git 分支管理
創(chuàng)建和合并分支
- 創(chuàng)建dev分支 然后切換到dev分支,git checkout 加-b的參數表示創(chuàng)建并切換。
git checkout -b dev
相當于:
git branch dev
git checkout dev
- 用git branch 命令來查看當前的分支酷誓,這個命令會列出所有分支披坏,當前分支前會有一個※號
- 切換分支采用 git checkout master
- 合并分支的內容到master上 git merge dev
- 刪除branch: git branch -d dev
stash分支存儲
- GIt提供了一個stash功能,可以把當前的工作現場儲藏起來盐数,等以后恢復現場后繼續(xù)工作
- git stash 把當前分支例如dev工作現場儲存
- 儲存完后用git status查看工作區(qū)是干凈的棒拂,選擇master分支,從master臨時創(chuàng)建分支:
git checkout master
git checkout -b issue-101
- 修改完后提交
git add README.md
git commit -m "fix the readme"
- 修改完成后 切換到master分支合并玫氢,并刪除issue-101分支
git checkout master
git merge --no-ff -m "merged issue-101" issue-101
- 回到dev分支干活
git checkout dev
查看工作狀態(tài)
git status
- 發(fā)現工作現場是干凈的 用git stash list命令查看存儲的內容
- 恢復:git stash apply 恢復后stash內容不刪除帚屉,可以用git stash drop來刪除;git stash pop 恢復的同時把stash內容也刪除了琐旁;
恢復指定的stash
git stash apply stash@{0}
標簽
創(chuàng)建標簽
- 切換到需要標簽的分支上打上標簽涮阔,比如版本號v7.7
git branch
git checkout master
git tag <name>
- 用git tag 查看所有標簽
- 用git show <tagname>來查看標簽信息
還可以創(chuàng)建帶有說明的標簽,用-a指定標簽名灰殴,-m指定說明文字
git tag -a v0.1 -m "version 0.1 released" 1094adb
操作標簽
- 命令git push origin <tagname>可以推送一個本地標簽敬特;
- 命令git push origin --tags可以推送全部未推送過的本地標簽掰邢;
- 命令git tag -d <tagname>可以刪除一個本地標簽
- 命令git push origin :refs/tags/<tagname>可以刪除一個遠程標簽
配置
- 每個倉庫的git的配置文件在.git/config中,可以適當地配置
- 當前用戶的git配置文件在用戶主目錄下的一個隱藏文件.gitconfig中
Github 使用入門
Git是linux之父在05年用了整整兩個禮拜的時間寫的一個分布式版本控制系統(tǒng)伟阔,而github是一個08年上線的遠程倉庫辣之,免費給開發(fā)者進行代碼托管。
關聯(lián)SSH秘鑰
本地git和github的倉庫傳輸可以通過很多傳輸協(xié)議加密皱炉,其中有SSH加密以及http加密等怀估,http每次push內容到github的時候總是需要輸入用戶名和密碼,而且速度相對于SSH沒有優(yōu)勢合搅。
- 創(chuàng)建SSH Key 在用戶主目錄下多搀,看有沒有~/.ssh目錄下有沒有id_rsa和id_rsa.pub文件,id_rsa是私鑰灾部,id_rsa.pub是公鑰康铭,如果有就跳過這一步。
設置username和email 用于方便github記錄commit的內容
git config --global user.name "your name"
git config --global user.email "your email"
創(chuàng)建SSH key
ssh-keygen -t rsa -C "youremail@example.com"
- 把公鑰粘貼到Github Account settings中 SSH Keys的設置里赌髓。
- 添加多個鑰匙的好處就是可以允許多個電腦來推送改動从藤,也可以不用SSH但是每次推送都要輸入用戶名密碼。
關聯(lián)遠程和本地倉庫
- 首先在github上創(chuàng)建一個repository
- 把本地的倉庫關聯(lián)到github上的倉庫.其中origin是遠程庫的默認的名字git@.... 加你在github上生成的ssh地址
在本地倉庫的目錄下:
git remote add origin git@.....
- 把本地庫的所有內容推送到遠程庫,git push命令實際上是把當前分支master推送到遠程 -u指令可以不但會把本地master分支內容推送到遠程新的master分支锁蠕,還會把本地的master分支和遠程的master分支關聯(lián)起來夷野。
git push -u origin master
- 以后只要本地做了提交,就可以通過命令git push origin master 推送給Github
使用示例
有個本地的文件夾里面有很多子目錄和代碼荣倾,想要關聯(lián)到github上創(chuàng)建的repository中
cd ~/bala //進入到你的文件夾中
git init //把該文件夾變成git管理的倉庫
git add . //添加主文件夾所有子目錄和文件
git commit -m "first commit"
git remote add origin git@github.com:..... //關聯(lián)github上創(chuàng)建的遠程的repository
git push -u origin master //把本地內容push到github上
- 如果push的時候報錯悯搔,很可能是github上創(chuàng)建repository時候生成了一個README.md,導致遠程倉庫和本地倉庫沖突
1.強制push
git push -u origin master -f 這樣會導致遠程修改丟失
2.先將遠程的倉庫pull下來逃呼,再push
git pull origin master
git push -u origin master
從遠程庫克隆
- 看到牛人的牛代碼就git clone 把