日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git简易指南

發布時間:2024/8/26 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git简易指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 工作流
  • 初始化倉庫
  • 添加和提交
  • 推送改動
  • 分支
  • 更新與合并
  • 替換本地改動
  • 回滾
  • 遠程倉庫
  • 有用的貼士
  • GIT vs SVN

工作流

你的本地倉庫由 git 維護的三棵“樹”組成。第一個是你的 工作目錄,它持有實際文件;第二個是 緩存區(Index),它像個緩存區域,臨時保存你的改動;最后是 HEAD,指向你最近一次提交后的結果。

初始化倉庫

$ git init Initialized empty Git repository in /Users/michael/learngit/.git/ #初始化了空的git倉庫,生成的.git目錄用來跟蹤管理版本庫

git init 把當前目錄變成Git可以管理的倉庫。

添加和提交

你可以計劃改動(把它們添加到緩存區),使用如下命令:

git add <filename> git add *

這是 git 基本工作流程的第一步;使用如下命令以實際提交改動:

git commit -m "代碼提交信息"

現在,你的改動已經提交到了 HEAD,但是還沒到你的遠端倉庫。

推送改動

你的改動現在已經在本地倉庫的 HEAD 中了。執行如下命令以將這些改動提交到遠端倉庫:

git push origin master

可以把 master 換成你想要推送的任何分支。

如果你還沒有克隆現有倉庫,并欲將你的倉庫連接到某個遠程服務器,你可以使用如下命令添加:

git remote add origin

如此你就能夠將你的改動推送到所添加的服務器上去了。

分支

分支是用來將特性開發絕緣開來的。在你創建倉庫的時候,master 是“默認的”。在其他分支上進行開發,完成后再將它們合并到主分支上。

創建一個叫做“feature_x”的分支,并切換過去:
git checkout -b feature_x

切換回主分支:
git checkout master

再把新建的分支刪掉:
git branch -d feature_x

除非你將分支推送到遠端倉庫,不然該分支就是 不為他人所見的:
git push origin

更新與合并

要更新你的本地倉庫至最新改動,執行:
git pull

以在你的工作目錄中 獲取(fetch) 并 合并(merge) 遠端的改動。

要合并其他分支到你的當前分支(例如 master),執行:

git merge

兩種情況下,git 都會嘗試去自動合并改動。不幸的是,自動合并并非次次都能成功,并可能導致 沖突(conflicts)。 這時候就需要你修改這些文件來人肉合并這些 沖突(conflicts) 了。改完之后,你需要執行如下命令以將它們標記為合并成功:

git add

在合并改動之前,也可以使用如下命令查看修改的內容:

git diff

替換本地改動

假如你做錯事(自然,這是不可能的),你可以使用如下命令替換掉本地改動:

git checkout --

此命令會使用 HEAD 中的最新內容替換掉你的工作目錄中的文件。已添加到緩存區的改動,以及新文件,都不受影響。

假如你想要丟棄你所有的本地改動與提交,可以到服務器上獲取最新的版本并將你本地主分支指向到它:

git fetch origin

git reset --hard origin/master

因為暫存區的存在,撤銷修改分為幾種情況(通過 git status 查看倉庫狀態時會提示相關撤銷修改的命令):

修改后,文件沒有放入暫存區(即文件一直在工作區):用 git checkout -- 文件名 撤銷工作區的改動(回到跟版本庫一樣的狀態,即回到最近一次 git commit時的狀態,所有改動全部清除)

修改后,文件放入暫存區,且文件沒有再次修改(即文件已經進入暫存區):分兩步:先用 git reset 撤銷 git add 操作(此時更改仍留在工作區),再執行 git checkout -- 文件名 清除工作區的改動

修改后,文件放入暫存區,且文件再次修改:分三步:先用 git checkout -- 文件名 撤銷工作區的改動,再用 git reset 撤銷 git add 操作(此時更改仍留在工作區),最后執行 git checkout -- 文件名 清除工作區的改動

git checkout -- 文件名 命令可以撤銷文件在工作區的修改。

git reset 文件名 命令可以撤銷指定文件的 git add 操作,即這個文件在暫存區的修改。

git reset 命令可以撤銷之前的所有 git add 操作,即在暫存區的修改

回滾

git status命令可以讓我們時刻掌握倉庫當前的狀態

git diff 查看最近的修改

git diff HEAD -- readme.txt 查看工作區和版本庫里面最新版本的區別

git log 顯示從最近到最遠的提交日志

$ git log commit 5e75f785d57170a2685b8a8cc405cb11a9561bf4 #5e75f... commit id(版本號) Author: sunchenwei <sun.chenwei@puscene.com> Date: Fri Jun 7 19:11:23 2019 +0800gitcommit 9aa60b6f4db0bceda4849adc1331a4f4054923b5 Merge: 88008b4 2c79a39 Author: sunchenwei <sun.chenwei@puscene.com> Date: Sun Jun 2 23:14:04 2019 +0800Merge remote-tracking branch 'origin/gh-pages' into gh-pagescommit 88008b4cfd8c7c0751763b9be5d6694a7bda67a5 Author: sunchenwei <sun.chenwei@puscene.com> Date: Sun Jun 2 23:13:43 2019 +0800數據結構

git log --pretty=oneline 查看簡化歷史日志

$ git log --pretty=oneline 42c27bcd3e39c258d829102a23e935d7903d7767 git d3d480c09532f75da2d68561e187b8703280b8b2 git 5e75f785d57170a2685b8a8cc405cb11a9561bf4 git 9aa60b6f4db0bceda4849adc1331a4f4054923b5 Merge remote-tracking branch 'origin/gh-pages' into gh-pages 88008b4cfd8c7c0751763b9be5d6694a7bda67a5 數據結構 2c79a392720ddaaa1fef4baeb1fa391a3dd87180 Delete php.xml f2bd1c4fcd358dca858ab35702e9dc37cb7b7360 Delete deployment.xml 873817ccd4228cb3691a543ca95e420da350c5be Delete webServers.xml 4dc69c611a1656ccd9125af4c53aab0872275cf0 mysql f2e9626ba2c85434c422a2979c3c318a4ad207aa mysql ed1c403d34fb3f029c5870df2e73635823e2eb6c mysql 2d3d814faf09f0778a0b3175ce41373712b7d0bc mysql

每提交一個新版本,實際上Git就會把它們自動串成一條時間線。

回退版本

#HEAD表示當前版本 #上上一個版本就是HEAD^^git reset --hard HEAD^git reset --hard 【版本號】 # 回滾到指定版本

回退成功后,git log 查看日志會發現當前版本往前推的版本找不到日志了,但是只要提供未來版本的id就可以回到未來。

git reset --hard 42c27bc #42c27bc只需提供前幾個字符就可以找到了版本了

即使找不到id,也可以查看操作日志:

git reflog cindy:WindBlog zhaoyu$ git reflog 42c27bc HEAD@{0}: reset: moving to 42c27bcd3e39c258d829102a23e935d7903d7767 d3d480c HEAD@{1}: reset: moving to HEAD^ 42c27bc HEAD@{2}: reset: moving to 42c27bcd3e39c258d829102a23e935d7903d7767 d3d480c HEAD@{3}: reset: moving to HEAD^ 42c27bc HEAD@{4}: commit: git d3d480c HEAD@{5}: commit: git 5e75f78 HEAD@{6}: commit: git

圖示流程

┌────┐ │HEAD│ └────┘│└──> ○ 42c27bcd3e39c258d829102a23e935d7903d7767│○ d3d480c09532f75da2d68561e187b8703280b8b2│○ 5e75f785d57170a2685b8a8cc405cb11a9561bf4改為指向 d3d480c:┌────┐ │HEAD│ └────┘││ ○ 42c27bcd3e39c258d829102a23e935d7903d7767│ │└──> ○ d3d480c09532f75da2d68561e187b8703280b8b2│○ 5e75f785d57170a2685b8a8cc405cb11a9561bf4

遠程倉庫

git push origin master

有用的貼士

內建的圖形化 git:
gitk

彩色的 git 輸出:
git config color.ui true

顯示歷史記錄時,只顯示一行注釋信息:
git config format.pretty oneline

交互地添加文件至緩存區:
git add -i

GIT vs SVN

  • git 是分布式,svn 是集中式;
    Git跟Svn一樣有自己的集中式版本庫和Server端,但Git更傾向于分布式開發,因為每一個開發人員的電腦上都有一個Local Repository,所以即使沒有網絡也一樣可以Commit,
    查看歷史版本記錄,創建項 目分支等操作,等網絡再次連接上Push到Server端。svn沒有網絡無法操作,每個人的版本都是提交到服務器,服務器壞了就雪崩。
  • Git把內容按元數據方式存儲,而SVN是按文件:因為,.git目錄是處于你的機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標簽,分支,版本記錄等。.git目錄的體積大小跟.svn比較,你會發現它們差距很大。
  • Git的內容的完整性要優于SVN: GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。
  • 提交代碼,查看日志,推送具有閃電般的速度

git提交是個本地操作,相對svn閃電一般。

本地包含了完整的日志,無需網絡

git向遠程服務器推送提交內容相比svn更快

  • 合并對提交過程的保留
    git:合并操作保留原有的提交過程(即保留了合并來源的作者、提交次數、分離提交的內容)。

    svn:合并操作把來源多個提交合并成了一個合并提交,即在提交歷史中Crash了自然的提交過程。

轉載于:https://www.cnblogs.com/followyou/p/11011361.html

總結

以上是生活随笔為你收集整理的git简易指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。