git是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理項(xiàng)目.
安裝
可以從Git官網(wǎng)現(xiàn)在安裝程序, 然后默認(rèn)選項(xiàng)安裝即可.
安裝成功后, 在開始菜單找到
Git Bash, 跳出命令窗口說明安裝成功.-
進(jìn)行g(shù)it設(shè)置
git config --global user.name "yourName"git config --global user.email email@example.com
-
查看設(shè)置的user信息
git config user.namegit config user.email
執(zhí)行
ssh-keygen -t rsa -C "郵箱地址",一直回車, 生成ssh key
注意:
git config命令用了--global參數(shù), 標(biāo)識這臺機(jī)器上的所有g(shù)it倉庫都使用這個(gè)配置; 當(dāng)然也可以對倉庫指定不同的用戶名和emai地址.
刪除ssh時(shí), 一直默認(rèn)回車就好, 不用設(shè)置ssh的密碼, 否則每次提交都要輸入ssh的密碼.
- 找到生成的ssh(默認(rèn)是id_rsa.pub文件), 復(fù)制秘鑰后添加到代碼托管平臺.
使用
拉取遠(yuǎn)程代碼
git clone 倉庫地址 , 完成后cd到倉庫目錄
git branch -a , 可以查看所有分支
git checkout 目標(biāo)分支 , 檢出目標(biāo)分支
如果要新建本地分支拉取, git checkout -b 新分支名 拉取到本地新分支上, 再 git pull origin 分支 將本地分支與遠(yuǎn)程分支關(guān)聯(lián).
查看是否關(guān)聯(lián): git branch -vv , 看到有藍(lán)色[origin/分支] , 說明關(guān)聯(lián)成功, 以后直接 git pull 就可以拉取遠(yuǎn)程更新了.
提交
首先我們先默認(rèn)項(xiàng)目中有兩個(gè)分支:master,develop。我們在develop中做開發(fā),然后提交代碼,步驟如下:
- 查看當(dāng)前分支的修改或增加文件(可省略)
git status
git diff 查看變更.
- 把修改文件添加到暫存區(qū),
-u的意思是追蹤過的代碼,可根據(jù)情況省略,.是全部
git add . 或 git add -u .
- 把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支
提交的同時(shí)輸入日志 git commit -m "日志" .
或者 git commit , 然后使用vim編輯.
git commit后面的操作步驟1 按下小寫字母i,會進(jìn)入編輯模式。輸入你想要的 message
2 按下esc退出編輯模式
3 輸入:wq,就可以保存退出了,w是write,q是quit。
4也可以在按esc退出編輯模式以后,切換到大寫模式,連按兩下Z
- push到遠(yuǎn)程分支,develop分支提交完成。
git push 或 git push origin develop 或 git push -u origin develop
合并
方法一: git merge 合并
將develop分支合并到master,步驟如下:
-
查看所有本地分支(可省略)
git branch -
切換到master分支
git checkout master -
拉取
git pull -
合并分支,merge將后面的分支合并到當(dāng)前分支
git merge develop -
若沒有沖突,跳過此步;若有沖突,解決后add,再commit
git add . git commit -m "update" -
push到遠(yuǎn)程master分支上
git push或git push -u origin master
合并完畢。
最后記得切回develop分支 git checkout develop 繼續(xù)開發(fā)。
方法二: git rebaseh 衍合
git checkout dev1
# 新增/修改了代碼
git add .
git commit -m "提交信息"
git checkout develop
git pull
git checkout dev1
git rebase develop
等待, 有沖突解決沖突
git add .
git rebase --continue
等待rebase結(jié)束
git commit -m "提交信息"
git push
然后master合入develop
rebase 基于當(dāng)前分支,拉取目標(biāo)分支的commit,再將當(dāng)前的commit放在目標(biāo)分支的commit之后
重置/撤銷
參考:https://www.cnblogs.com/panbingwen/p/10736938.html
Git 保存的不是文件的變化或者差異,而是一系列不同時(shí)刻的文件快照。
git reset命令是git中重置命令,即用來撤銷某次提交(commit)。
1、修改本地倉庫中commit對象(快照)

此時(shí)本地倉庫對應(yīng)的是commit4,git reset 可以讓本地倉庫對應(yīng)的指針變?yōu)閏ommit3或是commit1等之前的版本,當(dāng)然,也可以變?yōu)閏ommit4之后的某個(gè)commit,如commit5。
Git 的分支,其實(shí)本質(zhì)上僅僅是指向提交對象的可變指針。
當(dāng)使用git reset命令時(shí)候,一般會修改本地倉庫。
其常用格式如下:
用法一:git reset [-q] [] [--] ...
用法二:git reset [--soft | --mixed | --hard | --merge | --keep ] [-q] [commit]
參數(shù)說明 (git log和git reflog可查看commitId,commitId是快照的唯一標(biāo)識)
git log --pretty=oneline -2查看最近2次提交記錄,顯示commitId,一條記錄在一行中顯示
-
--hard commitId修改本地倉庫、暫存區(qū)、工作區(qū)里面的數(shù)據(jù)為commitId對應(yīng)快照的內(nèi)數(shù)據(jù)

--mixed commitId修改本地倉庫、暫存區(qū)里面的數(shù)據(jù)為commitId對應(yīng)快照里的數(shù)據(jù),是git reset默認(rèn)的參數(shù),--mixed可缺省。 暫存區(qū)的數(shù)據(jù)會被快照中的數(shù)據(jù)覆蓋--soft commitId修改本地倉庫里面的數(shù)據(jù)為commitId對應(yīng)快照的數(shù)據(jù)。(僅改變指向快照的指針指向)
當(dāng)git reset 后面的commitId為當(dāng)前提交的commitId時(shí),即HEAD(可缺省)。那么:
參數(shù)說明:
--hard HEAD 修改暫存區(qū)、工作區(qū)里面的內(nèi)容為當(dāng)前快照里的內(nèi)容。(這個(gè)很危險(xiǎn),曾經(jīng)踩過坑,電腦的文件丟失了很多,也是導(dǎo)致我決心好好學(xué)一學(xué)git的原因,慎用)
--mixed HEAD 修改暫存區(qū)里面的內(nèi)容為當(dāng)前快照里的內(nèi)容,是git reset默認(rèn)的參數(shù),因此可缺省。
--soft HEAD 本地倉庫、暫存區(qū)、工作區(qū)都不改變 |
我們需要注意,使用git reset重置一般是很危險(xiǎn)的,會徹底地丟掉歷史。因?yàn)槿绻麤]有記錄下重置前的commitId,一般不容易找回,除非分析.git/logs里面的日志,故重置需慎重。
刪除分支
刪除本地分支
git branch -D feature-dev1
刪除遠(yuǎn)程分支
切換到別的分支后再刪除目標(biāo)分支:
git push origin --delete feature-dev2
刪除遠(yuǎn)程分支同步到本地
使用 git branch -a 可以查看本地分支和遠(yuǎn)程分支情況

但遠(yuǎn)程分支刪除后,發(fā)現(xiàn)本地并沒有同步過來。
git remote show origin 查看本地分支和追蹤情況

上圖紅框中的分支是遠(yuǎn)程分支已被刪除的分支,根據(jù)提示可以使用 git remote prune origin 來同步刪除這些分支。

再次查看分支:

紅色部分的遠(yuǎn)程分支已經(jīng)同步,遠(yuǎn)程刪除的分支,本地也已經(jīng)不見了。
查看提交日志
下面的命令都可用于查看提交記錄:
git log
一次提交記錄以一行顯示:
git log --oneline
git log --oneline -10 顯示10條(短ID顯示)
git log --pretty-oneline -20 顯示20條(全I(xiàn)D顯示)
檢出新分支
檢出遠(yuǎn)程分支dev到本地分支dev3
git checkout -b dev3 origin/dev
從 4afde9 節(jié)點(diǎn)處檢出新的本地分支dev4
git checkout -b dev4 4afde9