一、 git clone
將遠程倉庫中的代碼克隆到本地,並在當前目錄下創建一個名爲 ELM 的目錄,
git clone https://github.com/Jiuke/ELM.git
如果希望在克隆的時候,自己定義要新建的項目目錄名稱,可以在上面的命令末尾指定新的名字:
git clone git://github.com/schacon/ELM.git myELM
二、 git status
在本地更新完代碼後,使用 git status 命令來查看相關文件的狀態
也可以使用 git status -s 來查看簡寫的狀態, M - 被修改,A - 被添加,D - 被刪除,R - 重命名,?? - 未被跟蹤 等等。
三、 git add
1、git add .
將所有 修改、新增的文件添加到本地 git 暫存區,注意不包括刪除的文件
2、git add -u .
-u 表示將已跟蹤文件中的修改和刪除的文件添加到暫存區,不包括新增加的文件,注意這些被刪除的文件被加入到暫 存區再被提交併推送到服務器的版本庫之後這個文件就會從git系統中消失了。
3、git add -A .
-A 表示將所有的已跟蹤的文件的修改與刪除和新增的未跟蹤的文件都添加到暫存區。
四、git commit
git commit 主要是將暫存區裏的改動給提交到本地的版本庫。每次使用git commit 命令我們都會在本地版本庫生成一個40位的哈希值,這個哈希值也叫commit-id,commit-id 在版本回退的時候是非常有用的,它相當於一個快照,可以在未來的任何時候通過與git reset的組合命令回到這裏.
1、git commit -m ‘message’
-m 參數表示可以直接輸入後面的“message”,message即是我們用來簡要說明這次提交的語句。如果不加 -m參數,那 麼是不能直接輸入message的,而是會調用一個編輯器一般是vim來讓你輸入這個message,
五、git push
在使用 git commit 命令將修改從暫存區提交到本地版本庫後,只剩下最後一步將本地版本庫的分支推送到遠程服務器上對應的分支了。
git push的一般形式爲 git push <遠程主機名> <本地分支名> <遠程分支名> ,例如 git push origin master:master ,即是將本地的master分支推送到遠程主機origin上的對應master分支, origin 是遠程主機名。第一個master是本地分支名,第二個master是遠程分支名。
1、git push origin master
把本地 master 分支推送到與之存在追蹤關係的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建
2、git push origin :master
刪除遠程 master 分支,因爲這等同於推送一個空的本地分支到遠程分支,等同於 git push origin –delete master
3、git push origin
如果當前分支與遠程分支存在追蹤關係,則本地分支和遠程分支都可以省略,將當前分支推送到origin主機的對應分支
4、git push
如果當前分支只有一個遠程分支,那麼主機名都可以省略,形如 git push,可以使用git branch -r ,查看遠程的分支名
六、git branch
一般用於分支的操作,比如創建分支,查看分支等等,
1、git branch
不帶參數:列出本地已經存在的分支,並且在當前分支的前面用"*"標記
2、git branch -r
查看遠程版本庫分支列表
3、git branch -a
查看所有分支列表,包括本地和遠程
4、git branch dev
創建名爲dev的分支,創建分支時需要是最新的環境,創建分支但依然停留在當前分支
5、git branch -d dev
刪除dev分支,如果在分支中有一些未merge的提交,那麼會刪除分支失敗,此時可以使用 git branch -D dev:強制刪除dev分支,
6、git branch -vv
可以查看本地分支對應的遠程分支
7、git branch --set-upstream-to=origin/遠程分支 本地分支
修改本地分支所跟蹤對應的遠程分支
8、 git branch -m oldName newName
給分支重命名
8、git remote update origin --prune
更新遠程分支列表
七、git checkout
1、 git checkout master
將分支切換到master
2、git checkout -b dev
如果分支存在則只切換分支,若不存在則創建並切換到 dev 分支,
八、git merge
用來做分支合併,將其他分支中的內容合併到當前分支中。
1、 git checkout master
將分支切換到 master
2、git merge dev
把 dev 分支合併到 master
3、git push origin master
把本地 master 分支提交到遠程倉庫
九、git reset
回退到之前某個版本,清空暫存區,將已提交的內容的版本恢復到本地,本地的文件也將被恢復的版本替換
1、 git reflog
查看歷史提交版本
2、git reset --hard b229aca
回退到之前 b229aca 的版本
十、git remote
1、 git remote add origin https://github.com/Jiuke/single-spa-demo.git
添加新的遠程倉庫
異常處理:
1、使用 git push 推送本地代碼時報錯,原因:當多人協同開發時,同事A 修改了test 文件,並推送到 master 分支,此時自己也修改了test 文件,並推送的時候,兩個test文件有衝突 導致推送失敗
error: failed to push some refs to 'https://github.com/Jiuke/ELM.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解決辦法:先git pull,再本地修改好 test 文件,再重新push
git pull origin master
git add .
git commit -m '提交信息'
git push origin master
2、使用 git pull 獲取線上倉庫代碼時報錯,錯誤可能是因爲以前 pull 下來的代碼沒有自動合併導致的.
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.
解決辦法一:保留本地的更改,中止合併->重新合併->重新拉取
git merge --abort
git reset --merge
git pull
解決辦法二:捨棄本地代碼,遠程版本覆蓋本地版本(慎重)
git fetch --all //下載代碼到本地倉庫,不進行合併操作
git reset --hard origin/master //origin/master是你所需要更新的分支,把HEAD指向最新下載的版本
git pull
3、git add . 的時候報錯,錯誤提示:The file will have its original line endings in your working directory
解決辦法:
git rm -r --cached .
git config core.autocrlf false
git add .
4、git commit 的時候報錯,錯誤提示:husky > pre-commit hook failed (add --no-verify to bypass)
問題分析:
pre-commit(客戶端)鉤子,它會在Git鍵入提交信息前運行做代碼風格檢查。
如果代碼不符合相應規則,則報錯。
解決辦法:
1、進入項目文件夾/.git/hooks文件夾下
2、刪除pre-commit文件