天天看點

git代碼協同管理工具

代碼協同管理工具

SVN   GIT

什麼是git

git是一個開源的分布式版本控制系統。用于高效靈活的管理大小項目代碼。

git特點

* git 可以管理各種檔案,特别是代碼項目。多使用在*nix系統中

* 是分布式管理,不同于集中管理。這是git和svn的核心差別

* 更好的支援分支

* 擁有全球唯一的版本号

* 代碼安全性更加有保證

* 開源友善,資料傳輸速度更快,可以無網絡操作

集中式和分布式

集中式 : 代碼集中管理,需要上傳到中央伺服器。每次更新都從中央伺服器下載下傳。 (svn)

分布式 : 每個節點都儲存完整的代碼,沒有中央伺服器。節點之間互相推送下載下傳完成代碼共享。 (git)

git的安裝

linux下

sudo apt-get install  git

windows : msysgit.github.io

git的配置

git配置工具 :  git config

配置級别

1. 系統中所有使用者都使用 

   /etc/gitconfig 檔案

   配置姓名

   git  config  --system  user.email [youremail]

   e.g.

   sudo git config --system user.email [email protected]

2. 作用于目前使用者

   ~/.gitconfig 檔案

    配置郵箱

    git  config  --global  user.name [yourname]

    e.g.

    sudo git config --global user.name Levi

3.  作用于目前項目倉庫 

     .git/config

     配置編譯器

     git config core.editor  [youreditor]

     e.g.

     git config core.editor  vim

檢視配置資訊

git config  --list

git 指令

* 初始化git倉庫

git  init 

将需要git管理的代碼寫在git倉庫(目錄)中

* 檢視目前分支狀态

git  status

預設在git的主分支 master上工作

* 将檔案送出到暫存區

git  add   file1,file2

* 删除暫存區中的檔案

git rm --cached file  

* 将暫存區内容儲存送出

git commit  -m  ‘some message’

e.g. git commit -m  "add a file:README.txt"

* 檢視送出日志

git log

git log --pretty=oneline  每個之日隻顯示一行

* 檢視目前檔案和已送出内容的差别

git  diff   file

e.g.

git diff README.txt

* 恢複誤删的檔案

git checkout file

e.g.

git checkout README.txt

檔案的移動删除

 git mv test/file.config  .

 git rm file.config 

操作後需要commit操作才真正讓git和目前檔案夾一緻

版本控制

* 回到上一個版本

git reset  --hard  HEAD^

回到上一個版本就一個 ^  回到上兩個版本就兩個^^

超過10 就 HEAD~10

直接通過commit_id 前7位調到某個版本

git reset  --hard  7764c27

*去往較新的版本

當退回到某個版本後,比其新的版本log就無法通過git log檢視 此時使用git  reflog檢視,然後通過

git reset --hard  去往指定版本

git reflog

* 放棄工作區内容修改

git checkout -- file

e.g.

git checkout -- README.txt

* 建立臨時儲存工作區

内容暫時儲存不想送出 (沒有commit的情況下,如果已經commit就沒有意義了)

git stash

檢視現有儲存的工作區

git  stash  list

恢複到某個工作區

git stash apply  [email protected]{2}

恢複并删除上一個工作區

git stash  pop

删除指定的工作區

git stash drop  [email protected]{0}

清除工作區

git stash clear

分支操作

什麼是分支

分支即每個人可以擷取代碼,在此基礎上建立自己的分支單獨開發,不用考慮别人對代碼的使用情況。開發完成後再将自己的分支合并到主線中。

好處 : 安全,不影響其他人工作,自己控制進度

檢視目前分支

git branch

注意 : 前面有*的表示目前正在工作的分支 預設為master

建立新的分支

git branch dev_Tom

切換工作分支

git checkout dev_Tom

建立并切換到新的分支

git checkout -b dev_Jame

将某個分支合并到目前分支

 git merge dev_Tom

删除分支 

-D為強制删除,沒有被合并的分支不允許用-d删除

git branch -d dev_Tom

git branch -D dev_Jame

檢視操作流程

git log  --graph

标簽管理

什麼是标簽 : 即再目前工作位置增加快照,儲存工作狀态。一般用于重要裡程碑事件後添加标簽

建立标簽

在最新的commit上打标簽

git  tag   v1.0  

選擇commit_id打标簽

git  tag  v0.9  6224637

檢視标簽

git  tag

檢視标簽的 commit 說明

git show v0.9

用-a指定标簽名稱  -m添加标簽資訊

git tag -a v1.1 -m 'version 1.1 released' [commit_id]

删除标簽

git tag -d v0.9

恢複到指定标簽版本

git  reset  --hard  v1.0

建立共享倉庫

1. 建立一個檔案夾

   mkdir  gitrepo

2. 設定檔案夾的使用者所屬

   chown  tarena:tarena  gitrepo

3. 進入檔案夾,建立為git倉庫

   cd  gitrepo

   git init --bare  project.git

4. 一般項目名稱都以.git結尾,設定該目錄使用者

   chown -R tarena:tarena project.git

添加遠端倉庫

git remote add origin [email protected]:/home/tarena/gitrepo/project.git

向遠端倉庫推送代碼

git push -u origin master

* 第一次推送代碼時加  -u 選項

擷取項目代碼 

連接配接遠端共享倉庫

git remote add origin [email protected]:/home/tarena/gitrepo/project.git

将項目克隆到本地

git clone [email protected]:/home/tarena/gitrepo/project.git

其他推送指令

推送其他分支

git push origin dev_Jame

推送标簽到遠端倉庫

git push origin --tags  推送所有标簽

git push origin v1.0  推送指定标簽

删除遠端分支

git push  -u  origin :dev_Jame

删除标簽

git push  origin --delete tag v1.0

其他擷取遠端倉庫代碼指令

擷取新的分支和标簽

git fetch origin

擷取更新的代碼

git pull

github

08年上線的一個開源社群,使用git作為項目代碼管理工具