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的相關信息。
- 配置全局的用戶名和郵箱,mac下可通過終端輸入命令
cat ~/.gitconfig
查看配置信息。- 設置用戶名:
git config --global user.name "name"
- 設置用戶郵箱:
git config --global user.email "eamil"
- 設置用戶名:
- 針對單個倉庫配置用戶名和郵箱,mac下可通過終端進入到項目的根目錄中,然後輸入命令
cat .git/config
查看配置信息。- 設置用戶名:
git config user.name "name"
- 設置用戶郵箱:
git config user.email "eamil"
- 設置用戶名:
- 查看git所有配置信息:
git config --list
- 查看配置的用戶名:
git config user.name
- 查看配置的用戶郵箱:
git config user.email
- 定義命令別名:
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
命令的作用是顯示文件狀態,紅色表示工作目錄的文件被修改但還沒有提交到暫存區,綠色表示已經提交到暫存區。
- 以極簡的方式顯示文件狀態:
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
命令的作用是將文件從工作目錄添加至暫存區
- 把所有修改的信息添加到暫存區:
git add .
- 把所有跟蹤文件中被修改過或已刪除的文件信息添加至暫存區:
git add -u
或git add --update
,它不會處理那些沒有被跟蹤的文件 - 把所有跟蹤文件中被修改過或已刪除文件和所有未跟蹤的文件信息添加到暫存區:
git add -A
或git add --all
注意:git add .
和git add -A
在2.x版本中提交類型方面功能相同,但會因爲所在目錄不同產生差異:
git add .
只會提交當前目錄或者子目錄下相應文件。git add -A
無論在哪個目錄執行都會提交相應文件。
已經被提交到暫存區的文件,可以通過命令git reset HEAD -- fileName
撤銷提交。
git commit
git commit
命令的作用是將暫存區的修改提交到本地倉庫,同時會生成一個commmit-id。
- 將暫存區的修改提交到本地倉庫:
git commit -m "message"
,"message"是本次提交的簡述內容,比如添加新功能或修復bug等 - 將本地工作區中修改後還未使用
git add .
命令添加到暫存區中的文件也提交到本地倉庫:git commit –a –m "message"
,該命令相當於以下兩條命令:git add .
:把所有修改的信息添加到暫存區git add -m "message"
:將暫存區的修改提交到本地倉庫
- 修改最後一次提交(可用於漏掉某個文件的提交或重新編輯信息):
git commit --amend
git pull
git pull
命令的作用是獲取遠程主機某個分支的更新,再與本地指定分支合併。git pull <遠程主機名><遠程分支名>:<本地分支名>
- 取回遠程主機上的dev分支與本地的master分支合併:
git pull origin dev:master
- 取回遠程主機上的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
中
- 獲取遠程主機上master分支的代碼:
git fetch origin
- 在本地新建test分支,並將遠程主機上master分支代碼下載到本地test分支:
git fetch origin master:test
git push
git push
命令的作用是將本地分支的更新推送到遠程主機上。
- 將本地
master
分支的更新推送到遠程主機上:git push origin master
- 刪除遠程dev分支:
git push origin --delete dev
git branch
git branch
命令的作用主要是做分支管理操作。
- 查看本地分支:
git branch
- 查看本地和遠程分支:
git branch -a
- 新建名字爲test的分支:
git branch test
- 將test分支名字改爲dev:
git branch -m test dev
- 刪除名字爲dev的分支:
git branch -d dev
以上命令都是針對本地倉庫操作,不影響遠程倉庫。
git checkout
git checkout
命令最常用的情形是創建和切換分支以及撤銷工作區的修改。
- 切換到tag爲v1.0.0時對應的代碼:
git checkout v1.0.0
- 在tag爲v1.0.0的基礎上創建分支名爲test的分支:
git checkout -b test v1.0.0
。該命令相當於以下兩條命令:git branch test v1.0.0
:在v1.0.0的基礎上創建分支testgit checkout v1.0.0
:切換到分支test
- 把當前目錄所有修改的文件從HEAD中移除並且把它恢復成未修改時的樣子:
git checkout .
- 撤銷工作目錄中文件的修改(文件有改動但還未
git add
):git checkout -- fileName
,或者撤銷所有修改使用git checkout .
git tag
git tag
命令主要是對項目標籤進行管理。
- 查看已有的標籤歷史記錄:
git tag
- 給當前最新的commit打上標籤:
git tag <標籤的定義>
- 給對應的commit id打上標籤:
git tag <標籤定義> <commit id>
git log
git log
命令的作用是查看歷史提交記錄
- 查看歷史提交記錄:
git log
- 將每條歷史提交記錄展示成一行:
git log --oneline
- 查看某個人的提交記錄:
git log --author="name"
- 顯示ASCII圖形表示的分支合併歷史:
git log --graph
- 顯示前n條記錄:
git log -n
- 顯示某個日期之後的記錄:
git log --after="2018-10-1"
,包含2018年10月1號的記錄 - 顯示某個日期之前的記錄:
git log --after="2018-10-1
,包含2018年10月1號的記錄 - 顯示某兩個日期之間的記錄:
git log --after="2018-10-1" --before="2018-10-7"
git reset
git reset
命令的作用是撤銷暫存區的修改或本地倉庫的提交。
- 撤銷已經提交到暫存區的文件(已經
git add
但還未git commit
):- 撤銷已經提交到暫存區的文件:
git reset HEAD fileName
或git reset --mixed HEAD fileName
- 撤銷所有提交:
git reset HEAD .
或git reset --mixed HEAD .
- 撤銷已經提交到暫存區的文件:
- 對已經提交到本地倉庫做撤銷(已經
git commit
但還未git push
):- 將頭指針恢復,已經提交到暫存區以及工作區的內容都不變:
git reset --soft commit-id
或git reset --soft HEAD~1
- 將頭指針恢復並且撤銷暫存區的提交,但是工作區的內容不變:
git reset --mixed commit-id
或git reset --mixed HEAD~1
- 將所有內容恢復到指定版本:
git reset --hard commit-id
或git reset --hard HEAD~1
- 將頭指針恢復,已經提交到暫存區以及工作區的內容都不變:
注意:commit-id
可通過git log
查看(取前六位即可),HEAD~1
表示前一次提交(可以此類推)。
git remote
git remote
命令的作用主要是管理遠程倉庫。
- 查看關聯的遠程倉庫的名稱:
git remote
- 查看關聯的遠程倉庫的詳細信息:
git remote -v
- 添加遠程倉庫的關聯:
git remote add origin <遠程倉庫地址>
- 刪除遠程倉庫的關聯:
git remote remove <遠程倉庫名稱>
- 修改遠程倉庫的關聯:
git remote set-url origin <新的遠程倉庫地址>
- 更新遠程倉庫的分支:
git remote update origin --prune
git merge
git merge
命令的作用主要是分支的合併。
1:如果當前是master分支,需要合併dev分支:git merge dev
git stash
git stash
命令的作用主要如果當前分支所做的修改你還不想提交,但又需要切換到其他分支去查看,就可以使用git stash
保存當前的修改。
- 保存當前進度:
git stash
- 查看已經保存的歷史記錄:
git stash list
- 重新應用某個已經保存的jil,並且刪除進度記錄:
git stash pop <歷史進度id>
, - 重新應用某個已經保存的進度,但不刪除進度記錄:
git stash apply <歷史進度id>
,如果直接使用git stash
默認是使用最近的保存 - 刪除某個歷史進度:
git stash drop <歷史進度id>
- 刪除所有的歷史進度:
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內容即可。