Git使用筆記

1.git配置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

2.git倉庫

git init

3. 添加文件到緩存區

git add [your file name]
//添加目錄下全部文件
git add .

4. 提交

git commit -m "your message about this commit for"

5. git checkout

1.切換到分之dev

git checkout dev

  1. 如果master分之和dev分之的最近一次提交commitID一致的話,那么在兩個分之間切換會把改動也給帶過去了,無論你add與否。
  2. 當兩個分之的最近提交記錄不一樣的時候,如果在一個分之上修改了,但是沒有提交,git不允許切換分之。

2.新建一個分之dev,并且切換到dev

git checkout -b dev

注意切換分之的時候如果,兩個分之

3.強制切換分之

git checkout -f dev

如果master上有沒有提交的修改則會被廢棄

4.檢出一個文件到工作區

  1. 從當前分之的暫存區檢出一個文件到工作區
git checkout -- git.txt

這里 -- 是為了說明后面加的是一個文件,而不是一個分之,避免產生歧義。如果你有一個dev分之,又有一個dev文件,git checkout -- dev 會讓git知道你是要檢出文件而不是切換分之,所以-- 我們一般可以不寫。
當暫存區中沒有一次此文件的暫存時,那么檢出到工作區的是當前分之記錄里面的文件。

  1. 從某次提交中檢出一個文件到工作區
git checkout commit_id -- file

這里你檢出的文件,會被加入暫存區中,也就是你檢出一個文件后,工作區和暫存區中的這個文件是一致的了,但是可能會和當前分之中的不一致。一般來說既然你要特地的檢出一次commit的中一個文件到當前,那么它肯定和當前分之中的文件不一致

  1. 檢出一個commit
git checkout commit_id

這里會把這個分之的檢出到工作區和暫存區,但是這時你不在任何分之上,你可以使用git checkout branch回到一個分之上去,這時你就會回到master上,你的工作區和暫存區也會回到master上。

#這是你檢出一個分之后的提示
Note: checking out '25ea3bef91db5b430bfbd25431bf9f8b9db2a028'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>
  1. 檢查工作區
git checkout

注意這里就是git checkout。這時會去檢查工作區

  1. 基于某一次提前,新建分之
git checkout -b <new-branch-name> commit_id`
  1. 基于當前分之創建一個沒有提交歷史的分之
git checkout --orphan <new-branch-name>

這個可以用來掩蓋你之前混亂的提交歷史,因為之前的提交的歷史全都沒有了

  1. 打補丁
git checkout -p <branch-name>

比較這個分之和當前分之之間的差異

6.git diff

  1. 比較工作區與暫存區
git diff [<path>...]

后面參數就是你要比較的,可以是一個或多個路徑、文件,也可以不加從而比較全部

  1. 比較暫存區與最新本地版本庫
git diff --cached [<path>...]
  1. 比較工作區與版本庫
git diff HEAD [<path>....]
  1. 比較工作區與指定提交
git diff commit_id [<path>...]
  1. 比較暫存區與指定提交
git diff --cached [<commit_id>] [<path>...]
  1. 比較兩個提交之間的差異
git diff [<commit-id>] [<commit-id>]
  1. 生成一個差異補丁
git diff --cached > <patch-name>
git diff --HEAD   >  <patch-name>
git diff <file>   >  <patch-name>

git apply --check <patch-name> 驗證補丁,不輸出任何內容就是對的
git apply <patch-name> 應用補丁

7. git reset

  1. 工作區,暫存區,HEAD都回到某個節點
git reset --hard <commit_id>
  1. 工作區不做改動,暫存區和HEAD回到某個節點
git reset --mixed <commit_id>
  1. 工作區,暫存區都不做改動,HEAD回到某個節點
git reset --soft <commit_id>
  1. 將暫存區的文件reset到HEAD中的
git reset HEAD -- [<file>...]

8.git merge

  1. 合并一個分之
git merge dev

注意這樣合并可能會產生沖突,沖突的解決又會形成一個commit。

9.git rebase

git rebase master

這個基于master分之的最后一次提交然后把dev分之的commit重做一遍,這種模式下沖突的解決是不產生一次commit的

git pull --rebase

先拉取遠端代碼然后重做commit

使用git rebase 可以使你的提交記錄只有一條直線

10. git stash

git stash -p

交互式命令,讓你選擇每個文件的操作方式,這樣就可以暫存部分文件了

git stash save "msg"

暫存當前所有修改,暫時沒發現可以只暫存部分文件的命令

git stash list

查看當前所有暫存

git stash apply stash@{index}

還原某個暫存,并不在stash list 中丟棄

git stash pop stash@{index}

應用并丟棄

git stash drop stash@{index}

不應用直接丟棄

git stash clear

不應用直接丟棄所有暫存

11. git apply

git apply --check patch
git apply --stat patch
git am -3 patch

12. git log

git log <file_name> //單個文件的提交記錄
git log -p <file_name> //單個文件每次提交的diff
git log --author="name"
git log -1 --name-only --pretty=format: ' ' aa524b469c86ac056d63aefcd21108570a9ca1dc //一次提交中修改的文件
git log --stat //查看每個提交的修改文件

13. git show

git show <commit_id> <file_name> //某次提交中某個文件的修改

14. git branch

git branch -vv //可以查看當前分支對應的遠程分支
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • git 使用筆記 git原理: 文件(blob)對象,樹(tree)對象,提交(commit)對象 tree對象 ...
    神刀閱讀 3,794評論 0 10
  • 原文地址主要用到的命令: git config user.name 設置用戶名 git config user....
    AFinalStone閱讀 482評論 0 2
  • 1. 安裝 安裝完成后,需要一步設置,在命令行中輸入: git config --global user.name...
    kevenZheng閱讀 324評論 0 0
  • Git常用語法 [TOC] Git簡介 描述 ? Git(讀音為/g?t/。)是一個開源的分布式版本控制系統,...
    君惜丶閱讀 3,570評論 0 13
  • 轉載顏海鏡的文章 轉自segmentfault 這篇文章記錄個人常用的一些命令,和記不住的一些命令。 《GotGi...
    7ack閱讀 1,045評論 0 2