標籤:

Git 命令總結

基本命令

# 安裝Gitn$ sudo apt install gitnn# 配置個人信息n$ git config --global user.name "Your Name"n$ git config --global user.email "email@example.com"nn# 切換目錄初始化n$ git initnn# 文件添加到倉庫n$ git add -p <file>nn# 把文件提交到倉庫n$ git commit -m "add LICENSE"nn# 查看倉庫當前狀態n$ git statusnn# 查看differencen$ git diffnn# 顯示從最近到最遠的提交日誌n$ git log --pretty=oneline # 格式化輸出信息nn# 版本退回n$ git reset --hard HEAD^ # 當前版本HEAD,上一個版本HEAD^,上上個版本HEAD^^n$ git reset --hard 130f10a # 或HEAD~100nn# 查看命令記錄n$ git reflognn# 丟棄工作區的修改,回到最近一次git commit或git add時的狀態:n$ git checkout -- README.mdnn# 把暫存區的修改撤銷掉(unstage)n$ git reset HEAD READER.mdnn# 從版本庫中刪除該文件n$ git rm README.mdn$ git commit -m "remove READER.md"nn# 把誤刪的文件恢復到最新版本,checkout其實用版本庫里的版本替換工作區的版本n$ git checkout -- README.mdn

遠程倉庫

$ ssh-keygen -t rsa -C "youremail@example.com"n# 測試是否成功n$ ssh -T git@github.comnn# 把一個已有的本地倉庫與之關聯n$ git remote add origin git@github.com:Windrivder/Windrivder.gitnn# 把本地庫的所有內容推送到遠程庫上(推送master分支的內容)n$ git push -u origin masternn# 向遠程庫推送更新n$ git push origin masternn# 從遠程庫克隆n$ git clone git@github.com:michaelliao/gitskills.gitn

分支管理

# 創建+切換dev分支n$ git checkout -b devnn# 相當於n$ git branch dev # 創建分支n$ git checkout devnn# 查看當前分支,當前分支前面標有×號n$ git branchnn# 切換回master分支n$ git checkout masternn# 合併指定分支到當前分支n$ git merge devnn# 刪除dev分支n$ git branch -d devnn# 查看分支合併情況n$ git log --graph --pretty=oneline --abbrev-commitn* 59bc1cb conflict fixedn|n| * 75a857c AND simplen* | 400b400 & simplen|/n* fec145a branch testnn# 刪除feature1分支n$ git branch -d feature1nn# 創建並切換dev分支n$ git checkout -b devnn# 修改readme.txt文件,並提交一個新的commitn$ git add readme.txtn$ git commit -m "add merge"nn# 切換回mastern$ git checkout masternn# 合併dev分支,請注意--no-ff參數,表示禁用Fast forwardn$ git merge --no-ff -m "merge with no-ff" devnn# 看看分支歷史n$ git log --graph --pretty=oneline --abbrev-commitn* 7825a50 merge with no-ffn|n| * 6224937 add mergen|/n* 59bc1cb conflict fixednn# 如果需要臨時修復Bug,可以把當前工作現場「儲藏」起來,等Bug修復後恢復現場後繼續工作n$ git stashnn# 此時查看工作區是乾淨n# 切換到需要修復Bug的分支,創建臨時分支來修復n$ git checkout mastern$ git checkout -b issue-101nn# 修復完成後切換到master分支,完成合併,刪除臨時分支n$ git checkout mastern$ git merge --no-ff -m "merged bug fix 101" issue-101n$ git branch -d issue-101nn# Bug修復後,切換回dev分支繼續幹活n$ git checkout devnn# 查看工作現場列表n$ git stash listnn# 恢復工作現場n$ git stash pop # 恢復的同時把stash內容也刪了n$ git stash apply # 恢復,不刪除stash的內容,使用git stash dropnn# 再次查看工作現場列表,乾淨n$ git stash listnn# 可以多次stash,恢復時指定恢復n$ git stash apply stash@{0}nn# 強行刪除一個沒有合併過的分支n$ git branch -D <name>nn# 要查看遠程庫的信息n$ git remoten$ git remote -vnn# 推送其他分支n$ git push origin devnn# 從遠程庫clone,默認情況只能看到master分支,需要在dev分支,必須創建遠程origin的dev分支到本地n$ git checkout -b dev origin/devn$ git checkout -b branch-name origin/branch-namen$ git branch --set-upstream branch-name origin/branch-name # 關聯nn# 向遠程庫推送dev有衝突n$ git pull # 抓取到本地合併解決衝突,再向遠程推送n$ git push origin devn

標籤管理

# 切換到需要打標籤的分支n$ git branchn$ git checkout masternn# 創建標籤n$ git tag v1.0nn# 查看所有標籤n$ git tagnn# 給歷史提高的commit id打標籤n$ git log --pretty=oneline --abbrev-commit # 查看commit idn$ git tag v0.9 6224937nn# 查看標籤信息n$ git show v0.9nn# 創建帶有說明的標籤n$ git tag -a v0.1 -m "version 0.1 released" 3628164nn# 用PGP簽名標籤n$ git tag -s <tagname> -m "blablabla..."nn# 推送某個標籤到遠程n$ git push origin v1.0nn# 一次性推送全部尚未推送到遠程的本地標籤n$ git push origin --tagsnn# 刪除遠程標籤n$ git tag -d v0.9 # 刪除本地n$ git push origin :refs/tags/v0.9 # 刪除遠程n

自定義 Git

# 顯示顏色,會讓命令輸出看起來更醒目n$ git config --global color.ui truenn# 忽略某些文件時,需要編寫.gitignore,然後將.gitignore放到版本庫中n# st就表示statusn$ git config --global alias.st statusnn# 配置一個unstage別名n$ git config --global alias.unstage reset HEADn$ git unstage test.py # 等價於n$ git reset HEAD test.pynn# 顯示最後一次提交信息n$ git config --global alias.last log -1nn# logngit 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"n# 每個倉庫的配置文件放在.git/confign# 當前用戶的配置文件放在用戶主目錄下的一個隱藏文件.gitconfig中n

搭建 Git 伺服器

1. 安裝 git:

$ sudo apt-get install gitn

2. 創建一個 git 用戶,用來運行 git 服務:

$ sudo adduser gitn

3. 創建證書登錄:收集所有需要登錄的用戶的公鑰,就是他們自己的 id_rsa.pub 文件,把所有公鑰導入到 /home/git/.ssh/authorized_keys 文件里,一行一個

4. 初始化 Git 倉庫:

# 選定一個目錄作為 Git 倉庫,假定是 /srv/sample.git,在 /srv 目錄下輸入命令

$ sudo git init --bare sample.gitn# 把 owner 改為 gitn$ sudo chown -R git:git sample.gitn

5. 禁用 shell 登錄:

# 編輯/etc/passwd文件ngit:x:1001:1001:,,,:/home/git:/bin/bash # 修改成下面的內容ngit:x:1001:1001:,,,:/home/git:/usr/bin/git-shelln

6. 克隆遠程倉庫,在各自的電腦上運行:

$ git clone git@server:/srv/sample.gitn

參考

Git教程 --> 廖老師@廖雪峰寫的 Git 教程,牆裂推薦!!!

推薦閱讀:

TAG:编程 | Git | Python |