Git經常使用命令

git

起步

// github帳戶和你的電腦關聯,配置祕鑰
    SSH 公鑰
    1).確認是否已經擁有密鑰
        $ cd ~/.ssh
        $ ls
        authorized_keys2  id_dsa       known_hosts
        config            id_dsa.pub
        // 咱們須要尋找一對以 id_dsa 或 id_rsa 命名的文件,
        // 其中一個帶有 .pub 擴展名。 .pub 文件是你的公鑰,另外一個則是私鑰
    2).若是找不到這樣的文件(或者根本沒有 .ssh 目錄)
        // 經過運行 ssh-keygen 程序來建立它們,默認存儲位置(.ssh/id_rsa)
        $ ssh-keygen
    3).得到公鑰信息
        $ cat ~/.ssh/id_rsa.pub

倉庫

1.命令行了解
// 命令行簡單操做
D: // 當目前不在D盤的狀況下會進入D盤目錄
dir / ls // 查看當前目錄下全部目錄和文件
md xx // 新建xx文件夾
md xxx.xx // 新建文件
exit // 退出命令行

// git練習相關命令
cd ~/desktop
mkdir xxx-git
cd xxx-git
2.初始化倉庫(該動做只需執行一次)
git init
3.基本流程
git status // 查看狀態
git add // 添加修改
    git add <文件>
    git add <目錄>
    git add . // 把作的全部修改還有新的文件添加到暫存區(*不含刪除文件*)
    git add -u // 把作的全部修改還有刪除的文件添加到暫存區(*不包括新文件*)
    git add -A // 把全部東西當道暫存區(含 修改,新文件,*替換文件*,刪除文件)
git commit // 提交修改到Git倉庫
    git commit -a // 把全部修改與刪除自動添加到暫存區而後提交。不包含未跟蹤文件。
    git commit -m '提交的備註信息' // 設置提交信息
    //// git commit --amend // 修改剛剛作的此次提交(好比修改提交的信息,或者把新的修改放到剛作的此次提交裏) ////
        git commit --amend --no-edit // --no-edit,表示直接用上次提交的信息
git log // 查看歷史
    git log --oneline // 將每條日誌的輸出爲一行
       git log --oneline -n 3 // 顯示最新的三條
    git log --pretty=raw // 關於每次提交的更多信息
    git log --decorate // 顯示一些相關的信息,如HEAD、分支名、tag名等
    git log --decorate --oneline
    git log --oneline --graph // --graph 選項查看歷史,會標記出使用 --no-ff 選項之後的合併
git reflog // 查看全部分支的全部操做記錄(包括已經被刪除的 commit 記錄和 reset 的操做)
git show // 查看某次提交
    git show '提交節點的ID' // 展現該節點的修改詳情
git tag 'tag名稱' log編號 // 給節點貼標籤
git checkout // 檢查
    git checkout '提交節點的ID'
    git checkout master // 簽出master分支
    git checkout -b <xxxx> // -b,若是xxxx分支不存在,就建立
git revert // 撤銷
    git revert '提交節點的ID'
    // 發生衝突
    fix conflicts and run "git revert --continue"
    1.打開衝突的文件,解決衝突
    2.git add <衝突的文件>
    3.git commit -m 'Revert "XXXX"'
git reset // 重置(重置的某次提交,他以後的全部提交都會被抹掉)
    git add 以後執行 git reset / git reset <文件名稱> // 從暫存區拿出以前添加的修改
    git reset --hard '提交節點的ID'
    git reset HEAD~1 --hard // 撤銷,回退到上一個版本
git clean // 清理(把未跟蹤的文件清理掉)
    git clean -f
// git清除本地緩存命令
    git rm -r --cached .
    git add .
4. 忽略跟蹤 .gitignore
// 添加 .gitignore, 並添加 node_modules
    echo 'node_modules' >> .gitignore
5.分支
git branch // 列出分支( 分支名前的 * 標識當前所在分支 )
git branch <xxx> // 建立 xxx 分支
    git checkout <xxx> // 建立後切換到 xxx 分支
git branch -r // 列出遠程分支
git branch -a // 列出本地分支和遠程分支
git branch -d <分支名> // 刪除分支 ( 或 git branch -D <分支名> )
    
git merge <分支名> // 合併分支
    git checkout <要合併到的分支> // 先切換到"要合併到"的分支
    // 1. Fast-Forward 合併,(期間,要合併到的分支沒發生什麼變化)
    git merge <要被合併的分支>
    // 2.  --no-ff 合併,(歷史裏可記錄合併動做)
    git merge <要被合併的分支> --no-ff
    // 3. 3-Way 合併,(期間,要合併到的分支內容發生了變化)
    git merge <要合併到的分支>

git rebase // 衍合過程(用於:主幹和分支對同一文件都有修改,合併時候有衝突的狀況),產生一個更爲整潔的提交歷史
    git rebase <分支名> // 通常爲 git rebase master
    // git提示出現了代碼衝突,處理完畢後
    git rebase --continue // 繼續剛纔的處理處理
6.遠程
通常遠程倉庫都有兩種地址,一種是 HTTPS,一種是 SSH。
HTTPS: 用的是用戶名 + 密碼的方式驗證你的身份。
SSH: 會使用 ssh-key 做爲驗證身份的方法。

// 查看遠程倉庫:
    git remote
    git remote -v // 查看詳情
// 添加另外遠程庫
    git remote add 遠程庫名 遠程庫地址
    例:git remote add origion https://。。。。。
// 刪除該遠程庫:git remote rm [name]
    git remote remove 遠程庫名 ( git remote rm 遠程庫名 )
    例:git remote remove origin(通常都是叫origin)
// 改變遠程庫的名字
    git remote rename 舊名稱 新名稱
    例:git remote rename origin neworigin(把origin改爲neworigin)
// 推送遠程倉庫
    git push [remoteName] [localBranchName]
        // 按以下格式提交分支至線上時,會自動建立 MR 
        git push 主機名 本地分支名:mr/線上目標分支名/本地分支名
        // 加上了 -u 選項之後,下面能夠直接執行:git push
        git push -u [remoteName] [localBranchName]
// 克隆/複製
    git clone <遠程倉庫地址> <new_project> 
        // 上面的指令 -- 將遠程版本庫徹底克隆到本地 new_project 目錄下
        // new_project 可省略
// 下載
    git fetch 遠程 分支
// 拉取遠程倉庫 ( 至關於 git fetch + git merge )
    git pull [remoteName] [localBranchName]
    git pull --rebase 遠程 // --rebase 選項,會用 git rebase 代替 git merge
// 修改遠程倉庫
    git remote set-url --push [name] [newUrl]

配置信息

// 查看配置信息
git config --list
// 獲取配置 name and email
git config user.email
git config user.name
// 設置當前倉庫的 user.name / user.email
git config user.email xxxx
git config user.email xxxxxx@xxx.com
// 設置全局 user.name / user.email
git config --global user.name xxxxx
git config --global user.email xxxxxx@xxx.com

常見問題處理

(持續更新~)javascript

1. 若是出現 warning: LF will be replaced by CRLF 
    // (字符轉換的問題 -- 包含混合換行符)
    git config --gobal core.autocrlf false // 提交檢出均不轉換

2. git pull 失敗,出現 fatal: refusing to merge unrelated histories 
    //(加上 --allow-unrelated-histories, 進行強行合併)
    // 緣由:兩個根本不相干的 git 庫,一個是本地庫,一個是遠端庫,本地要去推送到遠端,被告知沒法合併
    git pull origin master --allow-unrelated-histories
相關文章
相關標籤/搜索