git使用總結

git官網:https://git-scm.com/docs/git

git常用命令:https://blog.csdn.net/lxw198902165221/article/details/89228458

項目忽略提交設置:https://www.cnblogs.com/YangJieCheng/p/8175761.html

圖形化管理工具-sourcetree

git config

  git config命令的作用是配置git的相關信息。

  1. 配置全局的用戶名和郵箱,mac下可通過終端輸入命令cat ~/.gitconfig查看配置信息。
    • 設置用戶名:git config --global user.name "name"
    • 設置用戶郵箱:git config --global user.email "eamil"
  2. 針對單個倉庫配置用戶名和郵箱,mac下可通過終端進入到項目的根目錄中,然後輸入命令cat .git/config查看配置信息。
    • 設置用戶名:git config user.name "name"
    • 設置用戶郵箱:git config user.email "eamil"
  3. 查看git所有配置信息:git config --list
  4. 查看配置的用戶名:git config user.name
  5. 查看配置的用戶郵箱:git config user.email
  6. 定義命令別名:
    • git config --global alias.st status:則git status可用git st代替
    • git config --global alias.co checkout:則git checkout可用git co代替
    • git config --global alias.ci commit:則git commit可用git ci代替
    • git config --global alias.br branch:則git branch可用git br代替

也可以自定義其他命令的別名,主要合理且方便操作即可。

git init

  git init命令的作用是在當前目錄中初始化倉庫,並且創建一個名爲.git的子目錄,該目錄含有你初始化的Git倉庫中所有的必須文件。

git status

  git status命令的作用是顯示文件狀態,紅色表示工作目錄的文件被修改但還沒有提交到暫存區,綠色表示已經提交到暫存區。

  1. 以極簡的方式顯示文件狀態:git status -s
    • A:本地新增的文件(服務器上沒有)
    • C:文件的一個新拷貝
    • D:本地刪除的文件(服務器上還在)
    • M:紅色爲修改過未被添加進暫存區的,綠色爲已經添加進暫存區的
    • R:文件名被修改
    • T:文件的類型被修改
    • U:文件沒有被合併(你需要完成合並才能進行提交)
    • X:未知狀態(很可能是遇到git的bug了,你可以向git提交bug report)
    • ?:未被git進行管理,可以使用git add fileName把文件添加進來進行管理

已經被修改但還沒提交到暫存區的文件,可以通過命令git checkout -- fileName撤銷更改。

git add

  git add命令的作用是將文件從工作目錄添加至暫存區

  1. 把所有修改的信息添加到暫存區:git add .
  2. 把所有跟蹤文件中被修改過或已刪除的文件信息添加至暫存區:git add -ugit add --update,它不會處理那些沒有被跟蹤的文件
  3. 把所有跟蹤文件中被修改過或已刪除文件和所有未跟蹤的文件信息添加到暫存區:git add -Agit add --all

注意:git add .git add -A在2.x版本中提交類型方面功能相同,但會因爲所在目錄不同產生差異:

  • git add .只會提交當前目錄或者子目錄下相應文件。
  • git add -A無論在哪個目錄執行都會提交相應文件。

已經被提交到暫存區的文件,可以通過命令git reset HEAD -- fileName撤銷提交。

git commit

  git commit命令的作用是將暫存區的修改提交到本地倉庫,同時會生成一個commmit-id。

  1. 將暫存區的修改提交到本地倉庫:git commit -m "message","message"是本次提交的簡述內容,比如添加新功能或修復bug等
  2. 將本地工作區中修改後還未使用git add .命令添加到暫存區中的文件也提交到本地倉庫:git commit –a –m "message",該命令相當於以下兩條命令:
    • git add .:把所有修改的信息添加到暫存區
    • git add -m "message":將暫存區的修改提交到本地倉庫
  3. 修改最後一次提交(可用於漏掉某個文件的提交或重新編輯信息):git commit --amend

git pull

  git pull命令的作用是獲取遠程主機某個分支的更新,再與本地指定分支合併。git pull <遠程主機名><遠程分支名>:<本地分支名>

  1. 取回遠程主機上的dev分支與本地的master分支合併:git pull origin dev:master
  2. 取回遠程主機上的dev分支與當前分支合併:git pull origin dev,該命令相當於以下兩條命令:
    • git fetch origin:獲取遠程主機上所有分支的更新,也可以用git fetch origin dev表示獲取遠程主機上dev分支的更新
    • git merge origin/dev:當前分支合併dev分支

注意:通過git fetch所取回的更新,在本地主機上需要用“遠程主機名/分支名”的形式讀取,比如origin主機的master分支,就需要用origin/master來讀取。

git feach

  git feach命令的作用是將遠程主機上所有分支的更新取回本地,並記錄在.git/FETCH_HEAD

  1. 獲取遠程主機上master分支的代碼:git fetch origin
  2. 在本地新建test分支,並將遠程主機上master分支代碼下載到本地test分支:git fetch origin master:test

git push

  git push命令的作用是將本地分支的更新推送到遠程主機上。

  1. 將本地master分支的更新推送到遠程主機上:git push origin master
  2. 刪除遠程dev分支:git push origin --delete dev

git branch

  git branch命令的作用主要是做分支管理操作。

  1. 查看本地分支:git branch
  2. 查看本地和遠程分支:git branch -a
  3. 新建名字爲test的分支:git branch test
  4. 將test分支名字改爲dev:git branch -m test dev
  5. 刪除名字爲dev的分支:git branch -d dev

以上命令都是針對本地倉庫操作,不影響遠程倉庫。

git checkout

  git checkout命令最常用的情形是創建和切換分支以及撤銷工作區的修改。

  1. 切換到tag爲v1.0.0時對應的代碼:git checkout v1.0.0
  2. 在tag爲v1.0.0的基礎上創建分支名爲test的分支:git checkout -b test v1.0.0。該命令相當於以下兩條命令:
    • git branch test v1.0.0:在v1.0.0的基礎上創建分支test
    • git checkout v1.0.0:切換到分支test
  3. 把當前目錄所有修改的文件從HEAD中移除並且把它恢復成未修改時的樣子:git checkout .
  4. 撤銷工作目錄中文件的修改(文件有改動但還未git add):git checkout -- fileName,或者撤銷所有修改使用git checkout .

git tag

  git tag命令主要是對項目標籤進行管理。

  1. 查看已有的標籤歷史記錄:git tag
  2. 給當前最新的commit打上標籤:git tag <標籤的定義>
  3. 給對應的commit id打上標籤:git tag <標籤定義> <commit id>

git log

  git log命令的作用是查看歷史提交記錄

  1. 查看歷史提交記錄:git log
  2. 將每條歷史提交記錄展示成一行:git log --oneline
  3. 查看某個人的提交記錄:git log --author="name"
  4. 顯示ASCII圖形表示的分支合併歷史:git log --graph
  5. 顯示前n條記錄:git log -n
  6. 顯示某個日期之後的記錄:git log --after="2018-10-1",包含2018年10月1號的記錄
  7. 顯示某個日期之前的記錄:git log --after="2018-10-1,包含2018年10月1號的記錄
  8. 顯示某兩個日期之間的記錄:git log --after="2018-10-1" --before="2018-10-7"

git reset

  git reset命令的作用是撤銷暫存區的修改或本地倉庫的提交。

  1. 撤銷已經提交到暫存區的文件(已經git add但還未git commit):
    • 撤銷已經提交到暫存區的文件:git reset HEAD fileNamegit reset --mixed HEAD fileName
    • 撤銷所有提交:git reset HEAD .git reset --mixed HEAD .
  2. 對已經提交到本地倉庫做撤銷(已經git commit但還未git push):
    • 將頭指針恢復,已經提交到暫存區以及工作區的內容都不變:git reset --soft commit-idgit reset --soft HEAD~1
    • 將頭指針恢復並且撤銷暫存區的提交,但是工作區的內容不變:git reset --mixed commit-idgit reset --mixed HEAD~1
    • 將所有內容恢復到指定版本:git reset --hard commit-idgit reset --hard HEAD~1

注意:commit-id可通過git log查看(取前六位即可),HEAD~1表示前一次提交(可以此類推)。

git remote

  git remote命令的作用主要是管理遠程倉庫。

  1. 查看關聯的遠程倉庫的名稱:git remote
  2. 查看關聯的遠程倉庫的詳細信息:git remote -v
  3. 添加遠程倉庫的關聯:git remote add origin <遠程倉庫地址>
  4. 刪除遠程倉庫的關聯:git remote remove <遠程倉庫名稱>
  5. 修改遠程倉庫的關聯:git remote set-url origin <新的遠程倉庫地址>
  6. 更新遠程倉庫的分支:git remote update origin --prune

git merge

  git merge命令的作用主要是分支的合併。

1:如果當前是master分支,需要合併dev分支:git merge dev

git stash

  git stash命令的作用主要如果當前分支所做的修改你還不想提交,但又需要切換到其他分支去查看,就可以使用git stash保存當前的修改。

  1. 保存當前進度:git stash
  2. 查看已經保存的歷史記錄:git stash list
  3. 重新應用某個已經保存的jil,並且刪除進度記錄:git stash pop <歷史進度id>
  4. 重新應用某個已經保存的進度,但不刪除進度記錄:git stash apply <歷史進度id>,如果直接使用git stash默認是使用最近的保存
  5. 刪除某個歷史進度:git stash drop <歷史進度id>
  6. 刪除所有的歷史進度:git stash clear

gitignore

  .gitignore文件的作用是忽略那些沒必要的提交,比如系統環境或程序運行時產生的文件。GitHub爲我們提供了各個語言的gitignore合集github/gitignore,其中也包括Android.gitignore

將本地新建的項目提交到遠程倉庫的步驟

  • 初始化本地倉庫git init
  • 將本地內容添加至git本地暫存區中git add .
  • 將暫存區添加至本地倉庫中git commit -m "first commit"
  • 添加遠程倉庫路徑git remote add origin https://github.com/gybguohao/test.git
  • 將本地內容push至遠程倉庫中git push -u origin master

祕鑰配置

  • mac終端查看是否已經存在SSH密鑰:cd ~/.ssh,如果沒有密鑰則不會有此文件夾。

  • 生成新的祕鑰, 命令如下
    ssh-keygen -t rsa -C "eamil"
    你需要把郵件地址換成你自己的郵件地址,然後一路回車,使用默認值即可,因爲這個個Key僅僅用於簡單的服務,所以也無需設置密碼。

    完成後會有如下顯示

    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /Users/gybguohao/.ssh/id_rsa。
    Your public key has been saved in /Users/gybguohao/.ssh/id_rsa.pub。
    The key fingerprint is:
    SHA256:5V6ZCQNS/3bVdl0GjGgQpWMFLazxTslnKbW2B1mbC+E eamil

    如果服務器端需要公鑰, 直接複製.ssh目錄下的id_rsa.pub內容即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章