git 小乌龟 更新分支_git常用操作
生活随笔
收集整理的這篇文章主要介紹了
git 小乌龟 更新分支_git常用操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Git 是一個開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項目。
Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。
Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務(wù)器端軟件支持。
入門
使用Git前,需要先建立一個倉庫(repository)。您可以使用一個已經(jīng)存在的目錄作為Git倉庫或創(chuàng)建一個空目錄。 使用您當(dāng)前目錄作為Git倉庫,我們只需使它初始化。git init 使用我們指定目錄作為Git倉庫。git init newrepo 從現(xiàn)在開始,我們將假設(shè)您在Git倉庫根目錄下,除非另有說明。添加新文件
我們有一個倉庫,但什么也沒有,可以使用add命令添加文件。git add filename 可以使用add... 繼續(xù)添加任務(wù)文件。提交版本
現(xiàn)在我們已經(jīng)添加了這些文件,我們希望它們能夠真正被保存在Git倉庫。為此,我們將它們提交到倉庫。git commit -m "Adding files" 如果您不使用-m,會出現(xiàn)編輯器來讓你寫自己的注釋信息。 當(dāng)我們修改了很多文件,而不想每一個都add,想commit自動來提交本地修改,我們可以使用-a標(biāo)識。git commit -a -m "Changed some files" git commit 命令的-a選項可將所有被修改或者已刪除的且已經(jīng)被git管理的文檔提交到倉庫中。 千萬注意,-a不會造成新文件被提交,只能修改。發(fā)布版本
我們先從服務(wù)器克隆一個庫并上傳。 git clone ssh://example.com/~/www/project.git現(xiàn)在我們修改之后可以進(jìn)行推送到服務(wù)器。 git push ssh://example.com/~/www/project.git取回更新
如果您已經(jīng)按上面的進(jìn)行push,下面命令表示,當(dāng)前分支自動與唯一一個追蹤分支進(jìn)行合并。 git pull從非默認(rèn)位置更新到指定的url。 git pull http://git.example.com/project.git刪除
如何你想從資源庫中刪除文件,我們使用rm。 git rm file分支與合并
分支在本地完成,速度快。要創(chuàng)建一個新的分支,我們使用branch命令。 git branch testbranch命令不會將我們帶入分支,只是創(chuàng)建一個新分支。所以我們使用checkout命令來更改分支。 git checkout test第一個分支,或主分支,被稱為"master"。 git checkout master對其他分支的更改不會反映在主分支上。如果想將更改提交到主分支,則需切換回master分支,然后使用合并。 git checkout master git merge test如果您想刪除分支,我們使用-d標(biāo)識。 git branch -d testGit 的工作流程
一般工作流程如下: 1、克隆 Git 資源作為工作目錄。 2、在克隆的資源上添加或修改文件。 3、如果其他人修改了,你可以更新資源。 4、在提交前查看修改。 5、提交修改。 在修改完成后,如果發(fā)現(xiàn)錯誤,可以撤回提交并再次修改并提交。Git 工作區(qū)、暫存區(qū)和版本庫概念
工作區(qū):就是你在電腦里能看到的目錄。 暫存區(qū):英文叫stage, 或index。一般存放在 ".git目錄下" 下的index文件(.git/index)中,所以我們把暫存區(qū)有時也叫作索引(index)。 版本庫:工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫。下面這個圖展示了工作區(qū)、版本庫中的暫存區(qū)和版本庫之間的關(guān)系:
圖中左側(cè)為工作區(qū),右側(cè)為版本庫。在版本庫中標(biāo)記為 "index" 的區(qū)域是暫存區(qū)(stage, index),標(biāo)記為 "master" 的是 master 分支所代表的目錄樹。1、初始化一個git倉庫
git init //該命令執(zhí)行完后在當(dāng)前目錄生成一個.git目錄 git init newrepo //指定目錄作為git倉庫,在newrepo目錄下出現(xiàn)一個名為.git的目錄 git add *.c git add README git commit -m"初始化項目版本” //將目錄下以.c結(jié)尾及README文件提交到倉庫中2、克隆倉庫
git clone //克隆倉庫 git clone <repo> <directory> //克隆到指定目錄 git clone git://github.com/schacon/grit.git //克隆ruby語言的git代碼倉庫grit git clone git://github.com/schacon/grit.git mygrit //新建項目目錄3、獲取與創(chuàng)建項目命令
git initmkdir runoob //創(chuàng)建runoob項目 cd runoob/ git init //在 /www/runoob/.git/ 目錄初始化空 Git 倉庫完畢 ls -a git clonegit clone git@github.com:schacon/simplegit.git //克隆github上的項目 cd simplest/ //在當(dāng)前目錄下生成一個simplegit目錄 ls ls -a cd .git4、基本快照
git add touch README //添加文件README touch hello.php //添加文件hello.php ls git status -s //查看項目的當(dāng)前狀態(tài) git add README hello.php //添加文件 git status //查看上次提交之后是否有修改git diff執(zhí)行 git diff 來查看執(zhí)行 git status 的結(jié)果的詳細(xì)信息. git diff 命令顯示已寫入緩存與已修改但尚未寫入緩存的改動的區(qū)別。git diff 有兩個主要的應(yīng)用場景. 尚未緩存的改動:git diff 查看已緩存的改動: git diff --cached 查看已緩存的與未緩存的所有改動:git diff HEAD 顯示摘要而非整個 diff:git diff --stat git add hello.php git status -s git diff —cached git commit 使用 git add 命令將想要快照的內(nèi)容寫入緩存區(qū), 而執(zhí)行 git commit 將緩存區(qū)內(nèi)容添加到倉庫中。 Git 為你的每一個提交都記錄你的名字與電子郵箱地址,所以第一步需要配置用戶名和郵箱地址。 git config --global user.name ‘runoob’ //名字 git config —-global user.email test@runoob.com //電子郵箱 git add hello.php git status -s git commit -m"第一次版本提交” Git status git rmgit rm hello.php //刪除文件 ls git mvgit add README git mv README README.md //重命名 ls5、git分支管理
git branch //創(chuàng)建分支 git checkout //切換分支 git merge //合并分支 mkdir gitdemo cd gitdemo/ git init touch README git add README git commit -m"第一次版本提交” git branch //列出分支 ls git add . git commit -m”add test.txt” ls git checkout testing ls git checkout master ls git checkout -b newest git rm test.txt ls touch hello.php git add . git commit -am"remove test.txt add runoob.php” git checkout mastergit branch git branch -d testing //刪除分支 git branch git merge newest //合并分支 git checkout -b change_site //創(chuàng)建change_site分支 git commit -am”change the runoob.php" git checkout master cat runoob.php vim runoob.php cat runoob.php git merge change_site cat runoob.php vim runoob.php cat runoob.php git diff git status -s git add runoob.php git status -s git commit6、git查看提交歷史
git log //列出歷史提交記錄7、git標(biāo)簽
git tag -a v1.0 //給最新一次提交打上(HEAD)"v1.0"的標(biāo)簽。-a 選項意為"創(chuàng)建一個帶注解的標(biāo)簽” git tag git tag -a <tagname> -m"runoob.com標(biāo)簽" 創(chuàng)建分支命令: git branch (branchname) 切換分支命令: git checkout (branchname) 合并分支命令: git merge你可以多次合并到統(tǒng)一分支, 也可以選擇在合并之后直接刪除被并入的分支。開始前我們先創(chuàng)建一個測試目錄:$ mkdir gitdemo $ cd gitdemo/ $ git init Initialized empty Git repository... $ touch README $ git add README $ git commit -m '第一次版本提交' [master (root-commit) 3b58100] 第一次版本提交 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 READMEGit 分支管理
列出分支
列出分支基本命令: git branch 沒有參數(shù)時,git branch 會列出你在本地的分支。 $ git branch * master 此例的意思就是,我們有一個叫做 master 的分支,并且該分支是當(dāng)前分支。 當(dāng)你執(zhí)行 git init 的時候,缺省情況下 Git 就會為你創(chuàng)建 master 分支。 如果我們要手動創(chuàng)建一個分支。執(zhí)行 git branch (branchname) 即可。$ git branch testing $ git branch * master testing現(xiàn)在我們可以看到,有了一個新分支 testing。 當(dāng)你以此方式在上次提交更新之后創(chuàng)建了新分支,如果后來又有更新提交, 然后又切換到了 testing 分支,Git 將還原你的工作目錄到你創(chuàng)建分支時候的樣子。 接下來我們將演示如何切換分支,我們用 git checkout (branch) 切換到我們要修改的分支。 $ ls README $ echo 'runoob.com' > test.txt $ git add . $ git commit -m 'add test.txt' [master 3e92c19] add test.txt 1 file changed, 1 insertion(+) create mode 100644 test.txt $ ls README test.txt $ git checkout testing Switched to branch 'testing' $ ls README 當(dāng)我們切換到 testing 分支的時候,我們添加的新文件 test.txt 被移除了。切換回 master 分支的時候,它們有重新出現(xiàn)了。 $ git checkout master Switched to branch 'master' $ ls README test.txt 我們也可以使用 git checkout -b (branchname) 命令來創(chuàng)建新分支并立即切換到該分支下,從而在該分支中操作。 $ git checkout -b newtest Switched to a new branch 'newtest' $ git rm test.txt rm 'test.txt' $ ls README $ touch hello.php $ git add . $ git commit -am 'removed test.txt、add runoob.php' [newtest c1501a2] removed test.txt、add runoob.php 2 files changed, 1 deletion(-) create mode 100644 runoob.php delete mode 100644 test.txt $ ls README runoob.php $ git checkout master Switched to branch 'master' $ ls README test.txt 如你所見,我們創(chuàng)建了一個分支,在該分支的上移除了一些文件 test.txt,并添加了 runoob.php 文件,然后切換回我們的主分支,刪除的 test.txt 文件又回來了,且新增加的 runoob.php 不存在主分支中。 使用分支將工作切分開來,從而讓我們能夠在不同開發(fā)環(huán)境中做事,并來回切換。刪除分支
刪除分支命令: git branch -d (branchname) 例如我們要刪除 testing 分支: $ git branch * master testing$ git branch -d testing Deleted branch testing (was 85fc7e7). $ git branch * master分支合并
一旦某分支有了獨立內(nèi)容,你終究會希望將它合并回到你的主分支。 你可以使用以下命令將任何分支合并到當(dāng)前分支中去: git merge $ git branch * master newtest $ ls README test.txt $ git merge newtest Updating 3e92c19..c1501a2 Fast-forward runoob.php | 0 test.txt | 1 - 2 files changed, 1 deletion(-) create mode 100644 runoob.php delete mode 100644 test.txt $ ls README runoob.php 以上實例中我們將 newtest 分支合并到主分支去,test.txt 文件被刪除。 合并完后就可以刪除分支: $ git branch -d newtest Deleted branch newtest (was c1501a2). 刪除后, 就只剩下 master 分支了: $ git branch * master合并沖突
合并并不僅僅是簡單的文件添加、移除的操作,Git 也會合并修改。 $ git branch * master $ cat runoob.php 首先,我們創(chuàng)建一個叫做 change_site 的分支,切換過去,我們將 runoob.php 內(nèi)容改為: <?php echo 'runoob'; ?> 創(chuàng)建 change_site 分支: $ git checkout -b change_site Switched to a new branch 'change_site' $ vim runoob.php $ head -3 runoob.php <?php echo 'runoob'; ?> $ git commit -am 'changed the runoob.php' [change_site 7774248] changed the runoob.php 1 file changed, 3 insertions(+) 將修改的內(nèi)容提交到 change_site 分支中。 現(xiàn)在,假如切換回 master 分支我們可以看內(nèi)容恢復(fù)到我們修改前的(空文件,沒有代碼),我們再次修改 runoob.php 文件。 $ git checkout master Switched to branch 'master' $ cat runoob.php $ vim runoob.php # 修改內(nèi)容如下 $ cat runoob.php <?php echo 1; ?> $ git diff diff --git a/runoob.php b/runoob.php index e69de29..ac60739 100644 --- a/runoob.php +++ b/runoob.php @@ -0,0 +1,3 @@ +<?php +echo 1; +?> $ git commit -am '修改代碼' [master c68142b] 修改代碼 1 file changed, 3 insertions(+) 現(xiàn)在這些改變已經(jīng)記錄到我的 "master" 分支了。接下來我們將 "change_site" 分支合并過來。 $ git merge change_site Auto-merging runoob.php CONFLICT (content): Merge conflict in runoob.php Automatic merge failed; fix conflicts and then commit the result. $ cat runoob.php # 代開文件,看到?jīng)_突內(nèi)容 <?php <<<<<<< HEAD echo 1; ======= echo 'runoob'; >>>>>>> change_site ?> 我們將前一個分支合并到 master 分支,一個合并沖突就出現(xiàn)了,接下來我們需要手動去修改它。 $ vim runoob.php $ cat runoob.php <?php echo 1; echo 'runoob'; ?> $ git diff diff --cc runoob.php index ac60739,b63d7d7..0000000 --- a/runoob.php +++ b/runoob.php @@@ -1,3 -1,3 +1,4 @@@ <?php +echo 1; + echo 'runoob'; ?> 在 Git 中,我們可以用 git add 要告訴 Git 文件沖突已經(jīng)解決 $ git status -s UU runoob.php $ git add runoob.php $ git status -s M runoob.php $ git commit [master 88afe0e] Merge branch 'change_site' 現(xiàn)在我們成功解決了合并中的沖突,并提交了結(jié)果。總結(jié)
以上是生活随笔為你收集整理的git 小乌龟 更新分支_git常用操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python把浮点数转换成16进制_Py
- 下一篇: python全系列之爬虫scrapy_p