2021-05-12 14:32:11
Git版本管理集錦
用慣了SVN,突然轉到Git難免有點不適,寫個筆記好好備忘總結一番。
一、先看歷史(imooc上的一個圖):
二、Git與Svn
Git跟SVN一樣有自己的集中式版本庫或伺服器。但,Git更傾向於被使用於分散式模式,也就是每個開發人員從中心版本庫/伺服器上chect out程式碼後會在自己的機器上克隆一個自己的版本庫。可以這樣說,如果你被困在一個不能連線網路的地方時,就像在飛機上,地下室,電梯裡等,你仍然能夠提交檔案,檢視歷史版本記錄,建立專案分支,等。對一些人來說,這好像沒多大用處,但當你突然遇到沒有網路的環境時,這個將解決你的大麻煩。
三、那什麼情況推薦使用svn
SVN具有的悲觀鎖的功能,能夠實現一個使用者在編輯時對檔案進行鎖定,阻止多人同時編輯 一個檔案。這一悲觀鎖的功能是 Git 所不具備的。對於以二進位制檔案 (Word文件、PPT簡報) 為主的版本庫,為避免多人同時編輯造成合併上的困難, 建議使用SVN做版本控制。
四、Git工作原理
五、git安裝設定
mac下實際無需安裝直接在命令視窗輸入git即可彈出安裝確認,這種方式安裝預設是安裝到/usr/bin目錄下,且不需要設定環境變數
另一種方式就是手動安裝dmg包,需要設定環境變數
官網下載:http://git-scm.com/download/mac
vi ~/.bash_profile
export PATH="/usr/local/git/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:$PATH"
source ~/.bash_profile
重新啟動一下終端,檢查是否安裝成功
git version
使用者資訊設定:
$ git config --global user.name "jager"
$ git config --global user.email jager@example.com
或 直接編輯組態檔:
vi ~/.gitconfig
[user]
name = jager
email = jager@example.com
[color]
ui = auto
branch = auto
diff = auto
status = auto
[color "branch"]
current = green
local = yellow
remote = red
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
[alias]
st = status
di = diff
ci = commit
co = checkout
br = branch
設定公私鑰:
== 生成git金鑰 == ssh-keygen -t rsa -C "jager@example.com" 秘鑰名稱填寫:git_rsa 其他預設即可 == 設定git金鑰 == vim ~/.ssh/config //增加以下內容,IdentityFile路徑為你生成的git私鑰檔案路徑 Host XXX User git IdentitiesOnly yes IdentityFile /Users/你的使用者名稱/.ssh/git_rsa == 設定公鑰 == 拷貝公鑰 pbcopy < ~/.ssh/git_rsa.pub 新增到git管理平台 == FAQ == 最後一步沒設定可能出現錯誤: Permission denied (publickey). fatal: Could not read from remote repository.
六、git常用命令
- workspace: 本地工作目錄
- index:快取區域,臨時儲存本地改動
- local repository: 本地倉庫
- remote repository:遠端倉庫
== git設定 == git config --list //檢視當前git的設定,Git的設定檔案為.gitconfig,它可以在使用者主目錄下(全域性設定),也可以在專案目錄下(專案設定) == 檢視資訊 == git log //檢視提交記錄 git status //檢視修改狀態 git diff //檢視詳細修改內容 git show //顯示某次提交的內容 git branch //列出所有本地分支 git tag //列出所有tag git reflog //顯示當前分支的最近幾次提交 == 新建程式碼庫 == git init //在當前目錄新建一個Git程式碼庫 git init [project-name] //新建一個目錄,將其初始化為Git程式碼庫 git clone [url] //下載一個專案和它的整個程式碼歷史 == 增加/刪除 == git add [file1] [file2] ... //新增指定檔案到暫存區 git add [dir] //新增指定目錄到暫存區,包括子目錄 git add . //新增當前目錄的所有檔案到暫存區 git rm [file1] [file2] ... //刪除工作區檔案,並且將這次刪除放入暫存區 git mv [file-original] [file-renamed] //改名檔案,並且將這個改名放入暫存區 == 程式碼提交 == git commit -m [message] //程式碼提交到本地倉庫 git commit [file1] [file2] ... -m [message] //提交指定檔案到本地倉庫 git commit -a //提交工作區自上次commit之後的變化,直接到倉庫區 git commit -v //提交時顯示所有diff資訊 git commit --amend -m [message] //使用一次新的commit,替代上一次提交,如果程式碼沒有任何新變化,則用來改寫上一次commit的提交資訊 == 分支管理 == git branch -r //列出所有遠端分支 git branch -a //列出所有本地分支和遠端分支 git branch [branch-name] //新建一個分支,但依然停留在當前分支 git checkout -b [branch] //新建一個分支,並切換到該分支 git checkout [branch-name] //切換到指定分支,並更新工作區 git checkout - //切換到上一個分支 git merge [branch] //合併指定分支到當前分支(如master) git branch -d [branch-name] //刪除分支 git push origin --delete [branch-name] //刪除遠端分支 git branch -dr [remote/branch] //刪除遠端分支 == 遠端同步 == git fetch [remote] //下載遠端倉庫的所有變動,到index git pull //更新本地倉庫至最新改動,到workspace git remote -v //顯示所有遠端倉庫 git remote show [remote] //顯示某個遠端倉庫的資訊 git remote add [shortname] [url] //增加一個新的遠端倉庫,並命名 git pull [remote] [branch] //取回遠端倉庫的變化,並與本地分支合併 git push origin master //推播至master分支 git push [remote] [branch] //上傳本地指定分支到遠端倉庫 git push [remote] --force //強行推播當前分支到遠端倉庫,即使有衝突 git push [remote] --all //推播所有分支到遠端倉庫 == 復原 == git reset [file] //重置暫存區的指定檔案,與上一次commit保持一致,但工作區不變 git reset --hard //重置暫存區與工作區,與上一次commit保持一致 git checkout //從index恢復到workspace git checkout . //恢復暫存區的所有檔案到工作區 git checkout -- files //檔案從index恢復到workspace git checkout HEAD -- files //檔案從local repository複製到workspace == 衝突解決 == git diff //對比workspace與index git diff HEAD //對於workspace與最後一次commit git diff <source_branch> <target_branch> //對比差異 git add <filename> //修改完衝突,需要add以標記合併成功
七、git使用流程規範【重要】
下面是ThoughtBot 的Git使用規範流程,推薦使用:
Create a local feature branch based off master.
git checkout master
git pull
git checkout -b <branch-name>
Rebase frequently to incorporate upstream changes.
git fetch origin
git rebase origin/master
Resolve conflicts. When feature is complete and tests pass, stage the changes.
git add --all
When you've staged the changes, commit them.
git status
git commit --verbose
Write a good commit message. Example format:
Present-tense summary under 50 characters
* More information about commit (under 72 characters).
* More information about commit (under 72 characters).
http://project.management-system.com/ticket/123
If you've created more than one commit, use git rebase
interactively to squash them into cohesive commits with good messages:
git rebase -i origin/master
Share your branch.
git push origin <branch-name>
Submit a GitHub pull request.
Ask for a code review in the project's chat room.
總結大致如下:
- 新建分支
- 提交分支
- 撰寫commit資訊
- 與主幹同步
- 合併commit
- 推播到遠端倉庫
- 發出pull request,請求別人進行程式碼review
Git 教學系列文章:
GitHub 使用教學圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git使用圖文詳細教學 http://www.linuxidc.com/Linux/2016-11/136781.htm
Ubuntu Git安裝與使用 http://www.linuxidc.com/Linux/2016-11/136769.htm
Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 伺服器搭建與用戶端安裝 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm
Git從入門到學會 http://www.linuxidc.com/Linux/2016-10/135872.htm
Git基本操作詳解 http://www.linuxidc.com/Linux/2016-10/135691.htm
相關文章