git學(xué)習(xí)命令

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具體命令

  1. (可以先切換到自己想要創(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倉庫叼旋。

  1. 初始化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命令移除這個緩存

  1. 用命令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ū)
  1. 用命令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是真正的提交。這樣做可以防止錯誤提交蹬音。

  1. 理解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提交代碼

  1. SSH
    是一種網(wǎng)絡(luò)協(xié)議,用于計算機之間的加密登錄屠升。在提交代碼到github之前需要先添加SSH key設(shè)置潮改。
  2. 生成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)成功才可以提交代碼

  1. 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.
  1. push & pull
    push:將本地代碼“推”到Github遠程倉庫上以保持本地和遠程同步习劫。
    pull:將遠程倉庫的最新代碼“拉”到本地倉庫中咆瘟。
  2. 提交代碼
    第一種方法:在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)。
剩下步驟跟第一種方法一樣啦^^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闸天,一起剝皮案震驚了整個濱河市暖呕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苞氮,老刑警劉巖湾揽,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笼吟,居然都是意外死亡库物,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門贷帮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戚揭,“玉大人,你說我怎么就攤上這事撵枢∶裆梗” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵锄禽,是天一觀的道長潜必。 經(jīng)常有香客問我,道長沃但,這世上最難降的妖魔是什么磁滚? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮宵晚,結(jié)果婚禮上垂攘,老公的妹妹穿的比我還像新娘。我一直安慰自己淤刃,他們只是感情好晒他,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钝凶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唁影。 梳的紋絲不亂的頭發(fā)上耕陷,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音据沈,去河邊找鬼哟沫。 笑死,一個胖子當(dāng)著我的面吹牛锌介,可吹牛的內(nèi)容都是我干的嗜诀。 我是一名探鬼主播猾警,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隆敢!你這毒婦竟也來了发皿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拂蝎,失蹤者是張志新(化名)和其女友劉穎穴墅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體温自,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡玄货,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了悼泌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片松捉。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖馆里,靈堂內(nèi)的尸體忽然破棺而出隘世,到底是詐尸還是另有隱情,我是刑警寧澤也拜,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布以舒,位于F島的核電站,受9級特大地震影響慢哈,放射性物質(zhì)發(fā)生泄漏蔓钟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一卵贱、第九天 我趴在偏房一處隱蔽的房頂上張望滥沫。 院中可真熱鬧,春花似錦键俱、人聲如沸兰绣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缀辩。三九已至,卻和暖如春踪央,著一層夾襖步出監(jiān)牢的瞬間臀玄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工畅蹂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留健无,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓液斜,卻偏偏與公主長得像累贤,于是被迫代替她去往敵國和親叠穆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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