亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

git進行版本控制心得詳談

 更新時間:2017年12月10日 08:07:48   作者:戰(zhàn)爭熱誠  
這篇文章主要介紹了git進行版本控制的心得和經(jīng)驗,給并大家總結(jié)了作者的技巧,需要的朋友們參考一下吧。

小編在學習可視化的時候,接觸到git,所以這里寫一下關(guān)于GitHub的有關(guān)知識,寫這個的目的還是鞏固自己的學習,一方面可以提高自己,另一方面回頭看一下,有什么更深層次的東西還可以再記錄。

首先說一下版本控制軟件,它可以讓我們能夠拍攝處于可行狀態(tài)的項目的快照,修改項目(如實現(xiàn)新功能)后,如果項目不能正常運行,可以恢復到前一個可行狀態(tài)。

通過使用版本控制,我們可以無憂無慮的改進項目,不用擔心項目因為我們犯錯而遭到破壞,對于大型項目來說,這顯得尤為重要,但是對于小項目來說,哪怕只包含一個文件的程序,也大有裨益。

GibHub的名字源于Git,Git是一個分布式版本控制系統(tǒng),讓程序員團隊能夠協(xié)作開發(fā)項目,Git幫助大家管理為項目所做的工作,避免一個人所做的修改影響其他人所做的修改。你在項目中實現(xiàn)一個新功能的時候,Git將跟蹤你對每個文件所做的修改。確定代碼可行后,你將提交所做的修改,而Git將記錄項目最新的狀態(tài),如果你犯了錯,想撤銷所做的修改,可輕松的返回以前的任何可行狀態(tài)。GitHub上的項目都存儲在倉庫中,后者包含與項目相關(guān)聯(lián)的一切:代碼,項目參與者的信息,問題和bug報告等

下面講一下安裝Git(小編是windows系統(tǒng),就只演示windows系統(tǒng)的安裝)

 第一步:下載(https://git-for-windows.github.io/),下載好如下圖

第二步:安裝過程,此處省略,要想安裝可以點擊下面鏈接

Git安裝和使用圖文教程(分享)

第三步:配置

Git跟蹤誰修改了項目,哪怕參與項目開發(fā)的只有一個人。為此,Git需要知道你的用戶名和電子郵件。你必須提供用戶名,但可以使用虛構(gòu)的電子郵件地址:

git config --global user.name "Username"
git config --global user.email "Username@example.com"

 

因為Git是分布式版本控制系統(tǒng),所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

注意git config命令的--global參數(shù),用了這個參數(shù),表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。

第四步:創(chuàng)建項目

我們來創(chuàng)建一個要進行版本控制的項目(又稱版本庫)。在你的系統(tǒng)創(chuàng)建一個文件夾,并將其命名為learngit。

我創(chuàng)建learngit的程序如下:

mkdir learngit #創(chuàng)建文件learngit
cd learngit #進入learngit文件里面
pwd #顯示learngit的存在目錄

我創(chuàng)建了一個hello.world.py程序,如下:

print("hello world")

第五步:忽略文件

忽略擴展名為.pyc的文件,它是根據(jù).py文件自動生成啊,我們無需讓Git去跟蹤。這些文件存儲在目錄__pycache__中,未來讓git忽略它,我們創(chuàng)建一個名為.gitignore的特殊文件,(這個文件是以局點打頭,沒有擴展名,并且讓在其中添加下面一行內(nèi)容)

_pycache_/

 

第六步:初始化倉庫

我們創(chuàng)建了一個文件,并通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init
Initialized empty Git repository in C:/Users/learngit/.git/

瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發(fā)現(xiàn)當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。要是刪除這個東西,則丟棄項目的所有記錄。

如果你沒有看到.git目錄,那是因為這個目錄默認是隱藏的,用ls -ah命令就可以看見。

也不一定必須在空目錄下創(chuàng)建Git倉庫,選擇一個已經(jīng)有東西的目錄也是可以的。不過,不建議你使用自己正在開發(fā)的公司項目來學習Git,否則造成的一切后果概不負責。

第七步:檢查狀態(tài)

在執(zhí)行其他操作之前,先來看一下狀態(tài):

$ git status
On branch master

No commits yet

Untracked files:
(use "git add <file>..." to include in what will be committed)

hello_world.py

nothing added to commit but untracked files present (use "git add" to track)

在Git中,分支是項目的一個版本,從這里的輸出我們可以知道,我么位于分支的,master

我們每次查看項目的狀態(tài)時候,輸出的都是我們位于分支master上,接下里的輸出表明,我們將進行初始項目的日叫,提交是項目在特定時間的快照。

Git指出了項目中未被跟蹤的文件,因為我們還沒有告訴他要跟蹤那些文件,接下里我們被告知沒有任何東西添加到當前提交里面,但我們可能需要將為跟蹤的文件加入倉庫

第八步:將文件加入到倉庫

$ git add .

。。。@▒▒▒▒▒ĵ▒▒▒ MINGW64 ~/learngit (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: hello_world.py

命令  git add .   將項目中未被跟蹤的文件都加入到倉庫中,它不提交這些文件,而只是讓git開始關(guān)注他們?,F(xiàn)在我們檢查這個項目的狀態(tài),發(fā)現(xiàn)Git找到了需要提交的文件的一些修改,標簽 new file  表示這些文件是新加入的。

第九步:執(zhí)行提交

$ git commit -m "Started project"
[master (root-commit) 5d6ceca] Started project
 1 file changed, 1 insertion(+)
 create mode 100644 hello_world.py

我們在執(zhí)行   git commit -m "Started project"    的時候以拍攝項目的快照。標志-m 讓Git接下里的消息(“Started project")記錄到項目中的歷史記錄中,輸出表明我們在分支master 上,而且有一個文件被修改了

簡單解釋一下git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。

第十步:查看提交歷史

$ git log
commit 5d6cecad80427924b94b14c6fd2bb82a4fa86840 (HEAD -> master)
Author: wangjian <1171737614.qq.com>
Date: Sat Dec 9 20:16:17 2017 +0800
Started project

我們每次提交的時候,Git都會生成一個包含40字符的獨一無二的引用ID,它記錄提交是誰執(zhí)行的,提交的時間以及提交的指定消息,并非在任何情況下你都需要所有的這些信息,因此Git提供一個選項,讓我們能夠打印提交歷史條目的更簡單的版本。

$ git log --pretty=oneline
5d6cecad80427924b94b14c6fd2bb82a4fa86840 (HEAD -> master) Started project

標志 --pretty=oneline   指定顯示一項最重要的信息,提交的引用ID以及為提交記錄的消息。

第十一步:第二次提交

為了顯示版本控制的強大,我們需要對項目進行修改,并提交所做的修改。為此,我們在文件hello.world.py中再添加一行代碼。

print("hello world")
print("hello git")

如果我們查看項目的狀態(tài),將發(fā)現(xiàn)Git注意到這個文件的變化

$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: hello_world.py
no changes added to commit (use "git add" and/or "git commit -a")

這個之處了我們當前所在的分支為master,其中做出修改的文件是hello_world.py,而且指出所做的修改還沒有提交。

接下來我們提交所做操作,并在查看操作。

這一步,我們執(zhí)行了提交,并且在執(zhí)行命令git commit 的時候指定了標志-am.標志-a 讓Git 將倉庫中所有修改了的文件都加入當前提交中,(如果我們兩次提交之間加入了新文件,我們執(zhí)行g(shù)et add . 操作,將新文件加入到倉庫中)標志-m讓Git咱提交歷史中記錄一條消息。

$ git commit -am "Extrended greeting."
[master b4ee15d] Extrended greeting.
 1 file changed, 2 insertions(+), 1 deletion(-)
$ git status
On branch master
nothing to commit, working tree clean
$ git log --pretty=oneline
b4ee15ddf5274f488db8c74c327065c6f331ec5e (HEAD -> master) Extrended greeting.
5d6cecad80427924b94b14c6fd2bb82a4fa86840 Started project

我們在查看項目的狀態(tài)的時候,發(fā)現(xiàn)工作目錄也是干凈的,最后我們發(fā)現(xiàn)提交歷史中包含兩個提交。

第十二步:撤銷修改

下面來看看如何放棄所做的修改,恢復到一個可行狀態(tài),為此,我們首先在hello_world.py中添加一行代碼

hello_world.py

print("hello world")
print("hello git")
print("the world is bad")

保存并運行這個文件

我們查看狀態(tài),發(fā)現(xiàn)Git注意到所做的修改

$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
 modified: hello_world.py

no changes added to commit (use "git add" and/or "git commit -a")

Git注意到我們修改了hello_world.py,我么可以提交所做的修改,但是我們不提交所做的修改,而要恢復到最后一個提交,為此我們不對hello_world.py執(zhí)行任何操作————不刪除剛添加的代碼行,也不使用文本編輯器的撤銷功能,而是在終端會話中執(zhí)行如下命令:

$ git checkout .

命令  git checkout .  能夠讓我們恢復到以前的任何提交。命令git checkout . 放棄最后一次提交所做的所有操作,將項目恢復到最后一次提交的狀態(tài)。

$ git status
On branch master
nothing to commit, working tree clean

就這個項目而言,我們恢復到前一個狀態(tài)微不足道,但是如果我們開發(fā)的是大型項目,其中數(shù)十個文件都被修改了,那么恢復到前一個狀態(tài),將撤銷來自最后一次提交的對這個文件所做的所有修改,這個功能很有用,比如:實現(xiàn)新功能,我們可以根據(jù)需要做任意數(shù)量的修改,如果這些修改都不行,可以撤銷他們,而不會對項目有任何傷害,你無需記住做了那些修改,因而不必手工撤銷所做的修改,Git會替我們完成所有的工作。

第十三步:檢查以前的提交

我們可以檢查提交歷史中的任何一次提交,而不僅僅是最后一次,為此我們可以在命令git check末尾指定該提交的引用ID的前6個字符(而不是局點)。通過檢查出以前的提交,我們可以對其進行審核么然后返回到最后一次提交,或者放棄最近所做的工作,并選擇以前的提交。

$ git log --pretty=oneline
b4ee15ddf5274f488db8c74c327065c6f331ec5e (HEAD -> master) Extrended greeting.
5d6cecad80427924b94b14c6fd2bb82a4fa86840 Started project
$ git checkout 5d6cec
Note: checking out '5d6cec'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 5d6ceca... Started project

檢查出以前的提交,我們將離開分支master,并進入Git所說的Git所說的分離頭指針(detached HEAD)狀態(tài),HEAD表示項目的當前狀態(tài),之所以說我們處于分離狀態(tài)是因為我們離開了一個命名分支(這里是master)

要回到分支master,可以檢查出它:

$ git checkout master
Previous HEAD position was 5d6ceca... Started project
Switched to branch 'master'

這就會讓你回到分支master 。除非i使用Git的高級功能,否則在提交以前的項目后,最好不要對項目做任何修改,然而,如果參與項目開發(fā)的人只有我們自己,而我自己又想放棄所有提交,并恢復到以前的狀態(tài),也可以將項目重置到以前的狀態(tài),為此,可在處于分支master上的任何情況下,執(zhí)行如下命令。

$ git status
On branch master
nothing to commit, working tree clean
$ git log --pretty=oneline
b4ee15ddf5274f488db8c74c327065c6f331ec5e (HEAD -> master) Extrended greeting.
5d6cecad80427924b94b14c6fd2bb82a4fa86840 Started project
$ git reset --hard 5d6cec
HEAD is now at 5d6ceca Started project
$ git status
On branch master
nothing to commit, working tree clean
$ git log --pretty=oneline
5d6cecad80427924b94b14c6fd2bb82a4fa86840 (HEAD -> master) Started project

首先,我們查看了狀態(tài),確認我們在分支master上,查看歷史提交時,我們看見了兩個提交。

然后,我們執(zhí)行了命令    git reset --hard    ,并在其指定了要永久性的恢復到的提交的引用ID的前6個字符。

接下來,我們在次查看狀態(tài),大仙,我們在分支master上,并且沒有需要任何修改,

最后,我們再次查看提交的歷史狀態(tài)時候,我們發(fā)現(xiàn)我們處于重新開始的提交中。

第十四步:刪除倉庫

有時候,倉庫的歷史紀錄被我們搞亂了,而我們又不知道如何恢復,這時候我們首先應該考慮百度一下,看看自己的問題出在那里,如果無法恢復,而且參與項目的人只有自己,可以繼續(xù)使用這些文件,但需要將這些項目的歷史紀錄刪除——刪除.git 這不會影響任何文件的當前狀態(tài),而只會刪除文件的所有提交,因此我們將無法檢查出項目的其他任何狀態(tài)。

為此,可以打開一個文件瀏覽器,并將目錄.git 刪除,也可以通過命令完成這個任務。但是這樣做過我們需要創(chuàng)建一個新的倉庫,以重新對這些修改進行跟蹤。

下面演示了如何在終端會話中完成這個過程。

$ git status
On branch master
nothing to commit, working tree clean
$ rm -rf .git
rm -rf .git 表示刪除目錄.git,刪除后我們將繼續(xù)查看狀態(tài)。
$ git status
fatal: Not a git repository (or any of the parent directories): .git

這個意思是被告知我們,這不是一個倉庫,(git用來跟蹤倉庫的信息都存儲愛文件夾.git中,因此刪除該文件夾也將會刪除整個倉庫)

接下來,我們用命令 git init 來創(chuàng)建一個新的倉庫,并查看狀態(tài)

$ git init
Initialized empty Git repository in C:/Users//learngit/.git/
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
hello_world.py
nothing added to commit but untracked files present (use "git add" to track)

從狀態(tài)中我們發(fā)現(xiàn),又回到了初始狀態(tài),等待第一次提交,我們下面將所有的文件都添加到倉庫中,并執(zhí)行第一次提交,最后檢查狀態(tài),如下:

$ git add .
$ git commit -m "Starting over"
[master (root-commit) 81350ab] Starting over
1 file changed, 1 insertion(+)
create mode 100644 hello_world.py
$ git status
On branch master
nothing to commit, working tree clean

從檢查狀態(tài)我們發(fā)現(xiàn),我們在分支master上,并且沒有任何未提交的修改。

這就是版本控制的基本操作,希望能多多聯(lián)系,這樣我們才能學會版本控制。

相關(guān)文章

  • Python使用matplotlib的pie函數(shù)繪制餅狀圖功能示例

    Python使用matplotlib的pie函數(shù)繪制餅狀圖功能示例

    這篇文章主要介紹了Python使用matplotlib的pie函數(shù)繪制餅狀圖功能,結(jié)合實例形式分析了Python使用matplotlib的pie函數(shù)進行餅狀圖繪制的具體操作技巧,注釋中對pie函數(shù)的用法進行了詳細的說明,便于理解,需要的朋友可以參考下
    2018-01-01
  • python將文本分每兩行一組并保存到文件

    python將文本分每兩行一組并保存到文件

    這篇文章主要介紹了python將文本分每兩行一組并保存到文件,需要的朋友可以參考下
    2018-03-03
  • Python requests timeout的設置

    Python requests timeout的設置

    這篇文章主要介紹了Python requests timeout的設置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • python 實現(xiàn)語音聊天機器人的示例代碼

    python 實現(xiàn)語音聊天機器人的示例代碼

    這篇文章主要介紹了python 實現(xiàn)語音聊天機器人的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Python?isdigit()函數(shù)使用詳解

    Python?isdigit()函數(shù)使用詳解

    這篇文章主要介紹了Python?isdigit()函數(shù)使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • python根據(jù)日期返回星期幾的方法

    python根據(jù)日期返回星期幾的方法

    這篇文章主要介紹了python根據(jù)日期返回星期幾的方法,涉及Python針對日期模塊的相關(guān)使用技巧,需要的朋友可以參考下
    2015-07-07
  • python+opencv實現(xiàn)車道線檢測

    python+opencv實現(xiàn)車道線檢測

    這篇文章主要為大家詳細介紹了python+opencv實現(xiàn)車道線檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Django URL參數(shù)Template反向解析

    Django URL參數(shù)Template反向解析

    這篇文章主要介紹了Django URL參數(shù)Template反向解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • pytorch LayerNorm參數(shù)的用法及計算過程

    pytorch LayerNorm參數(shù)的用法及計算過程

    這篇文章主要介紹了pytorch LayerNorm參數(shù)的用法及計算過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python如何調(diào)用百度識圖api

    python如何調(diào)用百度識圖api

    這篇文章主要介紹了python如何調(diào)用百度識圖api,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09

最新評論