Git的使用筆記

? ? ? 說來慚愧,雖然身為一個低端的android碼農(nóng),但是我一直很害怕使用git,原因是進入工作后一直是一個人開發(fā),剛開始接觸git時,由于不知道什么是gitignore文件,導(dǎo)致將apk包提交推送上去了,也不知道為啥,后來一直就推送遠端失敗,結(jié)果我就一用硬盤保存我寫的代碼。再后來,新開了一個倉庫,但是一個人也就隨便用用 add ,commit和push這三個方法,直到今年的二月下旬,我終于忍不了了,下決心想學(xué)會git的命令。學(xué)完后,向眾位大佬學(xué)習(xí),寫一篇文檔,記錄一下使用git的方方面面,以便于遺忘了進行查找。

? ? ? git的歷史大家隨便百度就能知道,過去不會的時候感覺為啥會有g(shù)it這個東西,現(xiàn)在稍微會了一些,感覺確實方便了不少。下來我來記錄我學(xué)到的和常用的命令。

? ? ? 首先給大家推薦一個b站上的將git命令的課,這個課我覺得是講的很詳細的,我也是跟他學(xué)的,大家可以看看視頻地址


? ?配置用戶名和郵箱

git config --global user.name "用戶名" ????????配置或修改用戶名

git config --global user.emal "532886747@qq.com"? 配置或修改郵箱

git config --list 查看配置項

git config user.name 查看用戶名

git help 查看git幫助

git config --global --replace-all user.name “你的用戶名” 修改你的用戶名

git config --global --replace-all user.email “你的郵箱”? 修改你的郵箱

其中,當(dāng)輸入--list的時候會發(fā)現(xiàn)git還停留在:這個狀態(tài),這個時候我們按回車鍵,會一直顯示未顯示的下一行,當(dāng)出現(xiàn)(END)的時候我們按q就可以了,當(dāng)然也可以直接按q,這樣就退出了。

?管理git項目

git init? 生成.git文件 ,被git管理

git init [name]? 如果加上文件名 則是先創(chuàng)建一個文件名,然后在生成.git文件

git add [filename]? 添加文件被追蹤,添加到暫存區(qū)

git add .? ? 添加所有文件被追蹤,添加到暫存區(qū)

git status? 查看文件的狀態(tài)

git commit -m “描述”

git commit -am 相當(dāng)于 add. + -m

每次commit的時候都會生成一個版本。

當(dāng)時用git status 查看狀態(tài)的時候,只要文件有被更新過或者新創(chuàng)建一個文件,那就會顯示出來,如果文件沒有被add .,就會顯示untracked files 該文件未被追蹤 。

當(dāng)時用git add 后在查看狀態(tài),就會變成 文件就會變色

當(dāng)被commit 后, 會顯示 master(提交的分支) , root-coomit (第一次提交),0c5ae36(版本號),提交(提交時的說明)

1 file 一個文件被改動,1 insertion 一個文件被添加

commit -m “提交”

log追蹤

git log 相當(dāng)于你的提交日志

git log -p -2 最近兩次提交內(nèi)容的不同

git log --author?

git log --oneline 簡化版的git log,只顯示一行。

git log --graph 查看版本線圖

git log --pretty=format 打印出格式化的日志

追蹤文件修改前后的不同

git diff 查看文件和之前的修改的不同

git diff --staged 在stage狀態(tài)查看修改的不同 (就是當(dāng)git add .的時候)

當(dāng)你需要對比和上一次提交代碼之前修改代碼不同的時候,可以用這兩個命令來實現(xiàn)

文件忽略.gitignore

/node_modules? 忽略node_modules文件夾下所有文件

*.log? 忽略.log結(jié)尾的文件

&.zip 忽略.zip結(jié)尾的文件

git rm? -r -- cached. 把已追蹤的文件忽略

撤銷追蹤操作? 一鍵還原

git checkout -- [filename]? ? ? ? ?恢復(fù)到上一次的狀態(tài) 就是切到上一步提交的版本

git reset HEAD [filename]? ? ? ? 撤銷當(dāng)前文件的追蹤

版本回退(慎用)

git?reset --hard HEAD ^? ? ? ? ? ?回退到上一個版本

git reset --hard HEAD ^^? ? ? ? ?回退到上上一個版本

git reset --hard HEAD [hash號]? ? ????回退到指定hash的版本

git reflog? 指針理解

回到舊版本(推薦)

git checkout [hash號] -- [filename]???????? 將某一個文件切回到版本號

git checkout [hash好] -- .???????? 將所有切回到這個版本

版本回退和回到版本的概念是不同的,如果是版本回退 :v1 -> v2 -> v3 ,如果我要回退到v2這個版本,那么v3這個版本就會被刪掉?;氐侥硞€版本則不會刪掉v3這個版本,而是v3的指針會指到v2,變成v1 -> v2 -> v3 -> v2。

建立切換分支刪除分支(重點)

git branch [name]? ?????????創(chuàng)建一個分支,不加名字就是展示分支

git checkout [branch name]????????????切換分支

git checkout -b [branch name]??????????建立和切換同時進行

git branch [name] -d????????????刪除一個分支

git branch [name] -D????????????強制刪除分支

分支的作用就是當(dāng)多人開發(fā)的時候,不影響生產(chǎn)分支的情況下 ,大家各自開發(fā)各自的,當(dāng)需要合并的時候,再合并。

當(dāng)你誤刪了分支怎么辦?1.拿到被刪分支的hash值。2.git branch [hash值] 分支就會回來了。這個方法我沒試驗過。?

分支的創(chuàng)建和切換非常重要,我之前就怕合并(原罪是自己too young),一定要練習(xí)熟練。

合并分支和沖突的解決(重點)

git merge [branch name]? ????????講name分支合并到目前所處的分支

git status ????????查看分支沖突的原因

git merge --abort ????????忽略合并

手動選擇正確內(nèi)容

git commit?

首先在dev-test的分支下修改了代碼

dev-test分支

這時commit代碼,在test分支下已經(jīng)生成了一個版本

提交代碼并生成分支

這時我切換分支到develop并在相同的位置寫了這樣的代碼并提交。

develop分支

這時,我打算將develop分支上的內(nèi)容合并到dev-test分支 于是有了以下的操作,當(dāng)我打算合并的時候,git報錯,分支沖突在myActivity這個類,翻譯為(自動合并失敗,修復(fù)沖突并提交結(jié)果)

合并分支發(fā)生沖突

在android studio中會顯示出沖突的地方,HEAD到=代碼 當(dāng)前分支的內(nèi)容 =到develop 代表develop分支(即你打算合并的分支)的內(nèi)容,這個時候就可以取舍了,可以根據(jù)自己的需求刪除或保留沖突的地方。(git status也可以查看出具體沖突的文件)

沖突的內(nèi)容
我選擇將兩個都保留

接下來就是用git add. ,git commit 這兩個方法 然后會出現(xiàn)以下情況,這時候你將沖突的描述寫完后

添加描述,然后摁下ESC 輸入:wq。最后回車,這樣沖突就解決了。

總結(jié):當(dāng)合并分支發(fā)生沖突的時候,有兩種解決方式:1.手動解決沖突,看哪些代碼需要留下,哪些代碼需要刪除。這種方式的前提是你知道哪些代碼需要合并。2.忽略合并,當(dāng)前代碼不知道哪些需要留下,哪些需要刪掉的時候,就是用--abort方法。

通過命令查看版本線圖

git log --graph

git log --oneline --graph? ??

git log --oneline --graph --all? ? 查看所有分支下的線圖

git log --oneline --graph -[number]? ??

快轉(zhuǎn)機制的意義

快轉(zhuǎn)實際就是當(dāng)前master的將來時

git merge branchname --no-ff? ?

更多合并的方法

git merge --no-ff --no-commit [branchname]

git merge --squash [branchname]????不想在合并分支時體現(xiàn)你多次commit記錄的話,就用這個方法

git reset --hard ORIG_HEAD? ????????回退到源版本,也就是最初的版本

一次性刪掉所有不想要的分支

git branch --merged i egrep -v "(^|maseter|develop)" | xargs git branch -d ????????括號里代表不想刪的分支


今天先記錄這么多,過兩天補充跟遠端有關(guān)的筆記。

補充一下?

如何合并分支中的部分提交?

1.首先查看需要合并的分支中提交的hash號

2.切換到主分支, 使用? git cherry-pick hash號 (這個hash號是分支中提交的hash號)

3.然后就ok了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • git 使用筆記 git原理: 文件(blob)對象,樹(tree)對象,提交(commit)對象 tree對象 ...
    神刀閱讀 3,848評論 0 10
  • 原文地址主要用到的命令: git config user.name 設(shè)置用戶名 git config user....
    AFinalStone閱讀 560評論 0 2
  • 1. 安裝 安裝完成后,需要一步設(shè)置,在命令行中輸入: git config --global user.name...
    kevenZheng閱讀 366評論 0 0
  • 教程:Git教程 - 廖雪峰的官方網(wǎng)站 各系統(tǒng)安裝git git init 把目錄變?yōu)閭}庫git add rea...
    皮丘吉爾閱讀 378評論 0 0
  • Git簡介 Git是目前世界上最先進的分布式版本控制系統(tǒng)。 作用 創(chuàng)建版本庫 1. 新建一個文件夾 ,通過git ...
    petite_chen閱讀 226評論 0 0

友情鏈接更多精彩內(nèi)容