最常用的命令及解釋
$ git add
# 將工作區(qū)的修改提交到暫存區(qū)
$ git commit
# 將暫存區(qū)的修改提交到當前分支
$ git reset
# 回退到某一個版本
$ git stash
# 保存某次修改
$ git pull
# 從遠程更新代碼
$ git push
# 將本地代碼更新到遠程分支上
$ git reflog
# 查看歷史命令
$ git status
# 查看當前倉庫的狀態(tài)
$ git diff
# 查看修改
$ git log
# 查看提交歷史
$ git revert
# 回退某個修改
一次完整的代碼提交
// 適用于多人協(xié)同工作時,可能會操作同一文件夾,出現沖突的情況
$ git add -A
$ git commit -m "message"
$ git pull --rebase (或者git fetch + git rebase)
# 解決沖突
$ git add 沖突文件
$ git rebase –continue
$ git push
// 其中施逾,3姿骏、4项玛、5點妙色,如果沒遇到沖突就不用進行拌夏,直接push上去推穷。
// 當遇到沖突時心包,git會提示patch failed,并要我們解決問題了再執(zhí)行git rebase --continue
命令詳解
git init
本地初始化一個git倉庫
# 初始化一個git倉庫馒铃,在當前目錄下生存一個 **.git** 的目錄
$ git init
git clone
從遠程克隆一個倉庫到本地
# 從遠程倉庫克隆一個項目
$ git clone <遠程倉庫地址>
# 從遠程倉庫克隆一個項目蟹腾,并重新命名為MyProject
$ git clone <遠程倉庫地址> MyProject
# 從遠程倉庫克隆一個項目到指定目錄
$ git clone <遠程倉庫地址> <目標目錄>
git status
查看本地倉庫的狀態(tài)
# 查看當前倉庫的狀態(tài)
$ git status
git add
將要提交的文件添加到暫存區(qū)中
# 添加指定的文件
$ git add <文件路徑>
#添加多個指定文件
$ git add <文件路徑> <文件路徑> <文件路徑>...
# 添加所有已修改過的文件(包括修改、刪除区宇、新增的文件)
$ git add -A
$ git add --all
$ git add .
git commit
將暫存區(qū)中的文件提交到本地倉庫中
# 將暫存區(qū)中的文件提交到本地倉庫并添加提交說明
$ git commit -m '提交說明'
# 修改上次提交的提交說明
$ git commit --amend
git push
將本地倉庫的更新推送到遠程倉庫
# 把本地分支推送到遠程指定分支
$ git push <遠程倉庫別名> <本地分支名>:<遠程分支名>
eg:git push origin master 將本地的master分支推送到origin主機的master分支岭佳。如果master不存在,則會被新建萧锉。
# 刪除遠程分支
$ git push <遠程倉庫別名> :<遠程分支名>
// 相當于推送了一個空的本地分支到遠程蟋恬,等同于:
$ git push <遠程倉庫別名> --delete <遠程分支名>
git pull
從遠程拉取最新的代碼并合并到本地分支
# 從遠程拉取最新的代碼
$ git pull
# 拉取遠程某個分支的更新味悄,再與本地的指定分支合并
$ git pull <遠程倉庫別名> <遠程分支名>:<本地分支名>
# 如果遠程分支要與當前分支合并,則冒號后面的部分可以省略
$ git pull <遠程倉庫別名> <遠程分支名>
// git pull =git fetch+git merge
// git pull --rebase = git fetch + git rebase
// git pull 命令相當于是從遠程拉取了代碼(git fetch),并且合并到了一個本地的分支(git merge
// 如果使用--rebase 則代表使用git rebase代替git merge
git fetch
從遠程倉庫獲取最新的版本到本地分支上
# 將遠程倉庫所有分支的最新版本全部取回到本地
$ git fetch <遠程倉庫的別名>
# 將遠程倉庫指定分支的最新版本取回到本地
$ git fetch <遠程主機名> <分支名>
git merge
合并分支
# 把指定的分支合并到當前所在的分支下
$ git merge <分支名稱>
git log
查看提交記錄
# 查看所有的提交記錄
$ git log
# 查看最新的指定數量的提交記錄
$ git log -<數量>
git stash
將當前未提交的所有操作保存起來
# 將當前未提交的所有操作保存
$ git stash
# 將最新的一個緩存恢復到工作目錄
$ git stash pop
# 查看所有的緩存列表
$ git stash list
git checkout
git checkout 可以用于操作分支也可用于操作文件
// git checkout 操作分支
# 切換到已存在的指定分支
$ git checkout <分支名>
# 創(chuàng)建并切換到指定的分支蛙吏,保留所有的提交記錄
$ git checkout -b <分支名>
// git checkout 操作文件
# 放棄本地文件的修改座哩,新增的文件和已經添加到暫存區(qū)的內容不受影響
$ git checkout <文件路徑>
# 放棄本地所有的文件修改
$ git checkout --hard HEAD
git branch
對分支的操作命令
# 查看本地的所有分支兴革,當前所在分支以 "*" 標出
$ git branch
# 創(chuàng)建新分支盐欺,新的分支基于上一次提交建立
$ git branch <分支名>
# 查看所有本地、遠程分支波附,當前所在分支以 "*" 標出
$ git branc -r
// 修改分支名稱
# 如果不指定原分支名稱則為當前所在分支
$ git branch -m [<原分支名稱>] <新的分支名稱>
# 強制修改分支名稱
$ git branch -M [<原分支名稱>] <新的分支名稱>
// 刪除指定的分支
# 刪除指定的本地分支
$ git branch -d <分支名稱>
# 強制刪除指定的本地分支
$ git branch -D <分支名稱>
git diff
比較版本間的差異
# 比較當前文件與暫存區(qū)文件的區(qū)別艺晴,顯示沒有暫存的修改
$ git diff
# 比較暫存區(qū)中文件和上次提交的文件的區(qū)別
$ git diff --cached
$ git diff --staged
# 比較當前文件和上次提交文件的區(qū)別
$ git diff HEAD
# 查看從指定版本之后改動的內容
$ git diff <版本號>
# 比較兩個分支之間的差異
$ git diff <分支名稱> <分支名稱>
git reset
版本回退
# 回退版本,一個^代表一個版本掸屡,可以有多個封寞,
$ git reset HEAD^
$ git reset HEAD~n
# 回退到指定的版本
$ git reset <版本號>
# 將 HEAD 的指向改變,撤銷到指定的提交記錄仅财,文件也修改了
$ git reset --hard <版本號>
# 將 HEAD 的指向改變狈究,撤銷到指定的提交記錄,文件未修改
$ git reset --soft <commit ID>
git tag
操作標簽
# 查看所有的標簽
$ git tag
# 切換到指定標簽
$ git checkout <標簽名>
# 查看標簽的信息
$ git show <標簽名稱>
# 刪除指定的標簽
$ git tag -d <標簽名稱>
# 將指定的標簽提交到遠程倉庫
$ git push <遠程倉庫的別名> <標簽名稱>
# 將本地所有的標簽全部提交到遠程倉庫
$ git push <遠程倉庫的別名> -tags
git rm
刪除操作
# 刪除指定文件盏求,并從本地倉庫的文件夾中刪除
$ git rm <文件路徑>
# 移除跟蹤指定的文件抖锥,在本地倉庫的文件夾中保留該文件
$ git rm --cached
git mv
重命名操作
# 重命名指定的文件或者文件夾
$ git mv <源文件/文件夾> <目標文件/文件夾>
git reflog
查看所有分支的所有操作記錄
# 如果回退到某個版本后又要再次回到之前的版本亿眠,就可以使用git reflog,查看所有的提交記錄
# 包括已經刪除的commit記錄(git log不能查看已經刪除的commit記錄)
$ git reflog
git revert
生成一個新的提交來撤銷某次提交磅废,此次提交之前的所有提交都會被保留纳像。
# 生成一個新的提交來撤銷某次提交
$ git revert <版本號>
git remote
操作遠程倉庫。
# 列出已經存在的遠程倉庫
$ git remote
# 添加遠程倉庫
$ git remote add <遠程倉庫的別名> <遠程倉庫的URL地址>
# 修改遠程倉庫的別名
$ git remote rename <原遠程倉庫的別名> <新的別名>
# 刪除指定名稱的遠程倉庫
$ git remote remove <遠程倉庫的別名>
# 修改遠程倉庫的 URL 地址
$ git remote set-url <遠程倉庫的別名> <新的遠程倉庫URL地址>