功能一 提交:1:git init # 初始化,表示即將對當前文件夾進行版本控制2:git status # 查看Git當前狀態,如:那些文件被修改過、那些文件還未提交到版本庫等。3:git add . # 添加當前目錄下所有文件到版本庫4:git commit -m "第一次提交" # 提交到版本庫,并填寫版本說明,以便以后回滾 5:git log # 查看版本庫的日志功能二 版本回滾:1:git add # 增加2:git commit -m "..." # 增加到版本庫3:git log # 查看版本庫的日志4:git reset --hard # 切換到功能一1:git reflog # 查看所有的版本庫2:git reset --hard # 切換到功能一突然有bug需要改
解決方案一 stash:1:git add # 增加2:git commit -m "..." # 增加到版本庫 3:git log # 查看版本庫的日志 # 繼續開發,發現之前上線的代碼需要修改,把現在的代碼保存。1:git stash # 現在開發的代碼,保存# 完成功能一,增加到版本庫,提交,繼續開發之前的功能,發生沖突手動解決沖突1:git stash pop # 將第一個記錄從“某個地方”重新拿到工作區(可能有沖突,需手動解決)2:git add . # 增加到版本庫3:git commit -m "..." # 增加到版本庫,提交stash 用法:git stash # 將當前工作區所有修改過的內容存儲到“某個地方”,將工作區還原到當前版本未修改過的狀態git stash list # 查看“某個地方”存儲的所有記錄git stash clear # 清空“某個地方”git stash pop # 將第一個記錄從“某個地方”重新拿到工作區(可能有沖突)git stash apply # 編號,將指定編號記錄從“某個地方”重新拿到工作區(可能有沖突) git stash drop # 編號 ,刪除指定編號的記錄 解決bag方法二:(分支)1:git branch dev # 創建dev分支 2:git branch -d dev # 刪除分支 3:git checkout dev # 切換分支 4:git merge dev # 分支合并
修復Bug流程:git branch dev # 創建dev分支 git checkout dev # 切換分支# 寫代碼git add . # 增加到版本庫git commit -m 'xxx' # 提交,不合并到master# 切換mastergit checkout master # 切換master git branch bug # 創建bug分支 git chekcout bug # 切換到bug分支# 修復bug git add . # 增加到版本庫git commit -m '緊急修復bug' # 提交# 切換master分支git checkout master # 切換master git merge bug # 合并分支# 刪除bug分支git branch -d bug # 刪除bug分支 # 切換dev分支git checkout dev # 繼續開發
git 全局配置
t config --global user.name "fenglepeng"
git config --global user.email "fenglepeng@163.com"
克隆一個新的倉庫
git clone https://github.com/flepeng/flepeng.github.io.git
cd flepeng.github.io
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Username?for?'https://github.com':??????????????????????????# 輸入GitHub用戶名
Password?for?'https://flp@github.com':?????????????????? # 輸入GitHub密碼
將一個本地文件夾推送到倉庫
cd existing_folder
git init
git remote add origin https://github.com/flepeng/flepeng.github.io.git
git add .
git commit -m "Initial commit"
git push -u origin master
將一個本地倉庫重命名之后推送到新的倉庫
cd existing_repo
git remote rename origin old-origin
git remote add origin https://github.com/flepeng/flepeng.github.io.git
git push -u origin --all
git push -u origin --tags
另一種拉取策略
另一種拉取策略:git init git remote add origin https://github.com/flp/test.gitgit fetch origin master git merge origin/master 提交遠程代碼git pull origin master git fetch origin master
強行push?
# 如果本地和遠程的庫屬于兩個庫,而你強行管理上之后,這時你無論 push 和 pull 都會報錯
# ‘fatal: refusing to merge unrelated histories’此時需要
git pull origin?master?--allow-unrelated-histories
# 此時,兩個庫的文件會并存,之后就可以處理了,或者你可以使用
$ git push -u origin master -f?
# 強制提交,但是會丟失遠程的代碼,慎用
分支(branch)操作相關命令
$ git branch # 查看本地分支
$ git branch -r # 查看遠程分支
$ git branch [name] # 創建本地分支,注意新分支創建后不會自動切換為當前分支
$ git checkout [name] # 切換分支
$ git checkout -b [name] # 創建新分支并立即切換到新分支
$ git branch -d [name] # 刪除分支,-d選項只能刪除已經參與了合并的分支,對于未有合并的分支是無法刪除的。如果想強制刪除一個分支,可以使用-D選項
$ git merge [name] # 合并分支,將名稱為[name]的分支與當前分支合并
$ git push origin [name] # 創建遠程分支(本地分支push到遠程)
$ git push origin :heads/[name] 或 $ git push origin :[name] # 刪除遠程分支$ git push -u origin dev??# 加了參數-u后,以后即可直接用git push 代替git push origin master
$ git push origin # 將當前分支推送到origin主機的對應分支。
$ git push # 如果當前分支只有一個追蹤分支,那么主機名都可以省略。?
遠程提交,不用輸入用戶名密碼
# 第一步, --global 為所有的git 都設置使用下次輸入的賬號密碼,不推薦使用此參數
git config --global credential.helper store# 第二步,執行這步會讓你輸入用戶名密碼,后面再執行這條命令就都不用在輸入了
git pull
原理:會在 用戶根目錄下產生如下兩個文件,.gitconfig (記錄用戶名信息)和 .git-credentials(用戶名密碼) 用以記錄當前操作用戶,文件內容就是公鑰信息。
問題解析
error: failed to push some refs to 'https://github.com/xxxx.git'
問題展示:
解決辦法:
1: 進行push前先將遠程倉庫pull到本地倉庫
$ git pull origin master #git pull --rebase origin master
$ git push -u origin master2: 強制push本地倉庫到遠程 (這種情況不會進行merge, 強制push后遠程文件可能會丟失 不建議使用此方法)
$ git push -u origin master -f3: 避開解決沖突, 將本地文件暫時提交到遠程新建的分支中
$ git branch [name]
# 創建完branch后, 再進行push
$ git push -u origin [name]
error: src refspec master does not match any
問題解析:
引起該錯誤的原因是,目錄中沒有文件,空目錄是不能提交上去的
解決方法
git add README
git commit -m 'first commit'
git push origin master
GIT刷新忽略文件.gitignore
# 1、重置所有緩存(注意后面有個.)
git rm -r --cached .# 2、重新添加(注意后面有個.)
git add .# 3、提交
git commit -m ".gitignore is now working"
?