git簡單使用(一)

細節詳見網址:https://www.liaoxuefeng.com/wiki/896043488029600/896067074338496css

一、在Linux上安裝Git python

嘗試有沒有git $git git

安裝 ./configmakesudo make install 依次幾個命令sql

建立版本庫

版本庫又名倉庫,英文名repository ruby

建立一個空目錄:app

$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit
第二步,經過git init命令把這個目錄變成Git能夠管理的倉庫:
git init
若是你沒有看到目錄,那是由於這個目錄默認是隱藏的,用命令就能夠看見

第一步,用命令告訴Git,把文件添加到倉庫:$ git init Initialized empty Git repository in /Users/michael/learngit/.git/
.gitls -ahgit add
$ git add readme.txt
第二步,用命令git commit告訴Git,把文件提交到倉庫:
git commit


簡單解釋一下命令,後面輸入的是本次提交的說明,能夠輸入任意內容,固然最好是有意義的,這樣你就能從歷史記錄裏方便地找到改動記錄。
命令可讓咱們時刻掌握倉庫當前的狀態,上面的命令輸出告訴咱們,被修改過了,但尚未準備提交的修改。$ git commit -m "wrote a readme file" [master (root-commit) eaadf4e] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txtgit commit-mgit statusreadme.txt
$ git status

雖然Git告訴咱們被修改了,但若是能看看具體修改了什麼內容,天然是很好的。好比你休假兩週從國外回來,第一天上班時,已經記不清上次怎麼修改的,因此,須要用這個命令看看:readme.txtreadme.txtgit diff
$ git diff readme.txt 

版本控制系統確定有某個命令能夠告訴咱們歷史記錄,在Git中,咱們用git log命令查看:git log

命令顯示從最近到最遠的提交日誌
若是嫌輸出信息太多,看得眼花繚亂的,能夠試試加上參數:$ git loggit log--pretty=oneline


版本回退:
首先,Git必須知道當前版本是哪一個版本,在Git中,用表示當前版本,也就是最新的提交(注意個人提交ID和你的確定不同),上一個版本就是,上上一個版本就是,
固然往上100個版本寫100個比較容易數不過來,因此寫成。
如今,咱們要把當前版本回退到上一個版本,就可使用命令:$ git log --pretty=onelineHEAD1094adb...HEAD^HEAD^^^HEAD~100append GPLadd distributedgit reset

查看是否是回到那個版本:$ git reset --hard HEAD^
$ cat readme.txt
還能夠繼續回退到上一個版本wrote a readme file,不過且慢,然咱們用git log再看看如今版本庫的狀態wrote a readme filegit log
$ git log
最新的那個版本已經看不到了!比如你從21世紀坐時光穿梭機來到了19世紀,想再回去已經回不去了,腫麼辦?
辦法其實仍是有的,只要上面的命令行窗口尚未被關掉,你就能夠順着往上找啊找啊,找到那個的是,因而就能夠指定回到將來的某個版本:append GPLappend GPLcommit id1094adb...
$ git reset --hard 1094a
當你用回退到版本時,再想恢復到,就必須找到的commit id。Git提供了一個命令用來記錄你的每一次命令:$ git reset --hard HEAD^add distributedappend GPLappend GPLgit reflog
$ git reflog

工做區(Working Directory)

版本庫(Repository)

Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲咱們自動建立的第一個分支master,以及指向master的一個指針叫HEADspa

前面講了咱們把文件往Git版本庫裏添加的時候,是分兩步執行的:命令行

第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;版本控制

第二步是用git commit提交更改,實際上就是把暫存區的全部內容提交到當前分支。指針

由於咱們建立Git版本庫時,Git自動爲咱們建立了惟一一個master分支,因此,如今,git commit就是往master分支上提交更改。

撤銷修改

Git會告訴你,git checkout -- file能夠丟棄工做區的修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工做區的修改所有撤銷,這裏有兩種狀況:

一種是readme.txt自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;

一種是readme.txt已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。

總之,就是讓這個文件回到最近一次git commitgit add時的狀

git checkout -- file命令中的--很重要,沒有--,就變成了「切換到另外一個分支」的命令,咱們在後面的分支管理中會再次遇到git checkout命令。

如今假定是凌晨3點,你不但寫了一些胡話,還git add到暫存區了:

$ git add readme.txt

慶幸的是,在commit以前,你發現了這個問題。用git status查看一下,修改只是添加到了暫存區,尚未提交:


Git一樣告訴咱們,用命令能夠把暫存區的修改撤銷掉(unstage),從新放回工做區:$ git statusgit reset HEAD <file>

命令既能夠回退版本,也能夠把暫存區的修改回退到工做區。當咱們用時,表示最新的版本。

還記得如何丟棄工做區的修改嗎?$ git reset HEAD readme.txtgit resetHEAD
$ git checkout -- readme.txt 看看狀態 $ git status
如今,假設你不但改錯了東西,還從暫存區提交到了版本庫,怎麼辦呢?還記得版本回退一節嗎?能夠回退到上一個版本。不過,這是有條件的,就是你尚未把本身的本地版本庫推送到遠程。

刪除文件

通常狀況下,你一般直接在文件管理器中把沒用的文件刪了,或者用rm命令刪了:

$ rm test.txt

這個時候,Git知道你刪除了文件,所以,工做區和版本庫就不一致了,git status命令會馬上告訴你哪些文件被刪除了:


如今你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令刪掉,而且:$ git statusgit rmgit commit
$ git rm test.txt


$ git commit -m "remove test.txt"

另外一種狀況是刪錯了,由於版本庫裏還有呢,因此能夠很輕鬆地把誤刪的文件恢復到最新版本:

$ git checkout -- test.txt 

git checkout實際上是用版本庫裏的版本替換工做區的版本,不管工做區是修改仍是刪除,均可以「一鍵還原」。

相關文章
相關標籤/搜索