Git自由之章 - 本地倉庫的基本操做

簡述

Git 是目前很流行的版本控制工具,不少開發團隊在使用。本人也在使用這個工具,發覺相比於傳統的SVN,確實好用不少,並且它還有很大的自由屬性,這一點深得個人欣賞。此次的分享主要是分享關於Git的基礎,關於本地倉庫的基本操做。(不懂本地倉庫的概念能夠上網查一些關於 Git 的代碼倉庫的知識)git

Git基本原理圖

clipboard.png

Git基礎操做

  • 配置用戶名和郵箱 :github

// 全局配置 
$ git config --global user.name "Your Name"
$ git config --global user.email "Your@example.com"// 一次性配置
$ git config user.name "Your Name"
$ git config user.email "Your@example.com"
  • 建立版本庫:緩存

// 建立本地倉庫目錄
$ mkdir [local_repository_name]

// 進入建立的目錄
$ cd [local_repository_name]

// 初始化當前目錄爲Git本地倉庫
$ git init

// 新建一個目錄,將其初始化爲 Git 代碼庫(與上面三個命令等價)
$ git init [project-name]

// 下載一個項目和它的整個代碼歷史
$ git clone [url]
  • 添加到本地暫存區(Index / Stage):ssh

// 添加當前目錄的全部文件到暫存區
$ git add .

// 添加指定文件到暫存區
$ git add [file1] [file2] ...

// 添加指定目錄到暫存區,包括子目錄
$ git add [dir]
  • 添加到本地倉庫(Repository):工具

$ git commit -m "[Your update information]"
  • 版本回退:gitlab

// 回到當前版本
$ git reset --hard HEAD 

// 回退一個版本
$ git reset --hard HEAD^

// 回退連個版本 
$ git reset --hard HEAD^^ 

// 回退N個版本
$ git reset --hard HEAD~N 

// 回退任意版本
$ git reset --hard [commit_id]
  • 起別名 :ui

// 起別名語法
$ git config alias.[new_name] "[old_name]"

// cimmit起別名
$ git config alias.ci commit  給 commit 起一個別名叫 ci

// "commit -m"起別名
$ git config alias.ci "commit -m"  給commit起個別名 ci

// 喪心病狂的給 git log 起一個NB的別名
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Git分支與合併操做

  • 重命名本地分支 :url

$ git branch -m [old__branch_name] [new_branch_name]
  • 切換本地分支 :spa

$ git checkout [branch_name]
  • 建立分支 :.net

$ git branch [branch_name]
  • 查看分支 :

// 1. 查看全部分支 
$ git branch -a

// 2. 查看本地分支 
$ git branch 

// 3. 全部遠程分支
$ git branch -r
  • 推送本地分支[local-branch]到遠程分支[remote-branch]並創建關聯關係 :

// 1. 遠程已有分支,而且已經關聯本地分支且本地已經切換到要推送的分支
$ git push

// 2. 遠程已有分支,但未關聯本地分支且本地已經切換到要推送的分支
$ git push -u origin/[remote-branch]

// 3. 遠程沒有分支並,本地已經切換到要推送的分支
$ git push origin [local-branch]:[remote-branch]
  • 刪除分支:

// 刪除本地分支
$ git branch -d [branch-name]

// 刪除遠程分支
$ git push origin --delete [branch-name]
  • 合併某分支到當前分支:

git merge [name]

3、Git標籤操做

  • 查看標籤tag:

// 列出全部 tag
$ git tag

// 查看 tag 信息
$ git show [tag name]
  • 新建標籤tag:

// 新建一個 tag 在當前 commit id
$ git tag [tag name]

// 新建一個 tag 在指定 commit id
$ git tag [tag name] [commit id]

// 新建一個分支,指向某個 tag
$ git checkout -b [branch] [tag]
  • 提交標籤tag:

// 提交指定標籤到遠程
$ git push origin [tag]

// 提交全部 tag
$ git push origin --tags
  • 新建標籤tag:

// 刪除本地倉庫標籤 
$ git tag -d [tag name]

// 刪除遠程倉庫標籤 
$ git tag -d [tag name] // 先刪除本地
$ git push origin :refs/tags/[tag name]// 刪除遠程

Git遠程倉庫配置

  • 生成本地rsa祕鑰:

// 1. github/gitlab 生成rsa 的命令
$ ssh-keygen -t rsa -C "註冊的github(gitlab)郵箱"

// 2. coding/gitCafe 生成rsa 的命令
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
1 根據不一樣平臺終端執行上面命令,Enter。
2 終端提示Enter file in which to save the key (/Users/Macro/.ssh/id_rsa):
3 注意,對生成定的祕鑰進行重命名,輸入名稱:name_rsa,Enter。
4 而後輸入密碼 密碼能夠爲空(推薦爲空),Enter。
  • 獲取本地rsa祕鑰:

$ open name_rsa.pub  
// 或者
$ cat name_rsa.pub
複製私鑰添加到對應平臺的 sshkey 中
  • 多平臺帳號配置:

$ cd ~/.ssh
$ touch config
按照如下格式添加配置文件
Host git.coding.net // host網址
User xxxx@email.com // 用戶郵箱
PreferredAuthentications publickey // 不變
IdentityFile ~/.ssh/coding_rsa // 生成的非默認地址的公鑰存放點
  • 檢測是否鏈接成功:

$ ssh -T git@github.com     // github 
$ ssh -T git@gitlab.com    // gitlab
$ ssh -T git@git.coding.net // coding

.gitignore 規則

在git中若是想忽略掉某個文件,不讓這個文件提交到版本庫中,可使用修改根目錄中 .gitignore 文件的方法(如無,則需本身手工創建此文件)。

這個文件每一行保存了一個匹配的規則例如:

# 此爲註釋 – 將被 Git 忽略
*.a               # 忽略全部 .a 結尾的文件
!lib.a            # 但 lib.a 除外
/TODO       # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/      # 忽略 build/ 目錄下的全部文件
doc/*.txt   # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

有時候在項目開發過程當中,忽然心血來潮想把某些目錄或文件加入忽略規則,按照上述方法定義後發現並未生效,緣由是.gitignore只能忽略那些原來沒有被track的文件。

若是某些文件已經被歸入了版本管理中,則修改.gitignore是無效的。

那麼解決方法就是先把本地緩存刪除(改變成未track狀態),而後再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
相關文章
相關標籤/搜索