轉自:https://www.cnblogs.com/wbl001/p/11495110.html
(文檔較長,請大家耐心閱讀,很有幫助)
git比較本地倉庫和遠程倉庫的差異
更新本地的遠程分支
git fetch origin
2.本地與遠程的差集 :(顯示遠程有而本地沒有的commit信息)
git log master..origin/master
3.統計文件的改動
# git diff <local branch> <remote>/<remote branch>
git diff --stat master origin/master
將遠程git倉庫里的指定分支拉取到本地(本地不存在的分支)
當我想從遠程倉庫里拉取一條本地不存在的分支時:
git checkout -b 本地分支名 origin/遠程分支名
這個將會自動創建一個新的本地分支,並與指定的遠程分支關聯起來。
例如遠程倉庫里有個分支dev2,我本地沒有該分支,我要把dev2拉到我本地:
若成功,將會在本地創建新分支dev2,並自動切到dev2上。
如果出現提示:
fatal: Cannot update paths and switch to branch 'dev2' at the same time. Did you intend to checkout 'origin/dev2' which can not be resolved as commit?
表示拉取不成功。我們需要先執行
git fetch
然后再執行
git checkout -b 本地分支名 origin/遠程分支名
即可。
查看分支:git branch
創建分支:git branch <name>
切換分支:git checkout <name>
或者git switch <name>
創建+切換分支:git checkout -b <name>
或者git switch -c <name>
合並某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
git拉取遠程代碼
1
|
git clone https:
//xxx.git
|
git拉取遠程指定分支下代碼(-b 分支名稱)
1
|
git clone -b v2.
8.1
https:
//xxx.git
|
初始化一個本地倉庫,在同級目錄下會出現一個隱藏的.git文件
1
|
git init
|
查看git的配置信息
1
|
git config -l
|
git配置本地倉庫的userName(必須)
1
|
git config user.name
'Lee'
|
git配置本地倉庫的郵箱(必須)
1
|
git config user.email
'12345@qq.com'
|
三級文件配置路徑:
1
2
3
|
.git/config
/.gitconfig #當前用戶目錄
/etc/gitconfig #git安裝目錄
|
本地提交到git索引(緩存)中
1
2
3
|
git add . #把新增的、修改的都加到緩存
git add -A #把新增、和修改的、和刪除的都加到緩存
|
本地從緩存中加到文件庫(repository)中
1
|
git commit -m
'版本描述'
#提交到文件庫
|
本地一件提交到文件庫中
1
|
git commit -am
'版本描述'
#一步完成提交
|
查看當前git狀態信息(查看是否有文件未提交)
1
|
git status
|
git中的三類文件
1
2
3
|
被追蹤的(tracked):已經加入文檔庫
不被追蹤的(untracked):沒有加入文檔庫
忽略的(ignored):忽略那些不需要管理的文件夾或文件
|
git新建忽略文件 目錄下建立一個.gitignore文件(可以有多個,影響范圍當前文件及子文件)
1
|
touch .gitignore
|
.gitignore文件忽略內容demo
1
2
3
4
5
6
7
8
9
10
11
|
# Maven #
target/
# IDEA #
.idea/
*.iml
# Eclipse #
.settings/
.classpath
.project
|
注意:新建的一個忽略文件,為什么沒有生效
答:可能是因為你的緩存區已經有忽略的文件了,所以需要先清空緩存區里的文件,重新add和commit操作
刪除緩存區所有文件命令
1
|
git rm -r --cached . #主要這個點一定要寫
|
重新add到緩存區
1
|
git add .
|
每一次commit都是一個提交點,唯一標識SHA1的ID,ID可使用前4至7個數字表示
查看git的日志信息
1
|
git log
|
給提交點打標簽 git tag -a v0.2 4a80f64(提交點SHA1的ID的前7位)
git tag -a tagV1 d819565b #提交點SHA1的ID的前7位
回車之后會有輸入tag內容的界面,然后像linux一樣 點擊 i 編輯 輸入信息后 esc 然后 :wq 保存退出
簡化git日志輸出格式
1
|
git log --oneline
|
顯示主分支和自分支git日志 (前面會多個星號)
1
|
git log --oneline --graph
|
查看本地添加了哪些遠程分支地址
1
|
git remote
|
查看本地添加了哪些遠程分支地址(詳細)
1
|
git remote -v
|
刪除本地指定的遠程地址
1
|
git remote remove origin
|
添加遠程地址
1
|
git remote add origin https:
//xxxxxxxxxxxx.git
|
分支:分支意味着你可以從開發主線(master)上分離開,在不影響主線的同事繼續工
1
2
3
4
5
6
7
8
9
10
11
|
git branch #列出當前開發所有分支(默認會有master)<br>
git branch king #創建一個king的分支(最新提交點)<br>
git branch king 提交點 # 創建一個king的分支(指定提交點)
<br>git branch -d -r <branchname> # 刪除遠程分支,刪除后還需推送到服務器<br>git push origin:<branchname> # 刪除后推送至服務器<br><br>
git branch -d king #刪除king分支
git checkout king #切換至king分支
git checkout master
git merge king #合並分支king和主干master,合並后的提交點屬於主干master
|
本地分支重命名
1
|
git branch -m <oldbranch> <newbranch> #重命名本地分支
|
查看本地和遠程的所有分支
1
|
git branch -a # 查看本地和遠程的所有分支
|
查看遠程所有分支
1
|
git branch -r # 查看遠程所有分支
|
重命名遠程分支:
1、刪除遠程待修改分支
2、push本地新分支到遠程服務器
head節點代表最新的commit 顯示head 信息
1
|
git show HEAD
|
回退:git reset 選項 提交點(選項:--hard表示全恢復 提交點:可用ID或標簽)
1
|
git reset --hard v0.
1
|
查詢所有提交點
1
|
git reflog #回退后需要反悔的話,需要通過此命令查找到所有操作的提交點
|
合並分支的起始點(不推薦)
1
2
|
git checkout master
git rebase reking #合並分支reking和主干master,合並后的提交點屬於主干master
|
clone 克隆遠程文件
1
|
git clone
"遠程地址"
"本地文件名稱"
|
push 推送本地修改分支至遠程git倉庫
1
|
git push -u origin feature-wxDemo
|
fetch與pull
fetch是將遠程主機的最新內容拉到本地,不進行合並
1
|
git fetch origin master
|
pull 則是將遠程主機的master分支最新內容拉下來后與當前本地分支直接合並 fetch+merge
1
|
git pull origin master
|
如果遠程分支是與當前分支合並,則冒號后面的部分可以省略。如下:
1
|
git pull origin master:feature-wxDemo #git pull <遠程主機名> <遠程分支名>:<本地分支名>
|
統計文件改動
1
|
git diff --stat master origin/master #git diff <local branch> <remote>/<remote branch>
|
git分支說明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Production分支(主線分支用於發版,不會直接改)
Master分支,這個分支只能從其他分支合並,不能在這個分支直接修改
Develop分支(開發分支)
這個分支是我們是我們的主開發分支,包含所有要發布到下一個Release的代碼,這個主要合並與其他分支,比如Feature分支
Feature分支(新功能分支)
這個分支主要是用來開發一個新的功能,一旦開發完成,我們合並回Develop分支進入下一個Release
Release分支(偏向測試)
當你需要一個發布一個新Release的時候,我們基於Develop分支創建一個Release分支,完成Release后,我們合並到Master和Develop分支
Hotfix分支(緊急bug發布)
當我們在Production發現新的Bug時候,我們需要創建一個Hotfix, 完成Hotfix后,我們合並回Master和Develop分支,所以Hotfix的改動會進入下一個Release
|
比較本地分支與git 主分支差異情況
1
|
git diff --stat feature-wxAgentIm origin/master # git diff <local branch> <remote>/<remote branch>
|
git回退到某一版本
1
2
3
|
git reset --hard commitId
git push origin 分支 --force ##強制重新提交
|
git中一些選項解釋(重要):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-d
--delete:刪除
-D
--delete --force的快捷鍵
-f
--force:強制
-m
--move:移動或重命名
-M
--move --force的快捷鍵
-r
--remote:遠程
-a
--all:所有
|
git 解決遠程沖突思路:
1:先在本地切換到主分支上(git branch master),拉取最新代碼
2:再切換到bug分支上,例如:feature-XXX
3:git merge master
4:會提示哪個文件有沖突,解決后,小烏龜找到沖突文件,點擊resolve
5:git commit -> git push
這樣沖突就解決了
git 在不想commit的情況下進行git pull操作:
會報如下提示:
當我們的遠程倉庫更改后,想拉取到本地,但是本地也做了更改,暫時不想提交怎么辦?
git 提供了一個很方便的命令stash ,先將本地更改放入暫存區,然后拉取,最后將暫存區的代碼merge過來:
具體命令:
1
2
3
4
5
6
7
8
9
10
11
|
git stash #將本地修改放入暫存區
git pull origin develop3.
12.9
:develop3.
12.9
#拉取項目
git stash pop #從暫存區取最近一次記錄merge
git stash list #顯示所有stash列表
git stash drop stash@{
0
} #這是刪除第一個隊列
git stash clear #清空stash
|
參考鏈接地址:https://www.cnblogs.com/canda/p/7835663.html
git 強制拉取遠程代碼覆蓋本地
1
2
3
4
5
|
git fetch --all
git reset --hard origin/master
git pull
|