git步驟:
1.git add 某個文件名
git add . :他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。
2.git commit "文件描述"
3.當commit的源文件再次修改過時,需要再寫一次git commit -am 文件名
4.與遠程建立了聯繫
git remote add origin https://github.com/heidao10duan/myLrose
5.將文件push到一個分支(我新創建的)
git pull origin master //將GitHub倉庫更新到本地
git push origin master:jyp_cleanDetail或git push origin master
錯誤整理
錯誤一:我寫的了git add . 出現以下的報錯,git status 查看沒有添加本地倉庫中.
報錯信息warning: CRLF will be replaced by LF in XXX . The file will have its original line endings in your working directory.
解決:git config core.autocrlf false //將設置中自動轉換功能關閉
備註:CRLF : windows 環境下的換行符,LF : linux 環境下的換行符
文件中存在兩種環境的換行符,git 會自動替換 CRLF 爲 LF ,所以導致git add . 添加失敗!!!
錯誤2:今天在提交git的時候遇到# Please enter the commit message for your changes. Lines starting
with '#' will be ignored, and an empty message aborts the commit.的問題。
原因是因爲提交的命令爲: git commit
修改提交命令爲 : git commit -m "註釋"
錯誤3: git commit "dsfdf"
error: pathspec 'dsfdf' did not match any file(s) known to git
原因:git push之前,多次commit時,詳情信息必須一樣
錯誒4:Please enter a commit message to explain why this merge is necessary.
請輸入提交消息來解釋爲什麼這種合併是必要的
git 在pull或者合併分支的時候有時會遇到這個界面。可以不管(直接下面3,4步),如果要輸入解釋的話就需要:
1.按鍵盤字母 i 進入insert模式
2.修改最上面那行黃色合併信息,可以不修改
3.按鍵盤左上角"Esc"
4.輸入":wq",注意是冒號+wq,按回車鍵即可
基礎知識整理:
1.設置用戶名
git config --global user.name '倉庫名'
2.設置用戶名郵箱
git config --global user.email '[email protected]'
3.查看設置
git config --list
4.初始化
git init
5.查看狀態
git status
6.創建文件
touch test.java
7.將文件添加到暫存區
git add test.java
8.將文件添加到倉庫
git commit -m'描述信息'
commit之後的文件修改後再次commit
git commit -am'描述信息'
8.1將本地倉庫代碼提交到遠程倉庫
git push
1.先從遠程倉庫中clone代碼到本地
git clone https://github.com/MatchlessHeroVIP/ssmtest.git
9.向文件中寫內容
vi或者是vim test.java
10.查看文件內容
cat test.java
11.刪除文件
rm -rf test.java
12.將文件從暫存區中刪除
git rm test.java
13.將文件從倉庫中刪除
git commit -m'描述消息'
14.查看設置
git config --list
15.查看當前文件夾裏的文件
ls
16.設置權限問題
將.git/config裏的
[remote "origin"]
url = https://github.com/用戶名/倉庫名.git
修改爲:
[remote "origin"]
url = https://用戶名:密碼@github.com/用戶名/倉庫名.git
==================================================================
17、將本地倉庫關聯到GitHub倉庫上
執行:git remote add origin https://github.com/heidao10duan/myLrose
18、將GitHub倉庫更新到本地
執行:git pull origin master
說明:因爲可能GitHub倉庫上可能有些變更,需要先同步到本地,才能將本地的改變提交到GitHub倉庫上
19、將本地倉庫同步到GitHub倉庫
git push命令用於將本地分支的更新,推送到遠程主機。
$ git push <遠程主機名> <本地分支名>:<遠程分支名>
執行:git push origin master
這裏的master爲master:master
origin爲默認遠程主機,將本地的master分支推送到origin主機的master分支。如果後者不存在,則會被新建。
如果省略本地分支名,則表示刪除指定的遠程分支,因爲這等同於推送一個空的本地分支到遠程分支。
$ git push origin :master
# 等同於
$ git push origin --delete master
如果當前分支與多個主機存在追蹤關係,則可以使用-u選項指定一個默認主機,這樣後面就可以不加任何參數使用git push。
$ git push -u origin master
上面命令將本地的master分支推送到origin主機,同時指定origin爲默認主機,後面就可以不加任何參數使用git push了。
解決github裏的readme文件沒有下載下來的問題
$ git pull --rebase origin master
(git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
)
然後執行
git push origin master
即可成功把本地的文件都上傳到github上面去了。
20.此時再去github網站上也就可以看到對應文件了
二。版本回退
主要使用 git reset --soft\mix\hard命令
1。如果要返回上一個版本,是可以通過git reset --hard HEAD^
2。如果要退回好幾個以前的版本的話可以git reset --hard commitID
可以通過git log來查看commitID,但是注意的是當你回退了一個版本的話,git log是無法查出你上個版本的信息的
一。恢復git reset --hard刪除的文件
1.恢復已提交遠程倉庫文件的方法
使用 git reflog 來找到最近提交的信息,
git reset ID 來恢復文件
2.恢復僅提交到本地倉庫文件的方法
找到需要回退的那次commit的 哈希值,
git reset --hard 05485c526e9b80203f9d9e8a44f28d4b1e6ab287
git reset --hard commit_id
其實就是--soft 、--mixed以及--hard是三個恢復等級。使用--soft就僅僅將頭指針恢復,已經add的緩存以及工作空間的所有東西都不變。如果使用--mixed,就將頭恢復掉,已經add的緩存也會丟失掉,工作空間的代碼什麼的是不變的。如果使用--hard,那麼一切就全都恢復了,頭變,aad的緩存消失,代碼什麼的也恢復到以前狀態。
git checkout master切換分支
git checkout -b newBranch在新分支創建的同時切換分支
b代表branch的意思。該命令相當於下面這兩條命令的執行結果:
1. git branch newBranch (創建新的分支,但是不會切換到新建的分支上)
2. git checkout newBranch
git diff
HEAD這是當前分支版本頂端的別名,也就是在當前分支你最近的一個提交
工作區(Working Directory):就是你在電腦裏能看到的目錄
版本庫(Repository)
工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。
我們把文件往Git版本庫裏添加的時候,是分兩步執行的:
第一步是用git add
把文件添加進去,實際上就是把文件修改添加到暫存區;
第二步是用git commit
提交更改,實際上就是把暫存區的所有內容提交到當前分支。
因爲我們創建Git版本庫時,Git自動爲我們創建了唯一一個master
分支,所以,現在,git commit
就是往master
分支上提交更改。
你可以簡單理解爲,需要提交的文件修改通通放到暫存區,然後,一次性提交暫存區的所有修改
https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536
找到需要回退的那次commit的 哈希值,
git reset --hard 05485c526e9b80203f9d9e8a44f28d4b1e6ab287
git reset --hard commit_id
二。merge解決衝突
準備新的feature1
分支,繼續我們的新分支開發:
$ git switch -c feature1
Switched to a new branch 'feature1'
修改readme.txt
最後一行,改爲:
Creating a new branch is quick AND simple.
在feature1
分支上提交:
$ git add readme.txt
$ git commit -m "AND simple"
[feature1 14096d0] AND simple
1 file changed, 1 insertion(+), 1 deletion(-)
切換到master
分支:
$ git switch master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Git還會自動提示我們當前master
分支比遠程的master
分支要超前1個提交。
在master
分支上把readme.txt
文件的最後一行改爲:
Creating a new branch is quick & simple.
提交:
$ git add readme.txt
$ git commit -m "& simple"
[master 5dc6824] & simple
1 file changed, 1 insertion(+), 1 deletion(-)
現在,master
分支和feature1
分支各自都分別有新的提交,變成了這樣:
這種情況下,Git無法執行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突,我們試試看:
$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
果然衝突了!Git告訴我們,readme.txt
文件存在衝突,必須手動解決衝突後再提交。git status
也可以告訴我們衝突的文件:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
我們可以直接查看readme.txt的內容:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
Git用<<<<<<<
,=======
,>>>>>>>
標記出不同分支的內容,我們修改如下後保存:
Creating a new branch is quick and simple.
再提交:
$ git add readme.txt
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed
現在,master
分支和feature1
分支變成了下圖所示:
用帶參數的git log
也可以看到分支的合併情況:
$ git log --graph --pretty=oneline --abbrev-commit
* cf810e4 (HEAD -> master) conflict fixed
|\
| * 14096d0 (feature1) AND simple
* | 5dc6824 & simple
|/
* b17d20e branch test
* d46f35e (origin/master) remove test.txt
* b84166e add test.txt
* 519219b git tracks changes
* e43a48b understand how stage works
* 1094adb append GPL
* e475afc add distributed
* eaadf4e wrote a readme file
最後,刪除feature1
分支:
$ git branch -d feature1
Deleted branch feature1 (was 14096d0).
小結
當Git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
解決衝突就是把Git合併失敗的文件手動編輯爲我們希望的內容,再提交。
用git log --graph
命令可以看到分支合併圖。
說明,最後解決衝突這一篇是複製廖雪峯大佬的
https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344