1、git提交全部文件的基本步驟:
1)git status:查看修改內容
2)git add XX :添加XX文件到暫存區,如果修改內容比較多,可以使用git add -A .來一次性添加所有文件(-A后來有個點.);git add .:表示添加新文件和修改的文件(不包括刪除的文件);git add -u:表示添加編輯和刪除的文件,不包括新增的文件。
3)git commit -m '修改說明':提交修改內容,從暫存區提交到倉庫
4)git push origin 分支名稱,如下面的git push origin master:和遠程倉庫同步
2、安裝客戶端
去網站 https://git-scm.com/downloads 選擇自己需要的版本,下載安裝,我選的是windows版本
下載完成后,開始安裝
------》Next
Additional icons
On the Desktop:添加到桌面圖標
Windows Explorer integration:瀏覽源碼的方法,使用Bash或者使用Git GUI工具
Git LFS:支持大文件
Associate .git* configuration:是否關聯git配置文件,該配置文件主要顯示文本編輯器的樣式
Associate .sh files to be tun wish Bash:關聯shell腳本文件,即是否關聯Bash命令執行的腳本文件
------》Next
選擇編輯器
------》Next
設置環境變量:選擇Git命令
Use Git from Git Bash only:
使用Git自帶的Git Bash命令行工具
Git from the command line and also from 3rd-party software:
使用windows系統的命令行工具
Use Git and optional Unix tools from the command Prompt:
二者都有,即上面兩者同時配置,但是注意,這樣會使得windows中的find.exe和sort.exe工具覆蓋
如果不懂的話,盡量默認選擇
----》Next
選擇提交時的換行格式:
Checkout Windows-style, commit Unix-style line endings:將windows格式的換行轉換為Unix的換行再提交
Checkout as-is, commit Unix-style line endings:不論什么格式,一律轉化為Unix格式換行提交
Checkout as-is, commit as-is:不轉化,查出原來是什么就怎么提交
----》Next----》Next。。。知道安裝完成
3、設置用戶名和郵箱
git config --global user.name "fionazhong"
git config --global user.email "youremail@xx.com"
注:git config --global 參數:有了這個參數,表示你這台機器上的所有的Git倉庫都會使用這個配置。當然也可以針對某個倉庫單獨指定不同的郵箱和用戶名
4、使用本地倉庫
1)創建版本庫:
版本庫(repository):簡單理解就是一個目錄,一個可以被git管理的目錄,目錄中所有的文件的增刪改都可以被git跟蹤管理,以便將來追溯或還原版本
這時候,我的flask_api目錄下面就多了一個.git文件夾目錄,這個目錄是Git用來跟蹤管理版本的
2)把文件添加到版本庫中
在上面的flask_api目錄下面新建一個文件test.txt,並寫入內容1234567
要把這個文件添加到版本庫中,有兩步:
1)使用git add test.txt,將文件添加到暫存區里
2)使用git commit -m "提交說明",將文件提交到倉庫
3)查看修改內容:
git diff test.txt
如我修改flask_api下面的test.txt文件,新增一行7654321
使用git status:可以查看做了什么操作
使用git diff:可以查看和版本庫中的版本對比,有哪些不同
4)版本回退
我們繼續修改test.txt文件,增加一行內容 147258369
然后我想要看一下,我對文件修改的歷史記錄,可以使用git log,如下,可以看到三次修改內容
上面展示內容過多,我們希望展示的簡單一點,可以使用git log --pretty=oneline
現在我想要把當前版本回退到上一個版本,需要怎么做呢?
第一種方法:git reset --hard HEAD^,如果要回退到上上個版本呢?HEAD后面多加一個^,即git reset --hard HEAD^^
估計不少人就要說了,那我要是要會退到前第100個版本呢?
第二種方法:我們可以使用下面的命令:git reset --hard HEAD~100
查看回退后的內容:cat test.txt
如果我們又想要回退到最新的代碼,怎么做呢?可以使用 git reset --hard 版本號來回退
所以我們要如何知道版本號呢?
可以使用 git reflog
最新的版本號是3db1691
使用 git reset --hard 3db1691,即回退到了最新版
然后我們再查看回退后的內容,看到,內容回來了。
5)工作區和暫存區
上面已經說過,通過git add 將文件添加到了暫存區,通過git commit實質就是講暫存區的所有內容提交到當前分支上。
比如,我現在繼續修改我的文件test.txt,在里面添加 11111111 然后使用git add test.txt,然后在修改文件添加22222222,接下來使用git reset -- test.txt,再查看文件,發現后來添加的2222222沒有了。
原因就是使用git add test.txt后,已經將修改的內容放在了暫存區,
注意:上面的使用git checkout -- test.txt中 -- 很重要,如果沒有的話,那么命令就變成創建分支了。
6)撤銷修改:
方法1:使用上面的git checkout -- test.txt 可以丟棄工作區的內容
方法2:如果知道哪些修改內容的話,我們可以手動的刪除掉,再add commit
方法3:可以按照上面說的直接回退到上一個版本 git reset --hard^
7)刪除及撤銷刪除文件
在目錄下新建test1.txt,然后執行add及 commit命令,將文件添加到版本庫
方法1:手動刪除文件,然后執行add 及commit
方法2:rm test1.txt,然后執行add及commit
要撤銷刪除,需要在未執行commit之前,可以執行git checkout -- test1.txt即可
5、使用遠程倉庫
1)創建一個GitHub賬號
https://github.com
2)由於本地倉庫和GitHub倉庫之間是通過SSH加密傳輸的,因此需要設置ssh key
先打開自己電腦的主目錄,看是否有id_rsa和id_rsa.pub兩個文件,如果沒有的話,在git客戶端命令行中輸入如下命令:
ssh-keygen -t rsa -C "youremail@xx.com"
--------》會生成如下兩個文件,id_rsa是私鑰,id_rsa.pub是公鑰
3)將id_rsa.pub中的內容復制到GitHub中的ssh key中
title可以任意命名,然后將id_rsa.pub中的內容復制到key中,點擊Add SSH key按鈕即可
4)創建遠程倉庫
5)本地倉庫和遠程倉庫同步:
1)git init:將本地倉庫變成可git管理
2)在本地倉庫運行如下命令:
git remote add origin 你的遠程倉庫地址
3)再運行git push -u origin master,將本地倉庫中當前分支的內容同步到遠程倉庫去
由於遠程倉庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地master分支的內容推送到遠程新的master分支,還會把本地master分支和遠程master分支關聯起來。
以后再推送或者拉取的時候,可以簡化命令,推送成功過后,我們再去GitHub上面查看我們的分支,可以看到和我們本地一樣的內容了。
后面如果我們本地做了修改,提交代碼后,只需要運行git push origin master,即可將本地最新修改同步到GitHub上的master分支上。
6)從遠程分支上克隆代碼到本地
我們在GitHub上面,新建一個倉庫testgit,並在里面新建一個文件test,輸入內容this is a test file
然后在本地運行如下命令:
git clone github地址
然后再去我們的本地倉庫查看,發現我們成功的從遠程倉庫中克隆了代碼。
6、創建與合並分支
創建新分支:git branch dev
切換到新分支:git checkout dev
創建並切換新分支:git checkout -b dev1
查看當前所有分支:git branch,在當前分支的前面會加一個*號
合並dev分支到master分支:git merge dev, git merge命令用於合並指定分支(dev)到當前分支上(master)
刪除dev分支:git branch -d dev
7、解決沖突
8、bug分支
在開發過程中遇到一個bug,但是我的分支上面還有任務沒有解決完成,這個時候,需要新建一個bug分支來解決bug,解決完成后合並到master分支,刪除bug臨時分支。
1)將dev開發分支暫存:git stash
2)切換到需要修復bug的分支,以master為例
3)在master分支上創建一個臨時分支:git checkout -b bug_branch
4)在bug_branch分支上修改完成后,切換回master分支,然后將bug_branch分支上的修改合並過來:git merge --no-ff -m "fix some bug" bug_branch
5)刪除bug分支:git branch -d bug_branch
6)切換回開發分支:git checkout dev
7)查看前面暫存的內容:git stash list
8)恢復之前暫存的內容:
1) git stash apply:恢復后,stash內容並不刪除,需要我們運行git stash drop來手動刪除
2) git stash pop:恢復的同時,刪除stash內容
9、Git常用命令:
1)mkdir XX:創建一個名為XX的目錄
2)pwd:顯示當前目錄的路徑
3)git init:把當前目錄變成可以管理的git倉庫,生成隱藏的.git文件
4)git add xx:把xx文件添加到暫存區
5)git commit -m "提交說明":將暫存區的內容推送到git倉庫中
6)git status:查看倉庫狀態
7)git diff xx:查看xx文件修改了哪些內容
8)git log:查看歷史記錄(Q退出)
9)git reset --hard HEAD^ 或者git reset --hard HEAD~回退到上個版本
10)cat XX:查看XX文件的內容
11)git reflog:查看歷史記錄的版本號id
12)git checkout -- xx:把xx文件在工作區的修改內容全部撤銷
13)git rm xx:刪除xx文件
14)git remote add origin git倉庫地址:關聯一個git遠程倉庫
15)git push -u origin master:把當前master分支推送到遠程庫(第一次使用的時候,需要加上-u,后面不再需要-u)
16)git clone git倉庫地址:從遠程倉庫中克隆
17)git checkout -b dev:創建dev分支並切換到dev分支
18)git checkout master:切換分支到master
19)git branch:查看當前所有分支
20)git branch name:創建名為name的分支
21)git merge dev:在當前分支上合並dev
22)git stash:把當前工作隱藏起來,等以后恢復現場后再繼續使用
23)git stash list:查看隱藏的所有文件列表
24)git stash apply:恢復隱藏的文件,但是隱藏的內容不刪除
25)git stash drop:刪除隱藏文件
26)git stash pop:恢復隱藏文件並刪除
27)git remote:查看遠程庫的信息
28)git remote -v:查看遠程庫的詳細信息
29)git push origin master:git會把master分支推送到遠程倉庫對應的分支上
10、常見錯誤:
注:如果此時出現了如下錯誤:
1)在使用git push -u origin master的時候,出現如下錯誤:
! [rejected] master -> master (non-fast-forward)
原因是:遠程倉庫中存在本地不存在的文件
解決方案:按照提示中的使用git pull... 將遠程的文件拉到本地倉庫中:
git pull origin master --allow-unrelated-histories
此時再使用git push origin master就可以成功了。
2)如果出現以下錯誤:
fatal: the remote end hung up unexpectedly
錯誤出現的原因:一般是因為上傳的文件太大導致
解決方案:我們可以通過修改允許上傳的文件大小來解決這個問題:
在我們使用git init生成的.git 文件夾下的config文件中,添加下面2行即可: