git使用步驟

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-br-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-br-conflict-merged

用帶參數的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章