Git(二)Git基本操作

一、Git全局設置

git –version 查看版本信息
git config –global user.name “aa” 配置用戶名
git config –global user.email 郵箱 配置郵箱
git config –list 查看配置結果
git config –global core.autocrlf false 讓git不要管windows/unix換行符轉換的問題
git config –global core.ignorecase false windows上還需配置

二、基本操作

git ssh key pair配置

  1. ssh-keygen -t rsa -C 郵箱
  2. ssh-add ~/.ssh/id_rsa 如果出現could not open a connection…的錯誤先執行eval ssh-agent,
    在執行ssh-add ~/.ssh/rsa成功ssh-add –l就有新加的rsa了
  3. cat ~/.ssh/id_rsa.pub 查看公鑰

git add 文件名 把文件修改添加到暫存區
git commit -m “註釋內容” 把暫存區的所有內容提交到當前分支 -ma 將add和commit兩步合併爲一步
git log –pretty=oneline 顯示日誌,但是內容較少
git reset –hard HEAD^ 回退到當前版本的上一個版本(HEAD指針指向當前版本)
回退之後要想恢復新版本,必須找到新版本的commit id
git reset –hard commit_id 回到未來的某個版本
git reflog 記錄每一條命令,以便確定回到未來那個版本
git log 查看提交歷史,以便回退到那個版本
git log –graph 分支合併圖

三、Git三大階段

working tree:就是你所工作在的目錄,每當你在代碼中進行了修改,working tree的狀態就改變了。
index file:是索引文件,它是連接working tree和commit的橋樑,每當我們使用git-add命令來登記後,
index file的內容就改變了,此時index file就和working tree同步了。
commit:只有commit了,我們的代碼才真正進入了git倉庫。
我們使用git-commit就是將index file裏的內容提交到commit中。
git diff 查看文本區別
git diff:是查看working tree(工作區)與index file(暫存區)的差別的。
git diff –cached:是查看index file與commit的差別的。
git diff HEAD:是查看working tree和commit的差別的。(HEAD代表的是最近的一次commit的信息)
git diff -w 消除 No newline at end of file提示,每一個文件最後一句一回車換行結束

git rm 刪除文件
git checkout – readme.txt 撤銷工作區的修改(其實就是用版本庫的版本替代工作區的版本,無論是修改還是刪除)
(1)readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
(2)readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
總之,就是讓這個文件回到最近一次git commit或git add時的狀態
git reset HEAD 文件名 將提交到暫存區的修改撤回到工作區,然後再用git checkout指令丟棄工作區的更改

提交到遠程倉庫
git remote add origin url 連接遠程倉庫
git push -u origin master 提交到遠程倉庫的master分支(-u 關聯本地的分支和遠程的分支,下次只要輸入git push就行)
第一次提交要加-f參數,遠程庫中沒有此版本,需要強制提交
git remote -v 查看遠程連接
從遠程倉庫克隆
git clone url 克隆遠程倉庫的項目到本地
git checkout -b dev 創建dev分支並切換
-b參數表示創建並切換 ,該命令相當於兩條命令git branch dev和git checkout dev
git branch 查看當前分支(當前分支前會有一個*號)
git checkout 分支名 切換分支
git merge 分支名 合併某分支到當前分支(默認使用fast forward模式,但是合併後會丟掉分支信息)
–no-ff 關閉forward模式,以普通模式合併(普通模式合併後的歷史有分支,能看出來做過合併)
git branch -d 分支名 刪除某分支(合併過的)
git branch _-D 分支名 刪除某分支(沒有合併過的,該分支的所有修改就地銷燬)
切換到dev分支下修改並commit,修改是保存在dev分支下,切換回master分支後,dev下提交的修改並不會生效,一旦切換到dev
分支下,纔會出現修改內容
一般情況下,是在分支完成某個任務,完成後用merge命令與master合併,然後在刪除分支

git stash 保存當前的工作現場
git stash list 查看工作現場列表
git stash apply 恢復工作現場,但是恢復後,stash內容並不刪除,需要 用git stash stop來刪除
git stash apply stash@{0} 指定列表中項
gti stash pop 恢復的同時刪除stash的內容

git branch -r 查看遠程分支
git checkout –b v1.0 origin/master 生成新的分支v1.0,遠程也會有v1.0分支
git push origin HEAD –u 將分支推送到遠程的同名分支(HEAD指向本地最新的提交版本)
git push origin v1.0 –u origin是遠程主機名
git push <遠程主機名> <本地分支名>:<遠程分支名> 將本地分支的更新推送到遠程主機

查看遠程庫信息,使用git remote -v;
本地新建的分支如果不推送到遠程,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠程的新提交;
在本地創建和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;
建立當前分支和遠程分支的關聯,使用git branch –set-upstream-to 本地分支名 origin/遠程分支名(本地分支要先切換到需要連接的分支) 也可以考慮 git branch -u origin/遠程分支名
從遠程抓取分支,使用git pull,如果有衝突,要先處理衝突
git branch -vv 本地分支與遠程分支的映射關係
git branch –unset-upstream 撤銷本地分支與遠程分支的映射關係

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章