本文說明在Git的基本操作指令
基礎(chǔ)是已經(jīng)下載了Git Bash饵婆,配置了用戶名郵箱和SSH密鑰
具體參考了《GITHUB入門與實(shí)踐》第4章
1 基本操作
1.1 git init ---- 初始化倉庫
$ mkdir git-tutorial
$ cd git-tutorial
$ git init
1.2 git status ---- 查看倉庫狀態(tài)
插入一個(gè)README.md
$ touch README.md
$ git status
1.3 git add ---- 向暫存區(qū)添加文件
上面添加的文件只是在當(dāng)前工作目錄中勺馆,但是不會被計(jì)入Git倉庫的版本管理對象中
因此用git status查看時(shí),README.md為Untracked files侨核。
$ git add README.md
$ git status
1.4 git commit --- 保存?zhèn)}庫的歷史記錄
git commit 可以將暫存區(qū)中的文件實(shí)際保存到git倉庫的歷史記錄中草穆,通過這些記錄,可以在工作樹中復(fù)原文件搓译。
$ git commit -m "First commit"
1.5 git log --- 查看提交日志
$ git log
$ git log -pretty=short
顯示文件的改動(dòng):
$ git log -p README.md
1.6 git diff --- 查看更改前后的差別
比較的是工作樹和暫存區(qū)之間的差別悲柱。
如果比較工作樹與最新提交之間的區(qū)別,請使用:
$ git diff HEAD
2 分支的操作
2.1 git branch --- 顯示分支一覽表
其中master前面的*表示這是我們當(dāng)前所在的分支些己。
2.2 git checkout -b --- 創(chuàng)建豌鸡、切換分支
$ git checkout -b feature-A
此時(shí)創(chuàng)建了分支 feature-A,并且工作在該分支下
2.3 切換分支 git checkout
切換回主分支為:
$ git checkout master
切換到上一個(gè)分支為:
$ git checkout -
2.4 遇到如下問題
XXXX@LAPTOP-L9R6BKCR MINGW64 /c/01-02-GIT/git-tutorial (master)
$ git checkout feature-A
error: Your local changes to the following files would be overwritten by checkout:
README.md
Please commit your changes or stash them before you switch branches.
Aborting
刪除.git文件夾下的index.lock文件即可
2.5 git merge 合并分支
將feature-A合并到master分支中
$ git checkout master
$ git merge --no-ff feature-A
2.6 git log --graph 以圖表形式查看分支
3 更改提交的操作
3.1 git reset --- 更改提交的版本
$ git reset --hard 哈希值
回退到原來的master分支后段标,README.md中內(nèi)容變回原內(nèi)容直颅。
此時(shí)建立分支fix-B,在分支B中修改README.md中的內(nèi)容怀樟。
git log只能看以當(dāng)前狀態(tài)為終點(diǎn)的歷史日志。如果需要看全部狀態(tài)的歷史日志盆佣,需要輸入:
$ git reflog
3.2 取消沖突
例如我們要將兩個(gè)分支feature-A和fix-B進(jìn)行合并
使用 git merge --no-ff fix-B指令后往堡,會報(bào)錯(cuò)“Merge Conflict in README.md”,這就是沖突共耍。
此時(shí)打開README.md會發(fā)現(xiàn)其中內(nèi)容比較混亂虑灰,可以將其修改為想要的值,再add和commit痹兜。
3.3 git commit --amend --- 修改提交信息
用于修改之前提交時(shí)的提交信息內(nèi)容穆咐。
3.4 git rebase -i --- 壓縮歷史
4 推送至遠(yuǎn)程倉庫
首先要在github上創(chuàng)建一個(gè)倉庫,將其設(shè)置為本地倉庫的遠(yuǎn)程倉庫
Github上創(chuàng)建的倉庫路徑為:git@github.com:用戶名/git-tutorial.git
4.1 git remote add --- 添加遠(yuǎn)程倉庫
$ git remote add origin git@github.com:xxxxx/git-tutorial.git
4.2 git push --- 推送至遠(yuǎn)程倉庫
- 推送至master分支
$ git push -u origin master
此時(shí)報(bào)錯(cuò):
ERROR: Repository not found.
fatal: Could not read from remote repository.
解決方法:
$ git remote set-url origin git@github.com:xxxx/git-tutorial.git
再進(jìn)行g(shù)it push即可。
-
推送至master以外的分支
先在本地倉庫創(chuàng)建分支D:$ git checkout -b feature-D
再push:
$ git push -u origin feature-D
5 從遠(yuǎn)程倉庫獲取
5.1 git clone --- 獲取遠(yuǎn)程倉庫
-
獲取遠(yuǎn)程倉庫
在另一個(gè)文件夾中对湃,打開git bash$ git clone git@github.com:xxxx/git-tutorial.git
就將遠(yuǎn)程倉庫中的master分支拷貝過來了崖叫。
-
獲取遠(yuǎn)程的feature-D分支
$ git checkout -b feature-D origin/feature-D
-
向本地feature-D分支提交更改
修改本地文件后,使用git diff查詢更改
使用下面命令進(jìn)行add和commit$ git commit -am "Add feature-D"
-
推送feature-D分支
$ git push
5.2 git pull --- 獲取最新遠(yuǎn)程分支
打開原來的項(xiàng)目文件夾(其中feature-D中文件未更新)
$ git pull origin feature-D
即可獲取最新遠(yuǎn)程分支到本地拍柒。