1. 程式人生 > >GIT的安裝及git狀態的變更詳解

GIT的安裝及git狀態的變更詳解

管理 新增 update -c git bash bubuko AS open perl

一.安裝git環境

(2)Git安裝

Centos:

yum install -y git  

Ubuntu:

apt-get install git

Windows安裝git bash軟件

註意不要使用git 1.8以下版本,推薦使用2.7版本,yum安裝默認為1.8的版本。

二.使用源碼編譯安裝

1、安裝依賴

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

2.下載git,並解壓

wget https://github.com/git/git/archive/v2.7.4.zip
unzip v2.7.4.zip
cd git-2.7.4

3.安裝執行

make prefix=/usr/local/git all
make prefix=/usr/local/git install
rm -rf /usr/bin/git
ln -s /usr/local/git/bin/git /usr/bin/git
[root@7mini-node1 ~]# git --version
git version 2.7.4

三.GIT的簡單操作

3.1 初始化倉庫

可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了。

技術分享圖片

[root@linux-node1 ~]# mkdir test
[root@linux-node1 ~]# cd test
[root@7mini-node1 test]# git init    #將test目錄初始化代碼倉庫
[root@7mini-node1 test]# git config --global user.name "xuli"                  #創建倉庫用戶
[root@7mini-node1 test]# git config --global user.email "[email protected]"  
[root@7mini-node1 test]#  git config --list
user.name=xuli
[email protected]
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

  

3.2 GIT的四個區和五種狀態的順序

四個區
工作區(Working Area)
暫存區(Stage)
本地倉庫(Local Repository)
遠程倉庫(Remote Repository)

五種狀態
未修改(Origin)
已修改(Modified)&未追蹤(Untracked)
已暫存(Staged)
已提交(Committed)
已推送(Pushed)

技術分享圖片

順序操作
第零步:工作區與倉庫保持一致
第一步:文件增刪改,變為已修改狀態
第二步:git add ,變為已暫存狀態

$ git add --all # 當前項目下的所有更改
$ git add .  # 當前目錄下的所有更改
$ git add xx/xx.py xx/xx2.py  # 添加某幾個文件

第三步:git commit,變為已提交狀態

$ git commit -m"<這裏寫commit的描述>"

第四步:git push,變為已推送狀態

$ git push -u origin master # 第一次需要關聯上
$ git push # 之後再推送就不用指明應該推送的遠程分支了
$ git branch # 可以查看本地倉庫的分支
$ git branch -a # 可以查看本地倉庫和本地遠程倉庫(遠程倉庫的本地鏡像)的所有分支

技術分享圖片

五種狀態間的撤銷操作

已修改,但未暫存

$ git diff # 列出所有的修改
$ git diff xx/xx.py xx/xx2.py # 列出某(幾)個文件的修改
$ git checkout # 撤銷項目下所有的修改
$ git checkout . # 撤銷當前文件夾下所有的修改
$ git checkout xx/xx.py xx/xx2.py # 撤銷某幾個文件的修改
$ git clean -f # untracked狀態,撤銷新增的文件
$ git clean -df # untracked狀態,撤銷新增的文件和文件夾

# Untracked files:
#  (use "git add <file>..." to include in what will be committed)
#
#	xxx.py

已暫存,未提交

這個時候已經執行過git add,但未執行git commit,但是用git diff已經看不到任何修改。因為git diff檢查的是工作區與暫存區之間的差異。

$ git diff --cached # 這個命令顯示暫存區和本地倉庫的差異
$ git reset  # 暫存區的修改恢復到工作區
$ git reset --soft # 與git reset等價,回到已修改狀態,修改的內容仍然在工作區中
$ git reset --hard # 回到未修改狀態,清空暫存區和工作區
git reset --hard 操作等價於 git reset 和 git checkout 2步操作

已提交,未推送

執行完commit之後,會在倉庫中生成一個版本號(hash值),標誌這次提交。之後任何時候,都可以借助這個hash值回退到這次提交。 
$ git diff <branch-name1> <branch-name2> # 比較2個分支之間的差異
$ git diff master origin/master # 查看本地倉庫與本地遠程倉庫的差異
$ git reset --hard origin/master # 回退與本地遠程倉庫一致
$ git reset --hard HEAD^ # 回退到本地倉庫上一個版本
$ git reset --hard <hash code> # 回退到任意版本
$ git reset --soft/git reset # 回退且回到已修改狀態,修改仍保留在工作區中。 

已推送到遠程

$ git push -f orgin master # 強制覆蓋遠程分支
$ git push -f # 如果之前已經用 -u 關聯過,則可省略分支名

  慎用,一般情況下,本地分支比遠程要新,所以可以直接推送到遠程,但有時推送到遠程後發現有問題,進行了版本回退,舊版本或者分叉版本推送到遠程,需要添加 -f參數,表示強制覆蓋。

總結

  • 首先,先用git status查看下當前狀態。
  • git reset可以作用於本地倉庫,用於回退/前進到任意版本,也可以作用於暫存區,用於撤銷暫存區修改。有hard和soft2個參數。soft參數可以省略,soft參數表示撤銷的修改仍放在工作區中。
  • git checkout用於撤銷刪除和修改,git clean -df用於撤銷新增。
  • git diff可以查看工作區、暫存區、倉庫之間的修改和差異,參數不同。

3.3 GIT的常用命令

git add  加入暫存
git status  查看狀態
git status -s  狀態概覽
git diff  尚未暫存的文件
git diff --staged  暫存區文件
git commit  提交更新
git reset  回滾
git rm  從版本庫中移除
git rm --cached README  從暫存區中移除
git mv 相當於mv git rm git add 三個命令

  

 

 

GIT的安裝及git狀態的變更詳解