一、Git基本原理圖
二邮屁、Git基礎(chǔ)操作
- 配置用戶名和郵箱 :
// 全局配置
$ 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"
- 創(chuàng)建版本庫:
// 創(chuàng)建本地倉庫目錄
$ mkdir [local_repository_name]
// 進(jìn)入創(chuàng)建的目錄
$ cd [local_repository_name]
// 初始化當(dāng)前目錄為Git本地倉庫
$ git init
// 新建一個目錄,將其初始化為 Git 代碼庫(與上面三個命令等價)
$ git init [project-name]
// 下載一個項目和它的整個代碼歷史
$ git clone [url]
- 添加到本地暫存區(qū)(Index / Stage):
// 添加當(dāng)前目錄的所有文件到暫存區(qū)
$ git add .
// 添加指定文件到暫存區(qū)
$ git add [file1] [file2] ...
// 添加指定目錄到暫存區(qū)污茵,包括子目錄
$ git add [dir]
- 添加到本地倉庫(Repository):
$ git commit -m "[Your update information]"
- 版本回退:
// 回到當(dāng)前版本
$ git reset --hard HEAD
// 回退一個版本
$ git reset --hard HEAD^
// 回退連個版本
$ git reset --hard HEAD^^
// 回退N個版本
$ git reset --hard HEAD~N
// 回退任意版本
$ git reset --hard [commit_id]
- 起別名 :
// 起別名語法
$ 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分支與合并操作
- 重命名本地分支 :
$ git branch -m [old__branch_name] [new_branch_name]
- 切換本地分支 :
$ git checkout [branch_name]
- 創(chuàng)建分支 :
$ git branch [branch_name]
- 創(chuàng)建并切換到創(chuàng)建的分支 :
$ git branch -b [branch_name]
- 查看分支 :
// 1. 查看所有分支
$ git branch -a
// 2. 查看本地分支
$ git branch
// 3. 所有遠(yuǎn)程分支
$ git branch -r
- 推送本地分支[local-branch]到遠(yuǎn)程分支[remote-branch]并建立關(guān)聯(lián)關(guān)系 :
// 1. 遠(yuǎn)程已有分支,并且已經(jīng)關(guān)聯(lián)本地分支且本地已經(jīng)切換到要推送的分支
$ git push
// 2. 遠(yuǎn)程已有分支,但未關(guān)聯(lián)本地分支且本地已經(jīng)切換到要推送的分支
$ git push -u origin/[remote-branch]
// 3. 遠(yuǎn)程沒有分支并,本地已經(jīng)切換到要推送的分支
$ git push origin [local-branch]:[remote-branch]
- 刪除分支:
// 刪除本地分支
$ git branch -d [branch-name]
// 刪除遠(yuǎn)程分支
$ git push origin --delete [branch-name]
- 合并某分支到當(dāng)前分支:
git merge [name]
三泞当、Git標(biāo)簽操作
- 查看標(biāo)簽tag:
// 列出所有 tag
$ git tag
// 查看 tag 信息
$ git show [tag name]
- 新建標(biāo)簽tag:
// 新建一個 tag 在當(dāng)前 commit id
$ git tag [tag name]
// 新建一個 tag 在指定 commit id
$ git tag [tag name] [commit id]
// 新建一個分支迹蛤,指向某個 tag
$ git checkout -b [branch] [tag]
- 提交標(biāo)簽tag:
// 提交指定標(biāo)簽到遠(yuǎn)程
$ git push origin [tag]
// 提交所有 tag
$ git push origin --tags
- 新建標(biāo)簽tag:
// 刪除本地倉庫標(biāo)簽
$ git tag -d [tag name]
// 刪除遠(yuǎn)程倉庫標(biāo)簽
$ git tag -d [tag name] // 先刪除本地
$ git push origin :refs/tags/[tag name]// 刪除遠(yuǎn)程
四、Git遠(yuǎn)程倉庫配置
- 生成本地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 根據(jù)不同平臺終端執(zhí)行上面命令,Enter襟士。
2 終端提示
Enter file in which to save the key (/Users/Macro/.ssh/id_rsa):
3 注意,對生成定的秘鑰進(jìn)行重命名,輸入名稱:name_rsa,Enter盗飒。
4 然后輸入密碼 密碼可以為空(推薦為空),Enter。
- 獲取本地rsa秘鑰:
$ open name_rsa.pub
// 或者
$ cat name_rsa.pub
復(fù)制私鑰添加到對應(yīng)平臺的 sshkey 中
- 多平臺賬號配置:
$ cd ~/.ssh
$ touch config
按照以下格式添加配置文件
Host git.coding.net // host網(wǎng)址
User xxxx@email.com // 用戶郵箱
PreferredAuthentications publickey // 不變
IdentityFile ~/.ssh/coding_rsa // 生成的非默認(rèn)地址的公鑰存放點
- 檢測是否連接成功:
$ ssh -T git@github.com // github
$ ssh -T git@gitlab.com // gitlab
$ ssh -T git@git.coding.net // coding
四陋桂、.gitignore 規(guī)則
在git中如果想忽略掉某個文件逆趣,不讓這個文件提交到版本庫中,可以使用修改根目錄中 .gitignore 文件的方法(如無嗜历,則需自己手工建立此文件)宣渗。這個文件每一行保存了一個匹配的規(guī)則例如:
# 此為注釋 – 將被 Git 忽略
*.a # 忽略所有 .a 結(jié)尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
規(guī)則很簡單梨州,不做過多解釋痕囱,但是有時候在項目開發(fā)過程中,突然心血來潮想把某些目錄或文件加入忽略規(guī)則暴匠,按照上述方法定義后發(fā)現(xiàn)并未生效鞍恢,原因是.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經(jīng)被納入了版本管理中每窖,則修改.gitignore是無效的帮掉。那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
Xcode swift 標(biāo)準(zhǔn)
https://github.com/github/gitignore/blob/master/Swift.gitignore
參考文章: