設置用戶名、郵箱html
git config --global user.name " "
node
git config --global user.email " "
git
建立版本庫github
pwd
# 顯示當前目錄vim
git init
# 變成git能夠管理的倉庫windows
添加文件到版本庫服務器
git add xx.txt
# 添加到暫存區app
git commit
# 文件提交,把暫存區的內容提交到當前分支ssh
git status
# 查看是否有未提交文件分佈式
git diff xx.txt
# 查看修改了什麼內容
版本回退
查看歷史記錄
git log
# 查看歷史記錄
git log -pretty=oneline
# (顯示縮略信息)
git reflog
#得到版本號
cat xx.txt
#查看內容
版本回退
git reset --hard HEAD^
# 回退到上個版本
git reset --hard HEAD~100
# 回退到前100個版本
git reset --hard 版本號
# 經過版本號回退
撤銷修改
git checkout -- a.txt
# 丟棄單個文件的修改
git checkout -- .
# 丟棄所有文件的修改
rm xx.txt
# 刪除文件
工做區
工做區:電腦上能看到的目錄
版本庫:工做區下的隱藏目錄.git,是版本庫,存有暫存區、git自動建立的第一個分支master、指向master的一個指針HEAD
分支
git branch
# 查看本地分支
git branch -a
# 查看全部分支,包含遠程
git branch <name>
# 建立分支
git checkout <name>
# 切換分支
git checkout -b <name>
# 建立+切換分支
git merge <name>
# 合併某分支到當前分支
git branch -d <name>
# 刪除分支
git branch -D <name>
# 強制刪除分支
經常使用的命令
git status # 查看狀態 git add -u # 添加跟蹤文件 git add -A # 使用-A參數會將添加全部改動的已跟蹤文件和未跟蹤文件。 git commit -m 「」 # 提交併註釋 git pull 遠程分支 本地分支 # 拉取文件(git pull origin 分支 ) git push origin 分支 # 推送文件到遠程分支 git checkout master # 切換分支 git checkout -b 分支 # 新建分支並切換到 git log # 查看歷史提交 git reset --hard HEAD^ # 版本回退 git push -f # 強制推送當前分支到遠程,適用於當前版本低於最新提交
ssh -keygen -t rsa -C < email > # 生成密鑰
ssh -T git@github.com # 測試是否成功
git congfig --global user.name < name >
git config --global user.email < email >
git config --global user.name < name > # 設置提交用戶名
git config --global user.email < email > # 設置提交郵箱
git config --list # 查看配置的信息
git remote remove origin # 刪除該遠程路徑
git remote add origin git@github.com:SeaHai/myNotes.git # 添加遠程路徑
git help config #獲取幫助信息
windows 換行符:CRLF
Linux/UNIX 換行符:LF
git config --global core.autocrlf false
# 提交到git是自動將換行符轉換爲lf (windows 到 UNIX須要轉換換行符)
git config --global core.autocrlf true
# 關閉換行轉換功能
生成指定名字的密鑰
ssh-keygen -t rsa -C "郵箱地址" -f ~/.ssh/github_seahai
#會生成 github_seahai 和 github_seahai.pub 這兩個文件
密鑰複製到託管平臺上
vim ~/.ssh/github_seahai.pub
#打開公鑰文件 github_seahai.pub ,並把內容複製至代碼託管平臺上
修改config文件
vim ~/.ssh/config #修改config文件,若是沒有建立 config
Host seahai.github.com HostName github.com User git IdentityFile ~/.ssh/github_seahai Host abc.github.com HostName github.com User git IdentityFile ~/.ssh/github_abc
測試
ssh -T git@seahai.github.com
# @後面跟上定義的Host
git init
# 初始化
git status
# 獲取狀態
git add file
# .
或 *
表明所有添加
git commit -m "message"
# 添加提交註釋
git remote add origin git@github.com:SeaHai/myNotes.git
# 添加遠程倉庫
推送到遠程
git push -u origin master
# push同時設置默認跟蹤分支
git push origin master
# push到遠程
git push -f origin master
# 強制推送
git clone git@github.com:SeaHai/myNotes.git
git clone git@github.com:SeaHai/myNotes.git myNotes
#克隆到自定義文件夾
git add *
# 跟蹤新文件
git add -u [path]
# 添加[指定路徑下]已跟蹤文件
rm *
& git rm *
# 移除文件
git rm -f *
# 強制移除文件
git rm --cached *
# 取消跟蹤
git mv file_from file_to
# 重命名跟蹤文件
git log
# 查看提交記錄
git commit
# 提交更新
git commit -m 'message'
# 提交說明
git commit -a
# 跳過使用暫存區域,把全部已經跟蹤過的文件暫存起來一併提交
git commit --amend
# 修改最後一次提交
git reset HEAD *
# 取消已經暫存的文件
git reset --mixed HEAD *
# 同上
git reset --soft HEAD *
# 重置到指定狀態,不會修改索引區和工做樹
git reset --hard HEAD *
# 重置到指定狀態,會修改索引區和工做樹
git reset -- files
# 重置index區文件
git revert HEAD
# 撤銷前一次操做
git revert HEAD~
# 撤銷前前一次操做
git revert commit
# 撤銷指定操做
git checkout -- file
# 取消對文件的修改(從暫存區——覆蓋worktree file)
git checkout branch|tag|commit -- file_name
# 從倉庫取出file覆蓋當前分支
git checkout -- .
# 從暫存區取出文件覆蓋工做區
git diff file
# 查看指定文件的差別
git diff --stat
# 查看簡單的diff結果
git diff
# 比較Worktree和Index之間的差別
git diff --cached
# 比較Index和HEAD之間的差別
git diff HEAD
# 比較Worktree和HEAD之間的差別
git diff branch
# 比較Worktree和branch之間的差別
git diff branch1 branch2
# 比較兩次分支之間的差別
git diff commit commit
# 比較兩次提交之間的差別
git stash
# 將工做區現場(已跟蹤文件)儲藏起來,等之後恢復後繼續工做。
git stash list
# 查看保存的工做現場
git stash apply
# 恢復工做現場
git stash drop
# 刪除stash內容
git stash pop
# 恢復的同時直接刪除stash內容
git stash apply stash@{0}
# 恢復指定的工做現場,當你保存了不僅一份工做現場時。
git branch
# 列出本地分支
git branch -r
# 列出遠端分支
git branch -a
# 列出全部分支
git branch -v
# 查看各個分支最後一個提交對象的信息
git branch --merge
# 查看已經合併到當前分支的分支
git branch --no-merge
# 查看爲合併到當前分支的分支
git branch test
# 新建test分支
git branch -m old new
# 重命名分支
git branch -d test
# 刪除test分支
git branch -D test
# 強制刪除test分支
git branch --set-upstream dev origin/dev
# 將本地dev分支與遠程dev分支之間創建連接
git checkout test
# 切換到test分支
git checkout -b test
# 新建+切換到test分支
git checkout -b test dev
# 基於dev新建test分支,並切換
git merge test
# 將test分支合併到當前分支
git merge --squash test
# 合併壓縮,將test上的commit壓縮爲一條
git cherry-pick commit
# 揀選合併,將commit合併到當前分支
git cherry-pick -n commit
# 揀選多個提交,合併完後能夠繼續揀選下一個提交
git rebase master
# 將master分支上超前的提交,變基到當前分支
git rebase --onto master 169a6
# 限制回滾範圍,rebase當前分支從169a6之後的提交
git rebase --interactive
# 交互模式
git rebase --continue
# 處理完衝突繼續合併
git rebase --skip
# 跳過
git rebase --abort
# 取消合併
git fetch origin remotebranch[:localbranch]
# 從遠端拉去分支[到本地指定分支]
git merge origin/branch
# 合併遠端上指定分支
git pull origin remotebranch:localbranch
# 拉去遠端分支到本地分支
git push origin branch
# 將當前分支,推送到遠端上指定分支
git push origin localbranch:remotebranch
# 推送本地指定分支,到遠端上指定分支
git push origin :remotebranch
# 刪除遠端指定分支
git checkout -b [--track] test origin/dev
# 基於遠端dev分支,新建本地test分支[同時設置跟蹤]
git reset --hard HEAD~1
git push -f origin HEAD:master
echo node_modules/ >> .gitignore
git rm -rf node_modules/
git是一個分佈式代碼管理工具,因此能夠支持多個倉庫,在git裏,服務器上的倉庫在本地稱之爲remote。
我的開發時,多源用的可能很少,但多源其實很是有用。
git remote add origin1 git@github.com:SeaHai/myNotes.git
git remote
# 顯示所有源
git remote -v
# 顯示所有源+詳細信息
git remote rename origingit1 origin2
# 重命名
git remote rm origin
# 刪除
git remote show origin
# 查看指定源的所有信息
當開發到必定階段時,給程序打標籤是很是棒的功能。
git tag
# 列出現有標籤
git tag v0.1
# 新建標籤
git tag -a v0.1 -m 'my version 1.4'
# 新建帶註釋標籤
git checkout tagname
# 切換到標籤
git push origin v1.5
# 推送分支到源上
git push origin --tags
# 一次性推送全部分支
git tag -d v0.1
# 刪除標籤
git push origin :refs/tags/v0.1
# 刪除遠程標籤
git log
# 查看最近的提交日誌
git log --pretty=oneline
# 單行顯示提交日誌
git log --graph --pretty=oneline --abbrev-commit
git log -num
# 顯示第幾條log(倒數)
git config format.pretty oneline
# 顯示歷史記錄時,每一個提交的信息只顯示一行
git config color.ui true
# 彩色的 git 輸出
git log --since=1.day
# 一天內的提交;你能夠給出各類時間格式,好比說具體的某一天(「2008-01-15」),或者是多久之前(「2 years 1 day 3 minutes ago」)。
git log --pretty="%h - %s" --author=本身的名字
# 查看本身的日誌
git log -p -2
# 展開兩次更新顯示每次提交的內容差別
git log --stat
# 要快速瀏覽其餘協做者提交的更新都做了哪些改動
git log --pretty=format:"%h - %an, %ar : %s"
# 定製要顯示的記錄格式