git/github使用完整教程(1)基础
安裝git
在Linux上安裝Git
首先輸入git,看看系統有沒有安裝Git:
$ git The program 'git' is currently not installed. You can install it by typing: sudo apt-get install git像上面的命令,有很多Linux會友好地告訴你Git沒有安裝,還會告訴你如何安裝Git。
如果是其他Linux版本,可以直接通過源碼安裝。先從Git官網下載源碼,然后解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了。
在Windows上使用Git,可以從Git官網直接下載安裝程序,然后按默認選項安裝即可。
安裝完成后,在開始菜單里找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!
安裝完成后,還需要最后一步設置,在命令行輸入:
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"創建庫
版本庫又名倉庫,你可以簡單理解成一個目錄,這個目錄里面所有文件都可以被Git管理,每個文件修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史。所以,創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄:
$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngitpwd命令用于顯示當前目錄。
?如果你使用Windows系統,為了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。
第二步,通過git init命令把這個目錄變成Git可以管理的倉庫:
$ git init Initialized empty Git repository in /Users/michael/learngit/.git/瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository)。
修改兩步走
編寫一個readme.txt文件,內容如下:
Git is a version control system. Git is free software.第一步,用命令git add告訴Git,把文件添加到倉庫:
$ git add readme.txt第二步,用命令git commit告訴Git,把文件提交到倉庫:
$ git commit -m "wrote a readme file" [master (root-commit) eaadf4e] wrote a readme file1 file changed, 2 insertions(+)create mode 100644 readme.txt-m后面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。
查看狀態
修改readme.txt文件,改成如下內容:
Git is a distributed version control system. Git is free software.運行git status命令看看結果:
$ 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: readme.txt no changes added to commit (use "git add" and/or "git commit -a")git status可以讓我們掌握倉庫當前的狀態,上面的命令輸出告訴我們,readme.txt被修改過了,但還沒有準備提交的修改。
Git會告訴你,git checkout -- file可以丟棄工作區的修改:
$ git checkout -- readme.txt命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這里有兩種情況:
一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。
總之,就是讓這個文件回到最近一次git commit或git add時的狀態。
具體修改了什么內容需要用git diff這個命令:
$ git diff readme.txt diff --git a/readme.txt b/readme.txt index 46d49bf..9247db6 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,2 @@ -Git is a version control system. +Git is a distributed version control system.Git is free software.git diff顧名思義就是查看difference,可以從上面的命令輸出看到,我們在第一行添加了一個distributed單詞。
?
知道了對readme.txt作了什么修改后,再把它提交到倉庫,是一樣的兩步,第一步是git add:
$ git add readme.txt我們再運行git status看看當前倉庫的狀態:
$ git status On branch master Changes to be committed:(use "git reset HEAD <file>..." to unstage)modified: readme.txtgit status告訴我們,將要被提交的修改包括readme.txt,下一步,就可以放心地提交了:
$ git commit -m "add distributed" [master e475afc] add distributed1 file changed, 1 insertion(+), 1 deletion(-)提交后,我們再用git status命令看看倉庫的當前狀態:
$ git status On branch master nothing to commit, working tree cleanGit告訴我們當前沒有需要提交的修改,而且,工作目錄是干凈(working tree clean)的。
版本
版本控制系統有命令可以告訴我們歷史記錄,在Git中,我們用git log命令查看:
$ git log commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) Author: Michael Liao <askxuefeng@gmail.com> Date: Fri May 18 21:06:15 2018 +0800append GPLcommit e475afc93c209a690c39c13a46716e8fa000c366 Author: Michael Liao <askxuefeng@gmail.com> Date: Fri May 18 21:03:36 2018 +0800add distributedcommit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 Author: Michael Liao <askxuefeng@gmail.com> Date: Fri May 18 20:59:18 2018 +0800wrote a readme filegit log命令顯示從最近到最遠的提交日志,我們可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。
如何回退?
在Git中,用HEAD表示當前版本,,上一個版本就是HEAD^,上上一個版本就是HEAD^^,往上100個版本可以寫成HEAD~100。
現在,我們要把當前版本append GPL回退到上一個版本add distributed,就可以使用git reset命令:
$ git reset --hard HEAD^ HEAD is now at e475afc add distributed要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。?
github SSH keys
實際情況往往是這樣,找一臺電腦充當服務器的角色,每天24小時開機,其他每個人都從這個“服務器”倉庫克隆一份到自己的電腦上,并且各自把各自的提交推送到服務器倉庫里,也從服務器倉庫中拉取別人的提交。
完全可以自己搭建一臺運行Git的服務器,不過現階段,只要注冊一個GitHub賬號,就可以免費獲得Git遠程倉庫。
由于你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以,需要一點設置:
第1步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可。
如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面:
然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容:
為什么GitHub需要SSH Key呢?GitHub需要識別出提交確實是你推送的,而不是冒充的,而Git支持SSH協議。當然,GitHub允許你添加多個Key。假定你有若干電腦,只要把每臺電腦的Key都添加到GitHub,就可以在每臺電腦上往GitHub推送了。
和github關聯
創建一個新的倉庫:
目前,在GitHub上的這個learngit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然后,把本地倉庫的內容推送到GitHub倉庫。
現在,我們根據GitHub的提示,在本地的learngit倉庫下運行命令:
$ git remote add origin git@github.com:yourname/learngit.git添加后,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。
下一步,就可以把本地庫的所有內容推送到遠程庫上:
$ git push -u origin master Counting objects: 20, done. Delta compression using up to 4 threads. Compressing objects: 100% (15/15), done. Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done. Total 20 (delta 5), reused 0 (delta 0) remote: Resolving deltas: 100% (5/5), done. To github.com:michaelliao/learngit.git* [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.把本地庫的內容推送到遠程,用git push命令,實際上是把當前分支master推送到遠程。
由于遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令。
$ git push origin master把本地master分支的最新修改推送至GitHub,現在,你就擁有了真正的分布式版本庫!
clone
用命令git clone克隆一個github庫到本地:
$ git clone git@github.com:yourname/gitskills.git Cloning into 'gitskills'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3 Receiving objects: 100% (3/3), done.如果有多個人協作開發,那么每個人各自從遠程克隆一份就可以了。
總結
以上是生活随笔為你收集整理的git/github使用完整教程(1)基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 普通发票有几联 普通发票一共有多少联
- 下一篇: 学习笔记10-C语言-小项目-五子棋