所有的版本控制系統,其實只能跟蹤文本文件的改動,比如TXT文件,網頁,所有的程序代碼等等,Git也不例外。而圖片、視頻這些二進制文件,雖然也能由版本控制系統管理,但沒法跟蹤文件的變化。
不幸的是,Microsoft的Word格式是二進制格式,因此,版本控制系統是沒法跟蹤Word文件的改動的。
Git 常用基礎命令合集
創建
git init 創建空的repository
git add fileName 添加修改的文件,把文件修改添加到暫存區
git commit -m '提交的消息' 把暫存區的所有內容提交到當前分支
git diff commitId1 commitId2 查看兩次提交的區別
git diff commitId1:fileName commitId2:fileName 查看兩次提交的文件的區別
分支
git branch 查看分支
git branch branchName 創建分支
git checkout branchName 切換到branchName分支
git checkout -b branchName創建并切換到branchName分支
git checkout -b branch-name origin/branch-name 在本地創建和遠程分支對應的分支
git merge branchName 把branchName分支合并到當前分支
git branch -d branchName 刪除branchName分支,注意不要在branchName分支上做這個操作
git branch --set-upstream branch-name origin/branch-name 建立本地分支和遠程分支的關聯
查看修改
git status 查看當前狀態,有哪些改動
git diff fileName 查看文件修改的內容
git diff HEAD -- fileName 查看文件fileName工作區和版本庫最新版本的區別
撤銷修改
git reset --mixed 把已經添加到暫存區的修改撤回,改為非暫存狀態
git reset --hard commit_id 回滾到commit_id的commit
git checkout -- fileName 撤銷fileName文件在工作區的修改,注意--不要丟掉,回到添加到暫存區后的狀態
git reset HEAD fileName 把暫存區的fileName的修改撤銷掉
查看提交歷史
git log 查看提交歷史
git log --pretty=oneline 查看log,一行一行地顯示
git reflog 查看git操作記錄
創建ssh key
ssh-keygen -t rsa -C "youremail@example.com" //生成一對公鑰id_rsa.pub 私鑰id_rsa
cat ~/.ssh/id_rsa.pub //查看生成的公鑰
遠程倉庫
Git支持多種協議,包括https,但通過ssh支持的原生git協議速度最快
git remote add origin remoteUrl 遠程建了一個空倉庫,連接本地到遠程(remoteUrl是遠程倉庫的地址)
git push origin master 把本地分支master 推送到遠程
git clone remoteUrl 克隆一個遠程已存在的倉庫到本地(remoteUrl是遠程倉庫的地址)
標簽管理
git tag tagName 為當前分支打名字為tagName的標簽,默認標簽是打在最新提交的commit上
git tag tagName commit_id 在commit_id上打tag,適用于忘記打tag的情況
git tag -a tagName -m "blablabla..." 打標簽指定標簽信息
git show tagName 查看tag的說明
git tag -d tagName 刪除本地標簽tagName
git push origin tagName 把標簽推送到遠程
git push origin --tags 推送所有標簽到遠程
git push origin :refs/tags/tagName 刪除遠程的標簽tagName
git tag --list 查看所有tag
git checkout -b tagBranch tagName 檢出tag代碼
Git 命令進階
修改提交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 遠程分支
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
'
查看本地分支跟蹤的遠程分支
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}
合并某個分支的單個文件
git checkout targetbranch
git checkout needMergeBranch -- needMergeFileName
如: 分支test上有一個文件A,你在test1分支上, 此時如果想用test分支上的A文件替換test1分支上的文件的話,可以使用
git checkout test1
然后
git checkout test -- A
未完待續......