所有的版本控制系統(tǒng)医寿,其實(shí)只能跟蹤文本文件的改動(dòng)吻商,比如TXT文件,網(wǎng)頁糟红,所有的程序代碼等等,Git也不例外乌叶。而圖片盆偿、視頻這些二進(jìn)制文件,雖然也能由版本控制系統(tǒng)管理准浴,但沒法跟蹤文件的變化事扭。
不幸的是,Microsoft的Word格式是二進(jìn)制格式乐横,因此求橄,版本控制系統(tǒng)是沒法跟蹤Word文件的改動(dòng)的。
Git 常用基礎(chǔ)命令合集
創(chuàng)建
git init 創(chuàng)建空的repository
git add fileName 添加修改的文件葡公,把文件修改添加到暫存區(qū)
git commit -m '提交的消息' 把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支
git diff commitId1 commitId2 查看兩次提交的區(qū)別
git diff commitId1:fileName commitId2:fileName 查看兩次提交的文件的區(qū)別
分支
git branch 查看分支
git branch branchName 創(chuàng)建分支
git checkout branchName 切換到branchName分支
git checkout -b branchName創(chuàng)建并切換到branchName分支
git checkout -b branch-name origin/branch-name 在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支
git merge branchName 把branchName分支合并到當(dāng)前分支
git branch -d branchName 刪除branchName分支罐农,注意不要在branchName分支上做這個(gè)操作
git branch --set-upstream branch-name origin/branch-name 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)
查看修改
git status 查看當(dāng)前狀態(tài),有哪些改動(dòng)
git diff fileName 查看文件修改的內(nèi)容
git diff HEAD -- fileName 查看文件fileName工作區(qū)和版本庫最新版本的區(qū)別
撤銷修改
git reset --mixed 把已經(jīng)添加到暫存區(qū)的修改撤回催什,改為非暫存狀態(tài)
git reset --hard commit_id 回滾到commit_id的commit
git checkout -- fileName 撤銷fileName文件在工作區(qū)的修改涵亏,注意--不要丟掉,回到添加到暫存區(qū)后的狀態(tài)
git reset HEAD fileName 把暫存區(qū)的fileName的修改撤銷掉
查看提交歷史
git log 查看提交歷史
git log --pretty=oneline 查看log蒲凶,一行一行地顯示
git reflog 查看git操作記錄
創(chuàng)建ssh key
ssh-keygen -t rsa -C "youremail@example.com" //生成一對(duì)公鑰id_rsa.pub 私鑰id_rsa
cat ~/.ssh/id_rsa.pub //查看生成的公鑰
遠(yuǎn)程倉庫
Git支持多種協(xié)議气筋,包括https,但通過ssh支持的原生git協(xié)議速度最快
git remote add origin remoteUrl 遠(yuǎn)程建了一個(gè)空倉庫旋圆,連接本地到遠(yuǎn)程(remoteUrl是遠(yuǎn)程倉庫的地址)
git push origin master 把本地分支master 推送到遠(yuǎn)程
git clone remoteUrl 克隆一個(gè)遠(yuǎn)程已存在的倉庫到本地(remoteUrl是遠(yuǎn)程倉庫的地址)
標(biāo)簽管理
git tag tagName 為當(dāng)前分支打名字為tagName的標(biāo)簽宠默,默認(rèn)標(biāo)簽是打在最新提交的commit上
git tag tagName commit_id 在commit_id上打tag,適用于忘記打tag的情況
git tag -a tagName -m "blablabla..." 打標(biāo)簽指定標(biāo)簽信息
git show tagName 查看tag的說明
git tag -d tagName 刪除本地標(biāo)簽tagName
git push origin tagName 把標(biāo)簽推送到遠(yuǎn)程
git push origin --tags 推送所有標(biāo)簽到遠(yuǎn)程
git push origin :refs/tags/tagName 刪除遠(yuǎn)程的標(biāo)簽tagName
git tag --list 查看所有tag
git checkout -b tagBranch tagName 檢出tag代碼
Git 命令進(jìn)階
修改提交message
#Commit has not been pushed online
git commit --amend
#Amending the message of the most recently pushed commit
git commit --amend
git push --force
Git rebase
#rebase 遠(yuǎn)程分支
git fetch
git rebase origin
處理conflicts
git add .
git rebase --continue
git push origin master
#rebase 本地分支
git rebase branchName
處理conflicts
git add .
git rebase --continue
git push origin master
多行注釋
git commit -m '
1.one
2.two
'
查看本地分支跟蹤的遠(yuǎn)程分支
git branch -vv
切換跟蹤的分支
git remote rm origin
git remote add origin git@git.nonobank.com:lejiangkai/MXD.git
git push -u origin feature5.5.4
stash用法
git stash
git stash pop
git list
git stash apply stash@{3}
合并某個(gè)分支的單個(gè)文件
git checkout targetbranch
git checkout needMergeBranch -- needMergeFileName
如: 分支test上有一個(gè)文件A灵巧,你在test1分支上搀矫, 此時(shí)如果想用test分支上的A文件替換test1分支上的文件的話抹沪,可以使用
git checkout test1
然后
git checkout test -- A
未完待續(xù)......