Git 是目前很流行的版本控制工具,不少開發團隊在使用。本人也在使用這個工具,發覺相比於傳統的SVN,確實好用不少,並且它還有很大的自由屬性,這一點深得個人欣賞。此次的分享主要是分享關於Git的基礎,關於本地倉庫的基本操做。(不懂本地倉庫的概念能夠上網查一些關於 Git 的代碼倉庫的知識)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"
重命名本地分支 :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]// 刪除遠程
生成本地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
在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'