git 日常使用

1.git介紹

Git是一個開源的分布式版本控制系統(tǒng)溯职。Linus Benedict Torvalds,芬蘭赫爾辛基人媒熊,著名的電腦程序員奇适,Linux內(nèi)核的發(fā)明人及該計劃的合作者坟比,2005年,git的第一個版本正式上線嚷往。2周完成Git系統(tǒng)開發(fā)

Git是分布式的葛账,SVN是集中式的, git 是單機版的SVN

2.基礎(chǔ)命令

1.查看版本

1.git --version

查看日志

git log online
git log --oneline --graph --color --all --decorate

截屏2023-09-18 15.48.47.png
2.添加賬戶和郵箱

git config --global user.name '你的賬號昵稱'
git config --global user.email '你的賬號郵箱'

3.查看git配置信息

git config —list

截屏2023-09-18 15.50.29.png
截屏2023-09-21 13.15.07.png
4.創(chuàng)建本地倉庫皮仁,關(guān)聯(lián)到遠程倉庫
a.創(chuàng)建git倉庫

git init

b.添加所有改動的文件到暫存期

git add . 點代表 全部

c.提交至本地倉庫

git commit -m "提交的備注信息"

d.本地倉庫和遠程倉庫想關(guān)聯(lián)

git remote add origin https://xxxxxxxx

4.查看遠程的源

git remote -v


截屏2023-09-18 16.02.01.png
5.重命名本地分支

git branch -m <oldbranch> <newbranch>


截屏2023-09-18 16.11.06.png
6.拉去遠程分支

git pull
git pull --rebase origin master

7.推送到代碼到遠程分支

git push origin master
git push --f origin master 強制提交

截屏2023-09-18 16.21.21.png

8.查看單前的分支

git branch
git branch -r 查看遠程所有分支
git branch -a 查看本地和遠程的所有分支

9.創(chuàng)建本地新的分支

git branch dev

10.切換到相應(yīng)的分支

git checkout dev

10.創(chuàng)建分支的同時切換到該分支

git checkout -b release


截屏2023-09-18 16.37.10.png
11.刪除本地分支

git branch -d 'release'

12.將本地分支推送到遠程分支

git push origin 'dev'
截屏2023-09-18 16.40.49.png
13.查看文件狀態(tài)

git status


截屏2023-09-20 16.02.39.png
14.暫存代碼

git stash
git stash save ‘stash說明信息’


截屏2023-09-18 16.50.38.png

[圖片上傳中...(截屏2023-09-20 16.01.50.png-c512fc-1695196917569-0)]

14.查看當(dāng)前緩存列表籍琳。

git stash list


截屏2023-09-18 16.52.50.png
15.將stash的內(nèi)容彈出,默認彈出最上面的那條贷祈,即stash@{0} 同時刪除恢復(fù)的緩存條目趋急。

git stash pop [stash]

16.丟棄stash條目,默認丟棄最上面的那條势誊,即stash@{0}呜达,此外還可以在drop后加stash@{n}來指定要丟棄的stash條目。

git stash drop [stash]

17.查看stash的具體內(nèi)容

git stash show [stash]
git stash show [stash] -p

18.應(yīng)用某個存儲,但不會把存儲從存儲列表中刪除粟耻,默認使用第一個存儲,即stash@{0}查近,

git stash apply stash@{n}

19.清除所有的stash條目。

git stash clear

20.獲取某個分支上的某個commit 提交

git cherry-pick
然而git merge會把一個分支的commits都應(yīng)用到當(dāng)前分支勋颖,這時候我們可以使用git cherry-pick來完成這一操作,它的作用是選擇已存在的commit應(yīng)用到當(dāng)前分支上勋锤,并產(chǎn)生新的commit SHA-1 校驗和饭玲。

多個commits

git cherry-pick commit1 commit2

連續(xù)多個commits
git cherry-pick commit1..commit8 (不包含commit1 2-8)(2,8]

連續(xù)多個commits
git cherry-pick commit1^..commit8 (包含commit1 1-8)[1,8]

發(fā)生沖突后 解決沖突再執(zhí)行

git add .
git cherry-pick --continue
完成 cherry-pick操作

放棄這次cherry-pick

git cherry-pick --abort

21.git版本回退

git reset --soft commit號/HEAD
將本地倉回滾到Y(jié)版本,但是暫存區(qū)和工作區(qū)保持不變叁执。此時本地倉回滾到Y(jié)版本號commit完成的那一刻茄厘。


截屏2023-09-19 14.04.51.png

截屏2023-09-19 13.43.23.png

git reset --hard commit號/HEAD
本地倉、暫存區(qū)谈宛、工作區(qū)次哈,三區(qū)都回滾


截屏2023-09-19 14.07.02.png
截屏2023-09-19 13.47.48.png

git reset --mixed commit號/HEAD 或者 git reset
本地倉和暫存區(qū),都回滾到Y(jié)版本號吆录。工作區(qū)代碼不受影響

截屏2023-09-19 14.08.10.png

截屏2023-09-19 13.36.55.png

HEAD
HEAD 說明:
HEAD 表示當(dāng)前版本
HEAD^ 上一個版本
HEAD^^ 上上一個版本
HEAD^^^ 上上上一個版本

可以使用 ~數(shù)字表示
HEAD~0 表示當(dāng)前版本
HEAD~1 上一個版本
HEAD^2 上上一個版本
HEAD^3 上上上一個版本

使用git reflog命令可以幫助恢復(fù)git誤操作,進行數(shù)據(jù)恢復(fù)

git reflog

截屏2023-09-20 16.07.02.png

22.git rebase 和 git merge
1.merge 和 rebase 的區(qū)別:

1.使用merge命令合并分支窑滞,解決完沖突,這個時候會產(chǎn)生一個commit恢筝。rebase不會產(chǎn)生這個commit

  1. 使用rebase命令合并分支哀卫,解決完沖突,執(zhí)行g(shù)it add.和git rebase--continue撬槽,不會產(chǎn)生額外的commit此改。
    這樣的好處是,‘干凈’侄柔,分支上不會有無意義的解決分支的commit共啃;

壞處占调,如果合并的分支中存在多個commit,需要重復(fù)處理多次沖突移剪。

3.merge 的提交樹是非線性的究珊,rebase 的提交樹是線性的(通過重寫提交歷史)

如果你想要一個干凈的,沒有merge commit的線性歷史樹挂滓,那么你應(yīng)該選擇git rebase
如果你想保留完整的歷史記錄苦银,并且想要避免重寫commit history的風(fēng)險,你應(yīng)該選擇使用git merge

截屏2023-09-20 11.05.54.png

截屏2023-09-20 11.12.02.png
截屏2023-09-21 16.36.15.png
  1. git rebase -i HEAD~3 “HEAD~3” 表示從當(dāng)前最新的版本號開始赶站,往前的三個版本
截屏2023-09-20 18.14.21.png
截屏2023-09-20 16.09.25.png
git tag 標(biāo)簽

git tag -a v1.4 -m "my version 1.4"

git tag -a v1.2 9fceb02 后期在某一個commit打標(biāo)簽

git tag 查看標(biāo)簽

git push origin v1.5 推送一個tag到遠程

git push origin --tags 如果想要一次性推送很多標(biāo)簽幔虏,也可以使用帶有 --tags 選項

git tag -d <tagname> 要刪除掉你本地倉庫上的標(biāo)簽(注意上述命令并不會從任何遠程倉庫中移除這個標(biāo)簽,用 git push <remote> )

git push origin --delete <tagname> 直接刪除遠程標(biāo)簽

git push origin :refs/tags/v1.4

.gitignore 文件

/mtk/ 過濾整個文件夾
*.zip 過濾所有.zip文件
/mtk/do.c 過濾某個具體文件

!src/ 不過濾該文件夾
!*.zip 不過濾所有.zip文件
!/mtk/do.c 不過濾該文件

星號 * 代表零個或多個任意字符贝椿。例如, *.txt 會匹配所有的 .txt 文件想括。
問號 ? 代表一個任意字符。例如, ?.txt 會匹配 a.txt 但不會匹配 ab.txt烙博。
兩個星號 ** 表示任意中間目錄瑟蜈。例如, **/foo 會匹配 foo,a/foo渣窜,a/b/foo 等
前綴 ! 表示不忽略铺根。例如, *.txt 和 !important.txt 會忽略所有的 .txt 文件,但不會忽略 important.txt乔宿。
前綴 / 表示只忽略當(dāng)前目錄下的文件位迂。例如, /test 會忽略當(dāng)前目錄下的 test 文件,但不會忽略 a/test
后綴 / 表示只忽略目錄详瑞。例如, test/ 會忽略 test 目錄掂林,但不會忽略 test 文件

注意

最后需要強調(diào)的一點是,如果你不慎在創(chuàng)建.gitignore文件之前就push了項目坝橡,那么即使你在.gitignore文件中寫入新的過濾規(guī)則泻帮,這些規(guī)則也不會起作用,Git仍然會對所有文件進行版本管理计寇。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push origin master

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锣杂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子番宁,更是在濱河造成了極大的恐慌蹲堂,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贝淤,死亡現(xiàn)場離奇詭異柒竞,居然都是意外死亡,警方通過查閱死者的電腦和手機播聪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門朽基,熙熙樓的掌柜王于貴愁眉苦臉地迎上來布隔,“玉大人,你說我怎么就攤上這事稼虎⌒铺矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵霎俩,是天一觀的道長哀军。 經(jīng)常有香客問我,道長打却,這世上最難降的妖魔是什么杉适? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮柳击,結(jié)果婚禮上猿推,老公的妹妹穿的比我還像新娘。我一直安慰自己捌肴,他們只是感情好蹬叭,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著状知,像睡著了一般秽五。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饥悴,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天坦喘,我揣著相機與錄音,去河邊找鬼铺坞。 笑死起宽,一個胖子當(dāng)著我的面吹牛洲胖,可吹牛的內(nèi)容都是我干的济榨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼绿映,長吁一口氣:“原來是場噩夢啊……” “哼擒滑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叉弦,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丐一,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后淹冰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體库车,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年樱拴,在試婚紗的時候發(fā)現(xiàn)自己被綠了柠衍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋满。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖珍坊,靈堂內(nèi)的尸體忽然破棺而出牺勾,到底是詐尸還是另有隱情,我是刑警寧澤阵漏,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布驻民,位于F島的核電站,受9級特大地震影響履怯,放射性物質(zhì)發(fā)生泄漏回还。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一虑乖、第九天 我趴在偏房一處隱蔽的房頂上張望懦趋。 院中可真熱鬧,春花似錦疹味、人聲如沸仅叫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诫咱。三九已至,卻和暖如春洪灯,著一層夾襖步出監(jiān)牢的瞬間坎缭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工签钩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掏呼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓铅檩,卻偏偏與公主長得像憎夷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昧旨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前14條在工作中會經(jīng)常用到 1.如何將遠程倉庫克隆到本地 注意如果此時你的項目是空的拾给,要先建個頁面push到遠程倉...
    _花閱讀 332評論 0 1
  • 創(chuàng)建代碼庫 cd到某個目錄,然后創(chuàng)建一個Git本地代碼庫 $ git init cd到某個目錄兔沃,將其初始化為帶名字...
    cyhai閱讀 502評論 0 0
  • 開篇 如今蒋得,Git 大行其道,頗有一統(tǒng)天下之勢乒疏。 如果你的技能樹上 Git 和 Github 的圖標(biāo)還沒有點亮的話...
    sufun_wu閱讀 197評論 0 0
  • git 日常使用 ==查看隱藏文件 -ah== 初始化本地倉庫 添加文件到git 提交 查看當(dāng)前倉庫的狀態(tài) 查看修...
    sunjiandev閱讀 213評論 0 1
  • Git概念介紹 Git描述 Git是一個開源的分布式版本控制系統(tǒng)额衙,分布式的含義是(它不需要服務(wù)器端軟件的支持)。另...
    暖小憂閱讀 265評論 0 0