Git 常用命令及使用

配置用戶信息
$ git config --global user.name "PikachuKing"
$ git config --global user.email PikachuKing@qq.com

如果使用了--global參數(shù)表示你這臺機器上所有的Git倉庫都會使用這個配置,需要對某個倉庫指定不同的用戶名和郵箱時只需要在那個項目目錄下運行沒有 --global 選項的命令來配置。
其他配置項可運行git config --help查看

創(chuàng)建版本庫
$ git init
//創(chuàng)建完成并告訴你當前倉庫為空,并在當前目錄生成.git目錄
Initialized empty Git repository in C:/Users/Administrator/Desktop/laravelTest/.git/
將文件添加到版本庫

第一步:是用git add把文件添加到暫存區(qū);
第二步:是用git commit把暫存區(qū)的所有內容提交到當前分支。

//添加指定文件到暫存區(qū)
$ git add <file>
//添加已修改的(新增或修改)內容至暫存區(qū)(不含刪除的文件)
$ git add . 
//添加本地所有修改的內容至暫存區(qū)(包含刪除的文件)
$ git add -A
//顯示已添加至暫存區(qū)未提交的以及已修改未暫存的 
$ git status
//查看還未添加至暫存區(qū)所有文件的修改具體內容
$ git diff 
//查看添加至暫存區(qū)所有文件的修改具體內容
$ git diff --stage  
//一次性把暫存區(qū)的所有修改提交到當前分支
$ git commit -m <message>
版本操作
//提交日志
$ git log
commit a16d65e6acd703aed8c8dab3be0d7dab789f5b65 (HEAD -> master)  //commit id(版本號)
Author: PikachuKing <pikachuking01@gmail.com> //提交人信息
Date:   Wed Apr 24 23:12:12 2019 +0800  //提交時間

    修改User   //提交備注信息

commit ac8e2788d44205791f166e3ca7d61a4595fd25f7
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:10:29 2019 +0800

    初始化項目

//將版本回退到初始化
$ git reset --hard ac8e2788d44205791f166e3ca7d61a4595fd25f7
HEAD is now at ac8e278 初始化項目

//再次查看log
$ git log
commit ac8e2788d44205791f166e3ca7d61a4595fd25f7 (HEAD -> master)
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:10:29 2019 +0800

    初始化項目

//上一次的修改已經(jīng)不見了,要是想恢復
//git reflog 會記錄每一次的操作命令
$ git reflog
ac8e278 (HEAD -> master) HEAD@{0}: reset: moving to ac8e2788d44205791f166e3ca7d61a4595fd25f7
a16d65e HEAD@{1}: commit: 修改User
ac8e278 (HEAD -> master) HEAD@{2}: commit (initial): 初始化項目

//這里我們可以得到 修改User 這個操作的 commit_id的前幾位
//這里的commit_id 寫了前幾位,Git會自己取尋找
$ git reset --hard a16d65e
HEAD is now at a16d65e 修改User

//再次查看log
commit a16d65e6acd703aed8c8dab3be0d7dab789f5b65 (HEAD -> master)
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:12:12 2019 +0800

    修改User

commit ac8e2788d44205791f166e3ca7d61a4595fd25f7
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:10:29 2019 +0800

    初始化項目
// HEAD指向的版本就是當前版本
撤銷修改
//如果文件修改了未提交到暫存區(qū),則回到和版本庫的狀態(tài)
//已經(jīng)添加到暫存區(qū)后,又作了修改,則回到暫存區(qū)的狀態(tài)
$ git checkout -- <file>
//把暫存區(qū)的修改回退到工作區(qū)
$ git reset HEAD <file>
創(chuàng)建分支
//查看分支
$ git branch
//創(chuàng)建分支
$ git branch <name>
//切換分支
$ git checkout <name>
//創(chuàng)建并切換到新創(chuàng)建分支
$ git checkout -b <name>
//合并分支到當前分支
$ git merge <name>
//刪除分支
$ git branch -d <name>
//刪除未合并過的分支(強行刪除,將丟失掉修改)
$ git branch -D <name>
//查看分支合并圖
$ git log --graph
沖突解決

當我們在兩個分支修改了同一行時,無法使用merge快速合并,需要手動解決沖突后再提交

$ git merge newBranch
Auto-merging app/User.php
CONFLICT (content): Merge conflict in app/User.php
Automatic merge failed; fix conflicts and then commit the result.

//可以使用ststus查看沖突文件
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)
Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   app/User.php
no changes added to commit (use "git add" and/or "git commit -a")

//我們查看 app/User.php文件對沖突進行處理(刪除不需要的)
<<<<<<< HEAD
        'name', 'email', 'password','user','sdsdsds'
=======
        'name', 'email', 'password','user','nihao','ssss'
>>>>>>> newBranch

//修改后再次提交
$ git add .
$ git commit -m'修改'
[master 238a499] 修改

//查看分支合并圖
$ git log --graph
儲藏

git stash用于將當前工作區(qū)的修改暫存起來,就像堆棧一樣,可以隨時將某一次緩存的修改再重新應用到當前工作區(qū)。當我們臨時需要修改個BUG又不想把當前工作區(qū)提交時使用stash會非常方便。

$ git stash
Saved working directory and index state WIP on master: 238a499 修改

//再次使用status查看會發(fā)現(xiàn)工作區(qū)是干凈的
$ git status
On branch master
nothing to commit, working tree clean

//當我們想取回儲藏的內容時,查看儲藏列表
$  git stash list
stash@{0}: WIP on master: 238a499 修改

//恢復 使用apply 恢復是不會刪除stash 的需要git stash drop來刪除
$ git stash apply stash@{0}
$ git stash drop stash@{0}
//也可以使用pop,恢復的同時刪除stach
git stash pop stash@{0}
標簽

常用來標記發(fā)布結點版本號(如V 1.0)

//切換到需要打標簽的分支上新建一個標簽
$ git tag <tagname>
//也可以通過commit_id給歷史分支打標簽
$ git tag <tagname> <commit_id>
//創(chuàng)建帶有說明的標簽
$ git tag -a <tagname> -m "說明內容" <commit_id>
//查看所有標簽
$ git tag
//查看標簽信息
$ git show <tagname>
//刪除某個標簽
$ git tag -d <tagname>
//推送某個標簽到遠程
$ git push origin <tagname>
//推送全部未推送過的本地標簽
$ git push origin --tags
//刪除一個本地標簽
$ git tag -d <tagname>
//刪除一個遠程標簽
git push origin :refs/tags/<tagname>
遠程倉庫
//創(chuàng)建SSH Key 會在.ssh目錄生成id_rsa和id_rsa.pub兩個文件
$ ssh-keygen -t rsa -C "pikachuking@qq.com"
//在GitHub倉庫添加id_rsa.pub內容
//關聯(lián)遠程倉庫
$ git remote add origin git@github.com:piakachuking/test.git
//使用push推送到遠程倉庫
$ git push <遠程主機名> <本地分支名>  <遠程分支名>
//如果遠程分支被省略,如上則表示將本地分支推送到與之存在追蹤關系的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建
$ git push origin master
//如果省略本地分支名等同于 git push origin --delete master ,會刪除指定遠程分支
$ git push origin :refs/for/master 
//如果當前分支與遠程分支存在追蹤關系,則本地分支和遠程分支都可以省略,將當前分支推送到origin主機的對應分支
$ git push origin
//如果當前分支與多個主機存在追蹤關系,則可以使用 -u 參數(shù)指定一個默認主機,這樣后面就可以不加任何參數(shù)使用git push
$ git push -u origin master 
//克隆一個本地庫   
$ git clone git@github.com:*****
//取回遠程主機某個分支的更新,再與本地的指定分支合并
$ git pull <遠程主機名> <遠程分支名>:<本地分支名>
//將遠程主機origin的master分支拉取過來,與本地的test分支合并
$ git pull origin master:test
//將遠程倉庫的master分支下載到本地當前test中,不會合并
$ git fetch origin master:test
//查看區(qū)別后在選擇是否合并
$ git diff test
//合并
$ git merge test
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,860評論 9 163
  • (預警:因為詳細,所以行文有些長,新手邊看邊操作效果出乎你的預料) 一:Git是什么? Git是目前世界上最先進的...
    axiaochao閱讀 2,008評論 1 8
  • 安裝Git Git的下載地址:Git官網(wǎng)下載地址 Git本地倉庫和命令 配置用戶 下載完Git后,右鍵會有一個Gi...
    TokyoZ閱讀 4,639評論 1 7
  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學習之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 4,141評論 3 27
  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當前所在目錄變成...
    冬絮閱讀 5,140評論 0 9

友情鏈接更多精彩內容