1. linux下git安裝
$ apt-get install git
E: 無法打開鎖文件 /var/lib/dpkg/lock - open (13: 權(quán)限不夠)
E: 無法對狀態(tài)列表目錄加鎖(/var/lib/dpkg/)构拳,請查看您是否正以 root 用戶運行?
總是犯這種低級錯誤梁棠,apt-get命令需要管理員身份才行置森,是下面這個:
$ sudo apt-get install git
[sudo] ×××的密碼:
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關(guān)系樹
正在讀取狀態(tài)信息... 完成
建議安裝:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk
gitweb git-arch git-cvs git-mediawiki git-svn
下列軟件包將被升級:
git
升級了 1 個軟件包,新安裝了 0 個軟件包符糊,要卸載 0 個軟件包凫海,有 96 個軟件包未被升級。
需要下載 0 B/3,102 kB 的歸檔男娄。
解壓縮后會消耗 0 B 的額外空間行贪。
(正在讀取數(shù)據(jù)庫 ... 系統(tǒng)當(dāng)前共安裝有 253394 個文件和目錄。)
正準備解包 .../git_1%3a2.7.4-0ubuntu1.3_amd64.deb ...
正在將 git (1:2.7.4-0ubuntu1.3) 解包到 (1:2.7.4-0ubuntu1.2) 上 ...
正在設(shè)置 git (1:2.7.4-0ubuntu1.3) ...
如果出現(xiàn)了下面的模闲,就是已經(jīng)安裝完成:
$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
這些是各種場合常見的 Git 命令:
開始一個工作區(qū)(參見:git help tutorial)
clone 克隆一個倉庫到一個新目錄
init 創(chuàng)建一個空的 Git 倉庫或重新初始化一個已存在的倉庫
在當(dāng)前變更上工作(參見:git help everyday)
add 添加文件內(nèi)容至索引
mv 移動或重命名一個文件建瘫、目錄或符號鏈接
reset 重置當(dāng)前 HEAD 到指定狀態(tài)
rm 從工作區(qū)和索引中刪除文件
檢查歷史和狀態(tài)(參見:git help revisions)
bisect 通過二分查找定位引入 bug 的提交
grep 輸出和模式匹配的行
log 顯示提交日志
show 顯示各種類型的對象
status 顯示工作區(qū)狀態(tài)
擴展、標(biāo)記和調(diào)校您的歷史記錄
branch 列出尸折、創(chuàng)建或刪除分支
checkout 切換分支或恢復(fù)工作區(qū)文件
commit 記錄變更到倉庫
diff 顯示提交之間啰脚、提交和工作區(qū)之間等的差異
merge 合并兩個或更多開發(fā)歷史
rebase 本地提交轉(zhuǎn)移至更新后的上游分支中
tag 創(chuàng)建、列出实夹、刪除或校驗一個 GPG 簽名的標(biāo)簽對象
協(xié)同(參見:git help workflows)
fetch 從另外一個倉庫下載對象和引用
pull 獲取并整合另外的倉庫或一個本地分支
push 更新遠程引用和相關(guān)的對象
命令 'git help -a' 和 'git help -g' 顯示可用的子命令和一些概念幫助拣播。
查看 'git help <命令>' 或 'git help <概念>' 以獲取給定子命令或概念的
幫助。
2.git具體命令
- (可以先切換到自己想要創(chuàng)建的目錄位置)首先新建一個目錄收擦,在目錄中新建一個文件
$ mkdir MarkdownPhotos (創(chuàng)建目錄MarkdownPhotos)
$ cd MarkdownPhotos (切換到MarkdownPhotos目錄)
$ touch README.md (新建README.md文件)
Tips:在進行任何Git操作下贮配,首先切換到Git倉庫目錄,即切換到項目所在目錄下塞赂。
那么泪勒,怎么判斷這是不是一個Git倉庫呢?
隨便輸入一個git命令,比如:git status圆存,可看到下面的提示:
$ git statusfatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary
(GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
即當(dāng)前目錄并不是一個Git倉庫叼旋。
- 初始化git倉庫
$ git init
初始化空的 Git 倉庫于 /home/×××/workspace/MarkdownPhotos/.git/
隨便輸入一個命令測試下是否成功:
$ git status位于分支 master
初始提交
未跟蹤的文件:
(使用 "git add <文件>..." 以包含要提交的內(nèi)容)
README.md
提交為空,但是存在尚未跟蹤的文件(使用 "git add" 建立跟蹤)
成功沦辙!
默認就直接在master分支夫植,這里“未跟蹤的文件”表示README.md文件還沒有被提交到git倉庫中,后面還給出了提示油讯,說可以使用“git add”命令提交想要提交的文件详民。
git status
即查看狀態(tài)
下面先隨意在README.md文件中寫點東西再用git add提交和git status查看狀態(tài):
$ vim README.md (使用vim編輯器編輯文件)
$ git add README.md (提交文件到git倉庫)
$ git status (查看狀態(tài))
位于分支 master
初始提交
要提交的變更:
(使用 "git rm --cached <文件>..." 以取消暫存)
新文件: README.md
這里提示README.md文件等待被提交,可以使用git rm --cached命令移除這個緩存
- 用命令git commit提交信息(可以繼續(xù)用git status查看狀態(tài))
$ git commit -m 'first commit'
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
$ git config --global user.name "Yojiaku"
$ git config --global user.email "×××@××.com"
正式提交的時候出了問題陌兑,需要配置號自己的用戶名和郵箱沈跨。
接著,輸入命令:git commit -m 'first commit'提交兔综。
其中饿凛,commit是提交的意思,-m代表提交后面單引號中的信息软驰,執(zhí)行之后代表已經(jīng)正式進行了第一次提交涧窒,這個時候再輸
入git status,會提示:
位于分支 master
無文件要提交锭亏,干凈的工作區(qū)
- 用命令git log查看產(chǎn)生的commit提交信息
$ git log
commit 21067ed046a76880b453989016c3b1a9be777420
Author: Yojiaku <×××@××.com>
Date: Tue Oct 17 21:36:52 2017 +0800
first commit
可以看到已經(jīng)產(chǎn)生了一條commit記錄杀狡,而提交時候的附帶信息叫“first commit”。
git add & git commit
首先贰镣,git add先把改動添加到一個"暫存區(qū)",可以理解成一個緩沖區(qū)域膳凝,臨時保存改動碑隆;而git commit是真正的提交。這樣做可以防止錯誤提交蹬音。
- 理解git branch
branch是分支的意思上煤,即假設(shè)A,B做同一個項目著淆,A創(chuàng)建了一個分支叫a劫狠,B創(chuàng)建了一個分支叫b,這樣A永部,B做的所有代碼改動都在各自的分支中独泞,互不影響,等到兩人都把各自的模塊做完可以合起來苔埋。
執(zhí)行g(shù)it init初始化git倉庫時默認產(chǎn)生一個主分支master懦砂,可以輸入git branch查看分支情況。
$ git branch
* master
執(zhí)行g(shù)it branch jianshu 就新建了一個名字叫jianshu的分支
$ git branch jianshu
$ git branch jianshu
* master
$ git checkout jianshu
切換到分支 'jianshu'
用git checkout jianshu命令切換到j(luò)ianshu分支
git merge
要上線的時候需要把分支合并到主分支master上來。此命令就是合并的意思荞膘,需要先切換到master分支罚随,再執(zhí)行g(shù)it merge jianshu。
git branch -d 刪除分支羽资,當(dāng)分支新建錯誤或者已經(jīng)合并沒有用處時可以刪除淘菩。
3.向github提交代碼
- SSH
是一種網(wǎng)絡(luò)協(xié)議,用于計算機之間的加密登錄屠升。在提交代碼到github之前需要先添加SSH key設(shè)置潮改。 - 生成SSH key
linux都默認安裝了SSH,可以在終端下輸入ssh弥激,若出現(xiàn)下面的信息說明已經(jīng)安裝了SSH:
$ ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
接著輸入 ssh-keygen -t rsa 进陡,即制定rsa算法生成秘鑰,接著連續(xù)三個回車鍵(不需要輸入密碼)微服,會生成兩個文件"id_rsa"趾疚、"id_rsa.pub",前一個是秘鑰以蕴,后一個是公鑰糙麦。
后面就是將id_rsa.pub的內(nèi)容添加到Github上,這樣本地的id_rsa密鑰就能跟Github上的id_rsa.pub公鑰進行配對丛肮,授權(quán)成功才可以提交代碼
- 在 Github 上添加 SSH key
點擊頭像選中“settings”赡磅,找到側(cè)邊欄的 "SSH and GPG keys" ,然后選中右邊的 "New SSH key" 按鈕宝与,將 id_rsa.pub 文件中的公鑰復(fù)制進去(title不用填)
使用下面的命令查看id_rsa.pub文件
$ cd ~/.ssh
~/.ssh$ cat id_rsa.pub
SSH key添加成功后焚廊,輸入 ssh -T git@github.com 測試,如果出現(xiàn)下面的信息就成功了:
$ ssh -T git@github.com
Hi Yojiaku! You've successfully authenticated, but GitHub does not provide shell access.
- push & pull
push:將本地代碼“推”到Github遠程倉庫上以保持本地和遠程同步习劫。
pull:將遠程倉庫的最新代碼“拉”到本地倉庫中咆瘟。 - 提交代碼
第一種方法:在Github上先創(chuàng)建一個倉庫,然后clone到本地诽里,接著在本地修改完再push上去袒餐,如下:
~/workspace$ git clone git@github.com:Yojiaku/MarkdownPhotos.git
正克隆到 'MarkdownPhotos'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
接收對象中: 100% (3/3), 完成.
檢查連接... 完成。
注意這里有一個錯誤:應(yīng)先切換到倉庫目錄下再push
~/workspace$ git push origin master
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
~/workspace$ cd MarkdownPhotos
首先鏈接到遠程的git庫
~/workspace/MarkdownPhotos$ git remote add origin git@github.com:Yojiaku/MarkdownPhotos.git
開始提交
~/workspace/MarkdownPhotos$ git add . (把本地的文件全部添加下)
~/workspace/MarkdownPhotos$ git status (查看狀態(tài))
位于分支 master
您的分支與上游分支 'origin/master' 一致谤狡。
要提交的變更:
(使用 "git reset HEAD <文件>..." 以取消暫存)
新文件: jianshu/span.png
~/workspace/MarkdownPhotos$ git commit -m "新增簡書照片" (提交)
[master d0ed2ef] 新增簡書照片
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 jianshu/span.png
~/workspace/MarkdownPhotos$ git push -u origin master (提交到遠程)
對象計數(shù)中: 4, 完成.
Delta compression using up to 4 threads.
壓縮對象中: 100% (3/3), 完成.
寫入對象中: 100% (4/4), 1.60 KiB | 0 bytes/s, 完成.
Total 4 (delta 0), reused 0 (delta 0)
To git@github.com:Yojiaku/MarkdownPhotos.git
fc23857..d0ed2ef master -> master
分支 master 設(shè)置為跟蹤來自 origin 的遠程分支 master灸眼。
成功!
第二種方法
我們本地已經(jīng)有了一個MarkdownPhotos項目墓懂,我們就關(guān)聯(lián)本地已有項目就行了焰宣。
首先需要在github上建立一個項目(我這里就叫MarkdownPhotos),接下來就是進行關(guān)聯(lián):
$ git remote add origin git@github.com:Yojiaku/MarkdownPhotos.git
意思是添加一個遠程倉庫捕仔,它的地址是 $ git remote add origin git@github.com:Yojiaku/MarkdownPhotos.git 宛徊,而origin是給這個項目的遠程倉庫取的名字(可隨意取佛嬉,但是一般認為只有一個遠程倉庫時名字就是origin)。
剩下步驟跟第一種方法一樣啦^^