Git當下最流行的版本管理工具,結合自己工作中的實際應用做了以下梳理。

基礎命令

  • git init 初始化本地倉庫
  • git add -A . 來一次添加所有改變的文件
  • git add -A 表示添加所有內容
  • git add . 表示添加新文件和編輯過的文件不包括刪除的文件
  • git add -u 表示添加編輯或者刪除的文件,不包括新添加的文件
  • git commit -m 版本信息 提交的版本信息描述
  • git status 查看狀態
  • git push -u origin master 推送到遠程倉庫看
  • git pull 拉取遠程倉庫代碼到本地
  • git branch -av 查看每個分支的最新提交記錄
  • git branch -vv 查看每個分支屬於哪個遠程倉庫
  • git reset --hard a3f40baadd5fea57b1b40f23f9a54a644eebd52e 代碼回歸到某個提交記錄

分支操作

  • 查看本地都有哪些分支 git branch -a
  • 新建分支 git branch dev
  • 查看當前分支 git branch
  • 切換分支 git checkout dev
  • 刪除本地分支 git branch -d dev
  • 同步刪除遠程分支 git push origin :dev

修改遠程倉庫地址

  • 方法1,先刪後加:
    • git remote rm origin 先刪除
    • git remote add origin 倉庫地址 鏈接到到遠程git倉庫
  • 方法2,修改命令:
    • git remote set-url origin 倉庫地址

遠程分支獲取最新的版本到本地

  • 執行git pull命令
  • 如果以上命令還是失敗嘗試以下步驟:
  1. 首先從遠程的origin的master主分支下載最新的版本到origin/master分支上git fetch origin master
  2. 比較本地的master分支和origin/master分支的差別git log -p master..origin/master
  3. 進行合併

    git merge origin/master

拉取遠程倉庫指定分支到本地

  • 首先要與origin master建立連接:git remote add origin [email protected]:XXXX/nothing2.git
  • 切換到其中某個子分支:git checkout -b dev origin/dev
  • 可能會報這種錯誤:

fatal: Cannot update paths and switch to branch dev at the same time.
Did you intend to checkout origin/dev which can not be resolved as commit?

  • 原因是你本地並沒有dev這個分支,這時你可以用 git branch -a 命令來查看本地是否具有dev分支
  • 我們需要:git fetch origin dev 命令來把遠程分支拉到本地
  • 然後使用:git checkout -b dev origin/dev 在本地創建分支dev並切換到該分支
  • 最後使用:git pull origin dev 就可以把某個分支上的內容都拉取到本地了

工具類

  • Beyond Compare (http://www.scootersoftware.com/download.php 代碼合併
  • 官方Git文檔地址 https://git-scm.com/book/zh/v2

常見問題

Question1

如何解決 ``` failed to push some refs to git ```

Answer1

* ```git pull --rebase origin master``` 進行代碼合併
* ```git push -u origin master``` 即可完成代碼上傳

Question2

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/ master

Answer2

指定當前當前工作目錄工作分支,跟遠程倉庫分支之間的聯繫

git branch --set-upstream master origin/master

Question3

git pull 獲取最新代碼報以下錯誤

fatal: refusing to merge unrelated histories

Answer3

git pull之後加上可選參數 --allow-unrelated-histories 強制合併

git pull origin master --allow-unrelated-histories

Question4

使用鉤子pre-commit,提交代碼提示如下錯誤:

$ git commit -m .
sh: eslint: command not found
pre-commit:
pre-commit: Weve failed to pass the specified git pre-commit hooks as the `fix`
pre-commit: hook returned an exit code (1). If youre feeling adventurous you can
pre-commit: skip the git pre-commit hooks by adding the following flags to your commit:
pre-commit:
pre-commit: git commit -n (or --no-verify)
pre-commit:
pre-commit: This is ill-advised since the commit is broken.
pre-commit:

Answer4

  • 打開項目中的.git/hooks文件夾,找到pre-commit.sample文件,將以下代碼替換到文件中,或者,npm install pre-commit --save也可以,這個命令會自動執行以下操作。

#!/bin/bash
TSLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/tslint"
for file in $(git diff --cached --name-only | grep -E .ts$)
do
git show ":$file" | "$TSLINT" "$file"
if [ $? -ne 0 ]; then
exit 1
fi
done

  • pre-commit.sample文件名修改為pre-commit

Question5

.gitignore規則不生效的解決辦法

Answer5

把某些目錄或文件加入忽略規則,按照上述方法定義後發現並未生效,原因是.gitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是先把本地緩存刪除(改變成未被追蹤狀態),然後再提交:

git rm -r --cached . 或者 git rm -r README.md
git add .
git commit -m update .gitignore

如果您在工作中還遇到其它問題,可以在下方評論區進行提問

作者:五月君鏈接:imooc.com/article/26929

來源:慕課網

本文首次發佈於慕課網 ,轉載請註明出處,謝謝合作

推薦閱讀:

接手別人的代碼,死的心有嗎?

普通的程序員和大神級的程序員有什麼區別?

網上黑程序員的現實依據是什麼?程序員真的那麼悲慘嗎?

有哪些視頻堪稱有毒?

暴露真實IP真的沒關係嗎?

有哪些程序員特有的習慣?

月薪3萬的程序員都避開了哪些坑?

和程序猿談戀愛是一種怎樣的體驗?


推薦閱讀:
相关文章