Git常用命令和詳解,Git命令大全

一. 創建版本庫

版本庫可以理解成一個目錄,在這個目錄里的所有文件都能被Git管理起來,每個文件的修改,刪除都可以被Git跟綜到,以便在將來在需要的時候“還原”。

  1. 第一步:創建一個空的目錄
  • 命令
$ mkdir "文件名“
$ cd "文件名"
$ pwd
  • 詳解:mkdir: 創建一個空的文件
    cd:進入到創建的文件里
    pwd:顯示當前目錄
  1. 第二步:把這個目錄變成Git可以管理的倉庫:
  • 命令
$ git init
Initialized empty Git repository in /文件地址.git/
  • 詳解
    git init: 初始化Git倉庫,Git可以管理了
    并且告訴你是一個空的倉庫(empty Git repository),當前目錄下多了一個.git目錄,這個目錄就是Git來跟蹤管理版本庫的,沒事千萬不要修改這個目錄里面的文件,不然就把Git倉庫給破壞了。

二. 把文件添加到版本庫

  • 命令
  1. 第一步 git add 文件名 (添加到暫存區)
  2. 第二步 git commit -m "說明/備注" (提交到倉庫中)
  • 詳解
    git status:可以看到暫存區的修改,有哪些沒有提交到倉庫中去
    git diff:可以看到哪些具體的內容被修改了,顧名思義就是查看difference

二. 1 版本回退

  • 命令
    git log:可以查看由近到遠的提交日志
    git log --pretty=oneline:和git log作用一樣,簡化了輸出內容,只有一大串的commit id(版本號)和提交時的備注
    回退命令
$ git reset --hard HEAD^  // 回退到上一個版本
$ cat 文件名   // 輸出當前文件內容 

回退到之前未來(指定)的版本

$ git reset --hard commit id  //  根據commit id回退到指定版本

Git的版本回退速度非常快,因為Git在內部有個指向當前版本的HEAD指針,當你回退版本的時候,Git僅僅是改變了HEAD的指針指向;
然后順便把工作區的文件更新了。所以你讓HEAD指向哪個版本號,你就把當前版本定位在哪。
想回退到某一個版本,但是不知道commit id 怎么辦?
有后悔藥!

$ git reflog   // 這個命令是用來記錄每一次的命令的。

這樣就可以根據commit id回到指定的版本了??

下面直接放Git命令:

1. 設置


$ git config --global user.name "Your Name"
$ git config --global user.email "Your email"
$ cat ~/.gitconfig  // 查看email和name是什么

2. 本地分支


$ git init  // 初始化當前文件夾,讓Git能夠管理
$ git add  //  添加文件到暫存區
$ git commit -m "提交信息"  // 暫存區的文件提交的當前分支
$ git status  // 查看狀態
$ git diff // 查看修改
$ git log // 查看歷史記錄(窗口不關閉) 有--pretty=oneline的參數:可以只顯示提交信息
$ git reset --hard HEAD^  // 回到上一個版本,也可以把暫存區的修改回退到工作區
$ git reset --hard "commit id"  // 回到指定版本
$ cat "文件名" // 查看當前文件的內容
$ git reflog // 記錄每一次的命令(窗口關閉也能查到)主要是查看commit id,回到某一個版本
$ git diff HEAD -- "文件名" // 查看工作區和版本庫的最新區別
$ git checkout -- "文件名"  // 把工作區的修改全部撤銷:1.沒有放到暫存區的,就撤銷修改,回到和版本庫一模一樣。 2.添加到暫存區后的,又做了修改,那就回到添加到暫存區 之后的狀態。(總之就是回到最近的一次git add 或者 git commit)。PS:如果沒有--就是切換分支的命令。
$ git rm "name"  // 刪除一個文件

3. 遠程倉庫


$ ssh-keygen -t rsa -C "Your email"  // 生成公鑰和私鑰 地址:/admin/.ssh/...
$ git remote add origin git@github.com:z-Growup977/test // 本地關聯遠端
$ git push -u origin master // 本地推送到遠程 -u參數和推送的分支關聯起來
$ git remote -v // 查看遠程庫信息 不帶-v只顯示倉庫g名稱
$ git remote rm origin // 刪除origin(其實是解除和遠程的綁定關系)
$ git clone git@github.com:z-Growup977/gitskills.git // 本地從遠端克隆倉庫
$ ls // 查看當前文件夾下的文件
$ git push origin <branch-name>  // 推送自己本地的修改
$ git pull // 遠程比本地更新,用這個命令合并
$ git branch --set-upstream-to <branch-name> origin/<branch-name>  //  git pull時提示 no tracking information說明沒有創建連接。需用這個命令創建本地和遠程的連接
$ git checkout -b <branch-name> origin/<branch-name> // 在本地創建和遠程對應的分支

4. 分支管理

$ git checkout -b dev // -b 表示創建并切換到dev分支
$ git branch // 查看所有分支 *標記的是當前分支
$ git branch dev // 創建分支
$ git checout dev // 根據分支名切換分支。
$ git merge dev // dev合并到當前分支
$ git branch -d dev // 刪除dev分支
$ git branch -D dev // 強制刪除分支
$ -------------------------下面是新版本的切換命令switch 
$ git switch -c dev // 創建并切換到dev分支
$ git switch main  // 切換到main分支
$ -------------------------
$ git log --graph --pretty=oneline --abbrev-commit  // 查看分支的合并情況
$ git merge --no--ff -m "描述" dev  // 加上--no-ff參數能從歷史中看出合并記錄,本次合并會創建一個新的commit 所以帶上-m說明
$ git rebase // 把本地未push的分叉提交歷史整理成直線,最終結果是和merge是一樣的。
$ git stash // 把當前工作現場“儲藏”起來。
$ git stash list // 查看儲藏起來的工作區
$ git stash pop // 恢復儲藏區,并刪除stash內容
$ git stash apply // 恢復儲藏區但不刪除,需要用:git stash drop刪除
$ git stash apply stash@{0} // 恢復指定的stash
$ git cherry-pick <commit id> // 復制一個特定的提交到當前分支

5. 標簽管理 tag


$ git tag <name> // 創建tag標簽 默認為HEAD
$ git tag  // 查看所有標簽
$ git tag <name> <commit id> // 指定提交id打上標簽
$ git tag -a <name> -m "shuoming" <commit id> // 創建帶有說明的標簽,-a指定標簽名,-m 指定說明
$ git tag -d <tagname> // 刪除某個本地標簽
$ git push origin main --tags  // 推送所有本地標簽到遠程倉庫
$ git push origin <tagname> // 推送某個本地標簽到遠程
如果標簽已經推送到遠程刪除的話就需要先刪除本地標簽,再刪除遠程:
$ git push origin :refs/tags/<tagname> // 刪除某個遠程標簽,登錄Github查看

!!注意:標簽總是和某個commit id掛鉤。如果這個commit id即出現在main分支,又出現在dev分支,那么這兩個分支都可以看到這個標簽。

6. 忽略特殊文件
就是在Git提交的時候,不想提交的文件我們可以:

  1. 在Git工作區的目錄下創建文件: .gitignore
  2. 然后把想要忽略的文件名字填寫到這個文件里面。
  3. 最后就是把.gitignore文件提交到Git
    如果想要添加可以 git add -f <name> // 使用-f可以強制添加。

7. 配置別名(偷懶)

$ git config --global alias.<別名> <"原名"> // 配置別名是為了簡單好記,--global是全局參數,所有Git倉庫都能使用。
下面是一些常用的別名設置方法:
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'  // 把暫存區的修改撤銷掉(unstage),重新放回工作區。
$ git config --global alias.last 'log -1'  // 顯示最后一次提交信息

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容