一、git基本命令
創建SSH Key 生成Ed25519密鑰
ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "you@example.com"
參數說明:
-o : 使用新的OpenSSH格式來存儲私鑰,當使用ed25519格式時,默認會啟用此選項
-a : 進行幾輪KDF。值越大則密碼驗證越慢,也能更好的抗暴力破解。
-t : 創建的key的類型,我們使用ed25519
-f : 生成的文件名
-C : 可選注釋,通常寫自己的郵箱
配置用戶信息
git config --global user.name "myname"
git config --global user.email xxxx@example.com
配置 Git 別名
git config --global alias.st status
git config --global alias.ck checkout
git config --global alias.ci commit
git config --global alias.br branch
在當前目錄下新建一個git倉庫
git init
克隆一個遠端庫
git clone 倉庫地址
把文件添加到倉庫
git add 文件
提交文件
git commit -m "提交的信息"
提交到代碼到主干
git push origin master
拉取遠程分支到本地
git pull origin master
查看倉庫當前狀態
git status
查看最近更改內容
git diff
顯示最近到最遠的提交日志
git log
關聯一個本地倉庫到未初始化的遠程倉庫,例如GitHub倉庫上
git remote add origin git@github.com:<name>/<name>.git
git push -u origin master
恢復到之前提交版本
git reset --hard HEAD^(提交ID)
查看命令歷史以便回到未來
git reflog
當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令
git checkout —- file
當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,
想丟棄修改,分兩步,第一步用命令
git reset HEAD file
然后再
git checkout —file
二、分支
創建一個分支并切換到此分支
git checkout -b 分支名字
將本地分支推送到遠程服務器
git push --set-upstream origin 分支名字
查看當前分支
git branch
切換到master主干
git checkout master
合并分支
git merge 分支名字
git merge test 表示test合并到master
放棄合并分支
git merge --abort
刪除分支
git branch -D 分支名字
刪除遠程的一個分支
git push origin --delete 分支名字
推送一個空分支到遠程,相當于刪除遠程的一個分支
git push origin :refs/heads/分支名字
刪除遠程不存在的本地分支
git fetch -p
刪除遠程分支報錯可能是此分支為工程默認分支
解決辦法:
1.進入 github 中該項目的 Settings 頁面
2.設置 Default Branch 為其他的分支(例如 master)
3.重新執行刪除遠程分支命令
三、標簽
創建標簽
git tag v1.0(名字隨便寫)
查看所有標簽
git tag
指定的提交上打標簽
git tag v0.2 commit_id
查看標簽信息
git show v0.1
指定標簽信息
git tag -a 標簽名字 -m "blablabla..."
把本地所有的tag推送到遠程
git push origin --tags
推送一個本地標簽
git push origin 標簽名字
獲取遠程tag
git fetch origin tag 標簽名字
刪除標簽
git tag -d v0.1
如果一個標簽已經推送到遠程再刪除就先刪除本地標簽再刪除遠端標簽
git tag -d v0.1
git push origin :refs/tags/標簽名字
四、遠程倉庫操作
Git 遠程倉庫地址變更
git remote set-url origin git@github.com:xxxxx
獲取遠程倉庫所有的變動
git fetch
獲取所有本地分支和遠程分支
git branch -a
獲取一個遠程分支到本地
git checkout -b <本地分支名字> origin/<遠程分支名字>
本地分支關聯到一個遠程分支
git branch --set-upstream-to=origin/<遠程分支> <本地分支>
推送本地的分支到遠程origin的分支(沒有會自動創建)
git push origin <本地分支>:<遠程分支>
強制推送本地提交到服務器
git push -f origin master
git查看本地分支關聯(跟蹤)的遠程分支之間的對應關系,本地分支對應哪個遠程分支
git branch -vv
五、關于添加git忽略文件
在git中如果想忽略掉某個文件,不讓這個文件提交到版本庫中,可以在根目錄中添加 .gitignore 文件,但是有時候會不生效,原因是.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未track狀態),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
六、關于Fork的一些命令
有時候Fork完原作者倉庫之后,需要跟遠程倉庫更新同步一下,那么就需要以下幾步操作
1.首先 把作者的倉庫添加到自己的上游遠程,通常命名為 upstream,操作一次就可以了
git remote add upstream git@github.com:xxx/xxx.git
2.查看遠程主機狀態,可以看到一個origin是你的,另外一個upstream是原作者的
git remote -v
3.拉取原作者的倉庫更新
git fetch upstream
4.merge或者rebase到自己的的分支上
git merge upstream/<對應分支>
5.最后推送到自己的遠程倉庫就行了
git push
有時候其他人在上游倉庫 (upstream) 新建了一個分支 test,然而我的 origin (遠程個人倉庫,非電腦中的本地倉庫)中沒有這個分支,我需要在 test 分支上進行開發并與上游追蹤,如何將新分支 test 插入origin中了,步驟如下:
1. 確保工作樹是干凈的,可以使用 git status 查看
2. 創建并切換到新的上游分支的本地版本 git checkout -b test upstream/test
3. 將新的分支推送到個人遠程倉庫 git push -u origin test, -u 跟蹤指定的遠程
七、其他操作
1.檢出某次提交
git cherry-pick <commit_id>
2.暫存
git stash
3.恢復暫存
git stash pop {暫存記錄}
4.查看所有暫存記錄
git stash list
5.配置別名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
推薦Git教程 :廖雪峰Git教程