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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Git 单机版

發布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git 单机版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


簡介:

Git 是一款開源的分布式版本控制系統,是當今最流行、先進的版本控制軟件,沒有之一。
Git 是一個分布式的版本控制系統,相反 SVN 就是一個集中式的版本控制系統了。SVN 每修改完一個文件要提交到服務端進行保存,而 Git 在本地有一個完整的版本庫。

一、安裝 Git

1、Linux( CentOS )

shell > yum -y install git

## 沒錯,已經安裝完成了

2、Windows( WIN7 )

下載地址:https://github-windows.s3.amazonaws.com/GitHubSetup.exe > 雙擊圖標,選擇 install( 會自動下載程序包 ) > 選擇 skip ,如果你有 github 用戶,也可以登陸哦 > 點擊左上角的 "+" ,添加自己的版本庫,輸入版本庫名、選擇版本庫路徑,最后點擊創建 > 然后就可以添加文件到版本庫了,可以使用 Git Shell 命令行操作喲

二、Git( CentOS )

1、創建版本庫

shell > git config --global user.name "wang" shell > git config --global user.email "wang@163.com" shell > git config --global color.ui true

## 第一、二條是設置自己的用戶名、郵件地址,分布式版本控制系統嘛,用來證明你是你。由于是全局配置,本地所有的版本庫都是這個名,也可以單獨為某個版本庫設置( 這是必須設置的 )
## 第三條是智能顏色顯示,輸出的結果有顏色區分,看著方便、顯著高大上,對就是這個意思

shell > mkdir -p /git/gitdb ; cd /git/gitdb shell > git init Initialized empty Git repository in /git/gitdb/.git/ shell > ls .git/ branches config description HEAD hooks info objects refs

## 使用 git init 初始化版本庫( 在哪個目錄下執行,哪個目錄就是版本庫目錄 )
## 這樣就創建好了一個 gitdb 的版本庫了,版本庫的相關文件全保存在隱藏目錄 .git 下,一般不要手動去修改里面的東西,否則會把版本庫玩壞

2、向版本庫中添加文件

## 關于 Git 的操作,沒有特殊說明情況下,操作目錄都是 /git/gitdb/ 這里

shell > head -5 /etc/passwd | tee passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

## 把 /etc/passwd 文件中的前 5 行數據重定向到了 /git/gitdb/passwd 文件中,內容如上

shell > git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # passwd nothing added to commit but untracked files present (use "git add" to track)

## 這時通過 git status 指令可以看到,工作區有一個名為 passwd 的文件,還沒有提交( 提交前要使用 git add <file> 指令將文件添加到暫存區 )
## 工作區:版本庫目錄即為工作區( 在版本庫目錄中創建一個文件,就是在工作區創建一個文件 )
## 暫存區:使用 git add 指令時,實際上就是把文件從工作區添加到暫存區的過程
## 分支:創建版本庫時,git 會自動創建一個 master 分支,使用 git commit 指令時,實際上就是把暫存區的所有文件提交到 master 分支
## 所以這三者之間的關系是:工作區-->暫存區-->分支
## git add 可以多次添加、也可以一次添加多個文件到暫存區,git commit 會一次性把暫存區的所有修改提交到分支

shell > git add passwd shell > git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: passwd #

## 添加完成后,發現暫存區有一個名為 passwd 的文件還沒有提交( 可以使用 git rm --cached <file> 指令將暫存區的文件刪除,注意:不是工作區的文件 )

shell > git rm --cached passwd rm 'passwd'

## 刪除后,你會發現:工作區的 passwd 文件還在,當使用 git status 指令時,狀態又變回了沒有 git add 時的狀態

shell > git add passwd shell > git commit passwd -m "one" git commit -m "one" [master (root-commit) 7af25e2] one 1 files changed, 5 insertions(+), 0 deletions(-) create mode 100644 passwd

## 提交時,-m 參數用來做個標記,你可以標注一些有意思的東西,例如你做了什么修改之類的...

shell > git status # On branch master nothing to commit (working directory clean)

## 這時使用 git status 指令發現工作區已經沒有東西了( 提交完成 )

3、恢復到上個版本或某個版本

shell > sed -i 's/nologin/login/g' passwd shell > git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: passwd # no changes added to commit (use "git add" and/or "git commit -a")

## 由于把文件中 nologin 字段修改成了 login ,git status 發現 passwd 文件被修改了,但是還沒有更新( git checkout -- <file> 待會說 )

shell > git diff HEAD -- passwd diff --git a/passwd b/passwd index 03dab68..96635c1 100644 --- a/passwd +++ b/passwd @@ -1,5 +1,5 @@ root:x:0:0:root:/root:/bin/bash -bin:x:1:1:bin:/bin:/sbin/nologin -daemon:x:2:2:daemon:/sbin:/sbin/nologin -adm:x:3:4:adm:/var/adm:/sbin/nologin -lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin +bin:x:1:1:bin:/bin:/sbin/login +daemon:x:2:2:daemon:/sbin:/sbin/login +adm:x:3:4:adm:/var/adm:/sbin/login +lp:x:4:7:lp:/var/spool/lpd:/sbin/login

## 可以使用 git diff 指令查看工作區跟版本庫( 分支 )的文件( 改動 )差異( HEAD 代表分支中( 版本庫 )當前版本,即最新版本 )

shell > git add passwd shell > git commit -m "two" [master 6fd5803] two 1 files changed, 4 insertions(+), 4 deletions(-) shell > git status # On branch master nothing to commit (working directory clean)

## 將修改后的文件提交到了版本庫中,搞了個標記叫 two ,呃,代表第二次提交
## 提交完成后,工作區就沒有東西了

shell > sed -i 's/bash/python/' passwd shell > git add passwd shell > git commit -m "three" [master 4cba143] three 1 files changed, 1 insertions(+), 1 deletions(-) shell > git status # On branch master nothing to commit (working directory clean) shell > git diff HEAD -- passwd

## 第三次提交完成,使用 git diff 指令發現版本庫中最新版本跟工作區文件完全相同

shell > git log git log commit 4cba14306c482080f442043b33f1dd640352a3f9 Author: wang <wang@163.com> Date: Tue Jul 21 19:51:30 2015 +0200threecommit 6fd5803a3fc2d3039ceaf6fc0b9c4fb8f0dfc67a Author: wang <wang@163.com> Date: Tue Jul 21 19:43:17 2015 +0200twocommit 7af25e23a89ba16e5ff14a8da305542bc9cc6062 Author: wang <wang@163.com> Date: Tue Jul 21 18:54:41 2015 +0200one

## 通過 git log 指令可以清楚的看到總共有三次提交,標記為 one 、two 、three ,現在想回到上次版本( two )怎么辦 ?

shell > git reset --hard HEAD^ HEAD is now at 6fd5803 two shell > cat passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/login daemon:x:2:2:daemon:/sbin:/sbin/login adm:x:3:4:adm:/var/adm:/sbin/login lp:x:4:7:lp:/var/spool/lpd:/sbin/login

## 使用 git reset 指令,HEAD^ 代表上個版本,HEAD^^ 代表上兩個版本,現在已經回到了 two 版本了( three 版本的 bash 變為 python 已經又恢復成 bash 了 )

shell > git log commit 6fd5803a3fc2d3039ceaf6fc0b9c4fb8f0dfc67a Author: wang <wang@163.com> Date: Tue Jul 21 19:43:17 2015 +0200twocommit 7af25e23a89ba16e5ff14a8da305542bc9cc6062 Author: wang <wang@163.com> Date: Tue Jul 21 18:54:41 2015 +0200one

## 現在就剩兩個版本了,最上面 two 為最新版本,即當前版本
## 恢復到某個版本,假設有好多好多個版本,使用 HEAD^^^^ 或 HEAD~[number] 的方式就很不方便了( 都要數 )
## 既然 HEAD 代表版本號,那么恢復時直接輸入版本號不就可以了?非常方便,git log 指令輸出的 commit 字段( 7af25e23a89ba16e5ff14a8da305542bc9cc6062 )就是版本號

shell > git reset --hard 7af25e2 HEAD is now at 7af25e2 one shell > cat passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

## 使用 git reset 指令時,只需輸出版本號的前幾位即可,可以看到已經恢復到了第一版,文件內容也變回了最初的狀態

shell > git log commit 7af25e23a89ba16e5ff14a8da305542bc9cc6062 Author: wang <wang@163.com> Date: Tue Jul 21 18:54:41 2015 +0200one

## 這時使用 git log 指令發現只有第一次提交的版本了,那么現在想回到 two 或 three 版本該怎么辦?( 版本號沒有了 )

shell > git reflog 7af25e2 HEAD@{0}: 7af25e2: updating HEAD 6fd5803 HEAD@{1}: HEAD^: updating HEAD 4cba143 HEAD@{2}: commit: three 6fd5803 HEAD@{3}: commit: two shell > git reset --hard 4cba143 HEAD is now at 4cba143 three

## 使用 git reflog 指令可以看到操作記錄,第一列就是我們想要的版本號,再次使用 git reset 指令恢復即可

shell > cat passwd root:x:0:0:root:/root:/bin/python bin:x:1:1:bin:/bin:/sbin/login daemon:x:2:2:daemon:/sbin:/sbin/login adm:x:3:4:adm:/var/adm:/sbin/login lp:x:4:7:lp:/var/spool/lpd:/sbin/login shell > git log commit 4cba14306c482080f442043b33f1dd640352a3f9 Author: wang <wang@163.com> Date: Tue Jul 21 19:51:30 2015 +0200threecommit 6fd5803a3fc2d3039ceaf6fc0b9c4fb8f0dfc67a Author: wang <wang@163.com> Date: Tue Jul 21 19:43:17 2015 +0200twocommit 7af25e23a89ba16e5ff14a8da305542bc9cc6062 Author: wang <wang@163.com> Date: Tue Jul 21 18:54:41 2015 +0200one

## 文件內容、版本信息都回來了,現在的版本恢復到了 three 狀態

4、git checkout -- <file> :還記得這個不 ?

shell > sed -i '1d' passwd shell > git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: passwd # no changes added to commit (use "git add" and/or "git commit -a")

## 當修改了工作區文件內容后,使用 git status 指令可以看到這樣的提示( git checkout -- <file> 可以撤銷工作區文件的修改 )

shell > cat passwd bin:x:1:1:bin:/bin:/sbin/login daemon:x:2:2:daemon:/sbin:/sbin/login adm:x:3:4:adm:/var/adm:/sbin/login lp:x:4:7:lp:/var/spool/lpd:/sbin/loginshell > git checkout -- passwd

## 使用 git checkout 指令撤銷工作區文件的改動( 恢復到跟版本庫一樣的狀態,就是剛才所有的修改全部被撤回 )

shell > sed -i '1d' passwd shell > git add passwd shell > sed -i '1d' passwd shell > git status shell > git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: passwd # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: passwd #

## 現在是一個什么情況呢 ?首先刪除了文件第一行,執行了 git add 指令( 文件的修改被添加到了暫存區 ),接著又刪除了一次,那么現在執行 git checkout 指令文件被恢復成什么樣 ?

shell > git checkout -- passwd

## 實踐證明:文件被恢復到了暫存區的狀態,也就是刪除一次的狀態

shell > git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: passwd #

## 這是暫存區的狀態,怎么恢復暫存區的狀態,也就是把第一次的刪除也撤銷( 注意:這已經 git add 了 )

shell > git reset HEAD passwd Unstaged changes after reset: M passwd

## 還記得 git reset 這個指令不,沒錯用來恢復文件到上個版本的,也可以用來將暫存區的改動回退到工作區

shell > git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: passwd # no changes added to commit (use "git add" and/or "git commit -a")

## 再次查看狀態,提示工作區有改動,可以使用 git checkout -- <file> 將工作區的改動也撤銷

## git reset 將文件回退到上一次版本 / 將暫存區的改動回退到工作區
## git checkout 將工作區的改動撤銷 / 將工作區的改動回退到暫存區

5、刪除文件

shell > git rm passwd rm 'passwd' shell > git commit -m "delete passwd" [master 3be8d7a] delete passwd 1 files changed, 0 insertions(+), 5 deletions(-) delete mode 100644 passwd

## 使用 git rm 指令將版本庫中的文件刪除,然后提交刪除( 文件就被刪除了,版本庫目錄下也沒有了 )

shell > git log commit 3be8d7a3ade6f8947135843832bb6cfa075638a4 Author: wang <wang@163.com> Date: Wed Jul 22 13:18:23 2015 +0200delete passwdcommit 4cba14306c482080f442043b33f1dd640352a3f9 Author: wang <wang@163.com> Date: Tue Jul 21 19:51:30 2015 +0200threecommit 6fd5803a3fc2d3039ceaf6fc0b9c4fb8f0dfc67a Author: wang <wang@163.com> Date: Tue Jul 21 19:43:17 2015 +0200twocommit 7af25e23a89ba16e5ff14a8da305542bc9cc6062 Author: wang <wang@163.com> Date: Tue Jul 21 18:54:41 2015 +0200oneshell > git reset --hard 4cba14 HEAD is now at 4cba143 three

## ... 好不容易刪除了,結果又給恢復了 ^_^ ,不要高興太早,如果修改完文件,沒有提交就刪除了文件,那么剛才的修改就真的丟失了..

shell > rm -rf passwd shell > git reset --hard 4cba14 HEAD is now at 4cba143 three

## 是不是再也不用擔心誤刪除文件了 ^_^ ( 單機情況下你別物理磁盤爆炸了,那就真的啥也沒有了 )
## 參考教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

轉載于:https://www.cnblogs.com/wangxiaoqiangs/p/5336347.html

總結

以上是生活随笔為你收集整理的Git 单机版的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产伦精品一区二区三区高清版禁 | 一区二区三区四区在线 | www.youjizz.com在线| 极品色影视 | 中文字幕在线播放一区二区 | 色一区二区三区 | 91免费视| 国产第一页av | 特黄1级潘金莲 | 日本久久久网站 | 国产香蕉视频在线 | 久久久资源网 | 国产精品视频无码 | 天天色影综合网 | 欧美日韩高清一区二区 国产亚洲免费看 | 欧美丝袜一区二区三区 | 女人16一毛片 | 久久人人爽爽 | 色偷偷资源网 | 日本黄色免费在线观看 | 久久国产美女视频 | 美女校花脱精光 | 快播在线视频 | 91久久精品国产 | 日韩久久中文字幕 | 91影院在线免费观看 | 国产成人精品久久二区二区91 | 国产初高中真实精品视频 | 国产日韩精品在线观看 | 日日做夜夜爽毛片麻豆 | 啪视频网站 | 一区二区三区人妻 | 国产一区精品视频 | 久久伊人婷婷 | 国产男女猛烈无遮挡免费视频 | 国产一区二区黑人欧美xxxx | 日韩av在线一区二区三区 | 国产黄页 | 欧美日韩中文国产 | 一级美女黄色片 | ww久久 | 亚洲综合精品国产一区二区三区 | 欧美三级三级三级爽爽爽 | 男人午夜免费视频 | 制服丝袜一区二区三区 | 亚洲色图 一区二区 | 成人高清网站 | 人妻 日韩精品 中文字幕 | 四虎影视最新网址 | 免费视频爱爱太爽 | 黄色www网站 | 亚洲综合色在线观看 | 国产乱真实合集 | 美女的奶胸大爽爽大片 | 精品国产乱码久久久人妻 | www.4hu95.com四虎| 亚洲激情在线播放 | 国产麻豆天美果冻无码视频 | 香蕉视频免费在线 | 午夜精品久久久久久久99热黄桃 | 欧美日韩福利视频 | 日韩一区二区三区免费 | 麻豆传媒在线免费 | 日本成人片在线 | 欧美永久视频 | 少妇无内裤下蹲露大唇视频 | 操操操网 | 国产欧美专区 | 亚洲一区 | 新婚之夜玷污岳丰满少妇在线观看 | 欧美性猛交xxxx乱 | 好吊妞视频在线 | 欧美黄色小说 | 日本伊人久久 | 久久99国产精品久久99 | 麻豆蜜桃在线观看 | 91丨porny丨中文 | 蜜桃成熟时李丽珍国语 | 国偷自拍第113页 | 国产午夜精品理论片 | 丝袜老师办公室里做好紧好爽 | 色香蕉影院 | 添女人荫蒂视频 | 亚洲AV无码精品黑人黑人 | 锦绣未央在线观看 | 成人黄色小视频在线观看 | 日日摸日日碰夜夜爽无码 | av自拍网 | 国产精品久线在线观看 | 精品国产专区 | 性生交大片免费看3p | 人妻体内射精一区二区 | 久久精品在线观看 | 中文字幕久久一区 | 久久久久久网址 | 夜夜操夜夜爽 | 亚洲经典一区二区三区四区 | 午夜免费福利在线观看 | 亚洲欧美精品一区二区 |