經常使用git命令要經常使用

請放棄IDE中git的傻瓜式操做,下面經過移步換景的方式熟悉經常使用git命令,而後愛不釋手。git

場景1 上傳代碼到遠程倉庫

# 初始化git倉庫
git init
# 所有寫入暫存區
git add .
# 將暫存區內容添加到本地倉庫
git commit -m "first commit"
# 關聯遠程倉庫
git remote add origin https://github.com/username/*.git
# 提交到遠程倉庫
git push -u origin master

以上操做完成後,代碼就順利上傳到遠程倉庫了。github

場景2 查看操做記錄

# 查看工做區和和暫存區的文件狀態
git status
# 查看所有的提交記錄
git log
# 查看某人的提交記錄
git log --author='username'
# 查看文件提交記錄和commit id
git log --pretty=oneline 目錄/文件名
# 查看某次提交的操做記錄
git show  <commit id>
# 查看文件操做記錄和文件變化
git log -p 目錄/文件名
# 查看簡寫的提交記錄
git log --oneline
# 查看版本路線
git log --oneline --graph

git log命令的更多參數,請查閱官方文檔。bash

場景3 配置用戶名和郵箱

# 配置用戶名
git config --global user.name '<username>'
# 爲當前倉庫配置用戶名
git config --add --local user.name '<username>'
# 配置郵箱
git config --global user.email '<email>'
# 爲當前倉庫配置郵箱
git config --add --local user.email '<email>'
# 查看配置,重點關注user.name和user.email變量的值
git config --global --list

git config命令的更多配置,請查閱官方文檔。app

場景4 修改文件

git add 文件名
git add 文件名1 文件名2 ...
git add .
git commit -m "修改文件"

git add命令能夠將單個具體文件、多個具體文件或全部改動文件寫入暫存區,而後執行後續的提交操做。fetch

場景5 刪除文件

能夠手動刪除文件,但也能夠用git命令刪除文件。spa

git rm 文件名

場景6 移動並重命名文件

能夠手動移動並重命名文件,可是須要git addgit rm操做後才能使文件的狀態變爲renamed。更方便快捷的方案就是使用git mvcode

git mv 原文件名 新目錄/新文件名

場景7 文件操做後進行還原

未提交至暫存區的狀態下,經過git diff查看文件改動,手動進行還原,效率過低,推薦使用git checkoutci

# 未提交至暫存區的狀態下,回到上一次提交的狀態
git checkout -- 目錄/文件名
# 撤銷追蹤,回到上一次提交的狀態
git reset HEAD 目錄/文件名
git checkout -- 目錄/文件名

場景8 回到指定版本

# 回到上一個版本,一個^表明回退一個版本
git reset --hard HEAD^
# 回到指定版本
git reset --hard <commit id>
# 指定文件回到指定版本
git checkout <commit id> -- 文件名

場景9 版本標籤管理

新建立的標籤會默認加在最近一次的提交記錄上。rem

# 建立標籤 
git tag <tag name>
# 查看標籤
git tag
# 爲指定的提交記錄建立標籤
git tag <tag name> <commit id>
# 刪除標籤
git tag -d <tag name>
# 推送某個標籤
git push origin <tag name>
# 推送全部標籤
git push origin --tags

場景10 分支管理

# 建立分支
git branch <branch name>
# 查看分支
git branch
# 同時查看遠程分支及版本
git branch -av
# 切換分支
git checkout <branch name>
# 刪除分支
git branch -d <branch name>
# 強制刪除分支
git branch -D <branch name>
# 關聯遠端分支
git branch –set-upstream <branch name> <remote branch name>
# 建立並切換分支,也可關聯遠端分支
git checkout -b <branch name> [remote branch name]
# 合併分支
git merge <branch name>
# 合併時若是有衝突保留當前分支的代碼
git merge --abort
# 拉取分支
git fetch
# 刪除遠程分支
git push origin --delete <branch name>
# 拉取合併
git pull

更多分支管理操做,請查閱官方文檔文檔

最佳實踐

別名

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
# 取消暫存文件
# git reset HEAD -- <文件名>
git config --global alias.unstage 'reset HEAD --'
# 查看最後一次提交
git config --global alias.last 'log -1 HEAD'
# 打開gitk
git config --global alias.visual '!gitk'

rebase

將 codeC4/code 中的修改變基到 codeC3/code 上。

git checkout experiment
git rebase master

codemaster/code 分支的快進合併。

git checkout master
git merge experiment

cherry-pick

轉移提交

git cherry-pick <commit id>

stash

# 保存當前進度,會分別對暫存區和工做區的狀態進行保存
git stash
# git stash帶上message
git stash save '<message>'
# 顯示已保存的進度列表
git stash list
# 恢復最新保存的進度,並將恢復的進度刪除
# 若是提供--index 除了恢復工做區的文件外,還嘗試恢復暫存區
# 若是提供stash id則恢復該進度
git stash pop [--index] [stash id]
# 除了不刪除恢復的進度以外,其他和 git stash pop 命令同樣
git stash apply [--index] [stash id]
# 刪除進度
git stash drop [stash id]
# 刪除全部存儲的進度    
git stash clear
相關文章
相關標籤/搜索