Git常見指令:
git help xx_command
git xx_command --help git --version 查看git版本git config --global user.name "xxx_name" 全局級別的簽名設置,全局的放在本用
git config --global user.email "xxx@gmail.com" 戶的家目錄下的.gitconfig文件中git config user.name "xxx_name" 項目級別的簽名設置,放在工作倉庫的.git/config里面
git config user.email "xxxxx@gmail.com" 項目級別的簽名設置,放在工作倉庫的.git/config里面git config --list 查看配置
git config --global --list 查看全局配置
git config --global --edit 編輯全局配置git init 初始化本地倉庫,會在當前目錄下創建一個.git的目錄git status 查看倉庫當前狀態
git status -uno 查看倉庫當前狀態,忽略未跟蹤的文件git add [file name] 本地寫好的文件放到暫存區域git add . 等于 git add -A 或者 git add --allgit add 這個命令處理后面可以增加 pathname,也可以增加參數git add 默認不加參數,表示他會監控工作區的狀態,使用它會把工作時的所有變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。git add -u(--update),僅添加已經被git跟蹤的文件(tracked file),會將修改(文件內容修改和文件刪除)的文件提交到暫存區。git add -u 不會提交新文件(untracked file)。git add --all(-A, --no-ignore-removal),是上面兩個的合集,即會把修改的文件加到暫存區,也會把新建的文件加到暫存區,同時還會把已經工作區刪除了的文件從暫存區刪除掉。git restoregit restore --staged 將暫存區的文件從暫存區撤出,但不會更改文件文件的內容。git restore xxx 撤銷在工作空間但是不在暫存區的文件更改,如恢復工作區刪除的文件xxxgit rm --cached <file>... 刪除暫存區域的文件,和本地區域沒關系git commit [file name] 把暫存區域內容,維護到本地倉庫git commit -agit commit -m "commit message" [file name] 不進入到文本模式,進行更改記錄的添加git commit --message="commmint message log" [file name]git commit --amend 修正上次的提交,可以使用上一次的提交信息,也可以對上次提交的內容進行修改。git commit -m "xxx" 提交之后,發現-m的說明文字寫的有問題,想要重新寫提交信息,或者又修改了某些文件,利用上次的提交信息并作部分修改,這個時候可以用命令 git commit --amend -m "xxx" 覆蓋上一次的提交信息進行commit提交,且上次的提交信息不會出現在提交 git log中git commit -s -m XXX 在git log 的時候會多展示 signed-off-by 行git commit -a -m XXX 相當于先git add . 再git commit -m XXXgit log 查看版本的更新日志,使用空格一屏一屏的切換git log --stat 查看提交記錄,顯示文件列表改動,不包括內容改動git log -n n表示只顯示最近n次的記錄git log --pretty=oneline 每次提交顯示一行(全hash值)git log --oneline 每次提交顯示一行(哈希值的前7位)git reflog HEAD@{x}中x表示從當前版本回退到某個版本HEAD指針要移動的次數git log --oneline --decorate --graph --all 圖像化的方式顯示出分支創建后的版本迭代過程git log --oneline --graphgit log --oneline -n --graph n表示只顯示最近n次的記錄git log -- filename(git log filename) 可以看到該文件相關的commit記錄git log -p filename 可以顯示該文件每次提交的difflog一頁顯示不全,英文狀態下按Q退出git log 命令,按空格或者回車顯示下面的信息git reset
--hard git reset --hard 查看當前HEAD指向的版本git reset --hard xxxxxxx 基于索引值(哈希值),xxxxxxx就是哈希值的前幾位git reset --hard HEAD^ 基于^符號,只能向老版本回滾,不能向新版本回滾。向后回滾一個版本,HEAD后面的就一個^;向后回滾2個,在HEAD后面就使用兩個^^git reset --hard HEAD~n 基于~符號。只能向后回滾,回滾版本數n。git reset -–hard origin/master 回退到與遠程master代碼一樣
--hard這個參數在一定情況下會有一定的危險。比如在工作區內容沒提交工本地庫之前,使用了--hard命令把本地庫的內容重置到工作區和暫存區,會導致工作區更改的內容丟失。git reset --mixed
git reset --softgit branch\ git checkoutgit branch 分支名xx 創建分支xxgit checkout 分支名xx 切換到分支xxgit checkout -b 分支名xx 基于當前分支(commit)創建并切換到分支xxgit checkout -b 分支名xx commit_id 基于commit_id創建并切換到分支xxgit checkout commit_id 基于commit_id切到臨時分支,可用于實驗性修改git branch -d xx 刪除分支xxgit branch -D xx 強制刪除分支xxgit branch 列出當前分支清單,列出所有分支git branch -a 查看遠程分支和本地分支git branch -r 查看遠程的分支名git branch -v 查看各個分支最后一個提交信息git branch --merged 查看哪些分支已經合并入當前分支git merge 要合并的(from)分支名稱 要先切換到接受修改的(to)分支上,由接受修改的分支來執行merge合并命令git commit -m "commit msg" 分支沖突解決后,提交不能有文件名git remote -v 查看當前的遠程倉庫連接
git remote add origin URL 為遠程庫取個別名,叫origingit pushgit push <遠程主機名> <本地分支名> <遠程分支名> 如 git push origin master:refs/for/master 將本地的master分支推送到遠程主機origin上的對應master分支, origin 是遠程主機名,第一個master是本地分支名,第二個master是遠程分支名。git push origin master 如果遠程分支被省略,如上則表示將本地分支推送到與之存在追蹤關系的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建git push -u origin master 如果當前分支與多個主機存在追蹤關系,則可以使用 -u 參數指定一個默認主機,這樣后面就可以不加任何參數使用git pushgit push origin 如果當前分支與遠程分支存在追蹤關系,則本地分支和遠程分支都可以省略,將當前分支推送到origin主機的對應分支 git push 如果當前分支只有一個遠程分支,那么主機名都可以省略,形如 git push,可以使用git branch -r ,查看遠程的分支名git clonegit clone URL 1完整的把遠程庫下載到本地 2創建origin遠程庫別名 3初始化本地庫git clone -b 分支名 倉庫地址 存放路徑 克隆指定的分支到本地目錄,然后在該目錄下push時,對應的就是push到遠端的對應分支。git clone --recursive URL 遞歸克隆項目下面的所有git項目git fetch [遠程庫別名] [遠程庫分支] 將遠程主機的內容拉到本地,不合并
git merge [遠程庫別名/遠程庫分支] 本地合并遠程庫內容
當然上面這兩步可以用一個操作 git pull 來統一完成git pullgit pull 命令的作用是:將遠程主機的內容拉下來后直接合并,即:git pull = git fetch + git merge,可能會產生沖突,需要手動解決。它的完整格式稍稍有點復雜。git pull [<options>] [<repository> [<refspec>…?]]git pull <遠程主機名> <遠程分支名>:<本地分支名>比如,要取回origin主機的next分支,與本地的master分支合并,需要寫成下面這樣:git pull origin next:master如果遠程分支(next)要與當前分支合并,則冒號后面的部分可以省略。上面命令可以簡寫為:git pull origin next什么時候使用 git pull [遠程主機名] [遠程分支名] [本地分支名] ?修改比較簡單,確定不會產生合并沖突的時候。什么時候使用git fetch [遠程主機名] [遠程分子名],git merge [遠程庫名/遠程分支名] [本地分支]遠程倉庫的修改可能和本地倉庫產生沖突的時候,可以先把遠程倉庫的放到本地。經過對比之類后,再進行合并(也要解決沖突)。git rm如果是對所有文件都取消跟蹤的話,就是git rm -r --cached . //不刪除本地文件git rm -r --f . //刪除本地文件對某個文件取消跟蹤git rm --cached readme1.txt 刪除readme1.txt的跟蹤,并保留在本地。git rm --f readme1.txt 刪除readme1.txt的跟蹤,并且刪除本地文件。當需要刪除暫存區或分支上的文件, 但本地又需要使用, 只是不希望這個文件被版本控制, 可以使用 git rm --cached xxxgit rm --cached 會從index里面刪除該文件,下次commit的時候會修改git倉庫,但是本地的文件還是保留git blame 顯示文件的每一行最后修改的版本和作者用法:git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [-- incremental] [-L n,m] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>] [--] <file>例如,git blame -L 100,120 xx.cgit diffgit diff //比較工作區與暫存的(git add 后)的差別,一個文件可以在commit之前多次addgit diff --cached || --staged //比較暫存區文件 與上一次commit 的差別git diff branch1 branch2 --stat //顯示出所有有差異的文件列表git diff branch1 branch2 具體文件路徑 //顯示指定文件的詳細差異git diff branch1 branch2 //顯示出所有有差異的文件的詳細差異
Linux下Git倉庫管理:
?
?
.gitignore 凡是在這個文件內部的后綴,對應的文件,不會被上傳到gitee上!
.git 所謂的git倉庫,本質就是一個目錄,.git文件里面的內容。
push:本質上就是將.git里面的內容同步到gitee上去,也就是上傳本地內容!
日志不能亂寫!git log
如果Linux沒有安裝Git :sudo apt?install git?,當你首次安裝Git時,會提示你進行配置用戶名和郵箱。
向Gitee提交流程:
mkdir example
mv /path /path/example/
git add [文件名] #添加到暫存區 add .
git commit . #提交改動到本地
git push #同步到遠端服務器上,需要填用戶名和密碼
git status #查看git的變化
git rm filename #刪除倉庫文件,再commit,再push
git log #查看日志
git pull #如果遠端對文件修改,則本地同步