請放棄IDE中git的傻瓜式操做,下面經過移步換景的方式熟悉經常使用git命令,而後愛不釋手。git
# 初始化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
# 查看工做區和和暫存區的文件狀態 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
# 配置用戶名 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
git add 文件名 git add 文件名1 文件名2 ... git add . git commit -m "修改文件"
git add
命令能夠將單個具體文件、多個具體文件或全部改動文件寫入暫存區,而後執行後續的提交操做。fetch
能夠手動刪除文件,但也能夠用git命令刪除文件。spa
git rm 文件名
能夠手動移動並重命名文件,可是須要git add
和git rm
操做後才能使文件的狀態變爲renamed
。更方便快捷的方案就是使用git mv
。code
git mv 原文件名 新目錄/新文件名
未提交至暫存區的狀態下,經過git diff
查看文件改動,手動進行還原,效率過低,推薦使用git checkout
。ci
# 未提交至暫存區的狀態下,回到上一次提交的狀態 git checkout -- 目錄/文件名 # 撤銷追蹤,回到上一次提交的狀態 git reset HEAD 目錄/文件名 git checkout -- 目錄/文件名
# 回到上一個版本,一個^表明回退一個版本 git reset --hard HEAD^ # 回到指定版本 git reset --hard <commit id> # 指定文件回到指定版本 git checkout <commit id> -- 文件名
新建立的標籤會默認加在最近一次的提交記錄上。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
# 建立分支 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'
git checkout experiment git rebase master
git checkout master git merge experiment
轉移提交
git cherry-pick <commit id>
# 保存當前進度,會分別對暫存區和工做區的狀態進行保存 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