初識Git-一些常用的Git指令

今天的項目用到了Git,先是要求我們clone遠程倉庫的工程,然後自己在本地進行修改之後,再提交回遠程倉庫。
首先貼上Git的工作流程圖:
Git流程圖
1)clone 項目
在我們想要保存項目的路徑下,打開Git bash,輸入clone指令,
基本語法是: git clone dest_url, 示例如下:

git clone https://rdc.hand-china.com/gitlab/20685/Git-Test.git

操作完成後,提示如下,由於我 clone的是剛新建的新項目,所以提示我” cloned an empty repository.”
Git-clone
這個時候,再看我們的目標路徑,新生成了一個空的Git-Test 工程文件夾,並且有一個隱藏的.git文件夾,作爲Git的本地倉庫
Git-clone-new file
注:當我們進行首次clone時,若不是clone的公開項目,則會提示我們輸入賬號和密碼(若clone失敗,可以嘗試先在本地目標文件夾中初始化本地倉庫,語法: git init)

2)向本地倉庫中添加文件
當完成 clone 後,需要先向本地倉庫中添加一下文件,添加完成後才能進行分支的創建,否則會報 fatal: Not a valid object name: ‘master’錯誤,因爲剛創建的git倉庫需要在第一次commit之後纔會真正建立
語法格式:git add fileName.xx (常用 git add . 表示將所有文件添加至倉庫中) , 示例如下
git add .
添加所有文件至本地倉庫
添加文件完成後,最好加上本地更新的描述
語法格式:git commit -m”add describe” , 示例如下
git commit -m”Init Local Warehouse After Clone”
添加更新描述
從圖中的信息可以看出,我在master分支中創建了 兩個 readme文件
注:因爲我測試用的遠程倉庫之創建了一個空文件夾,而git在識別文件時會過濾掉所有的空文件夾,所有我在本地新增了兩個readme文件

3)創建本地分支
當我們第一次從遠程倉庫clone下項目並完成初始化後,往往需要在自己的開發環境中創建本地分支進行開發。並且在本地分支進行的開發工作並不會影響到主分支和其它分支的開發進程。
語法格式:git branch branchName,(當不輸入分支名時,爲查看所有分支信息)示例如下
git branch test
創建本地分支
從圖中可以看出,我新建的兩個分支,不過目前仍停留在master分支上(master)

4)切換到本地分支進行開發
完成分支創建後,默認不切換到新創建的分支中,需要進行手動的分支切換,否則仍是在原分支中進行開發
語法格式:git checkout branchName,示例如下
git checkout test
切換到新建分支
從圖中可以看出來,此時已經在test分支上了(test),現在所做的所有開發都對主分支沒有影響
擴展:git checkout -b branchName 創建分支並切換到新建分支中(若存在同名分支,則會創建失敗),示例如下
git checkout -b test1
git checkout -B branchName 創建分支並切換到新建分支中(若存在同名分支,不會創建失敗,將會覆蓋同名分支),示例如下
git checkout -B test2
創建並切換到新分支的兩種方式
從圖中可以看出,採用 -b 的方式第二次創建 test2分支時失敗了,提示已經存在了“test2”分支,採用 -B 的方式創建 test2分支成功,並提示已重置test2分支

5)合併分支
當某一分支的功能需求開發完成之後,可以將該分支合併至主分支中(合併分支將其它分支合併到當前分支中,若要合併到主分支中需提前切換到主分支)
語法格式:git merge branchName 示例如下
git merge test
合併分支
我在test分支中創建了一個 test.txt 文件,add 和 commit 之後,就只能在 test 分支中才能查看到 test.txt 文件,當我切換到master分支完成合並之後,才能在master分支中查看到 text.txt 文件
注:在分支合併的過程中,很容易就出分支衝突的問題(在不同分支中修改了同名文件,且修改的部分有重合),
兩種方式:1)對發生衝突的文件進行手動修改,修改完成後將修改後的文件進行 add 和 commit,即可完成衝突的解決
2)放棄合併,使用 git merge –abort 命令,拋棄合併,並重建合併前的狀態,
但是,當合並前若存在未 commit 的文件,那麼在合併中被修改的未 commit 的文件將難以被重建
建議:在分支合併 git merge 前,如果仍存在大量未被 commit 的 文件, 可使用 git -stash 將未 commit 的文件暫存,
若合併過程中發生衝突,解決衝突後使用 git stash pop 可以將未commit的文件還原

6)刪除分支
對於重複創建,或者已經完成了開發任務的分支可以選擇對齊進行刪除
語法格式:git branch -d branchName , 示例如下
git branch -d test
刪除分支
注意:需要刪除已經commit 但是未 合併的分支時,需要用 git branch -D branchName 進行刪除
對於,誤刪除的分支,可以先使用 git log -g 找回之前提交的 commit,
再使用 git branch recover_branch_newBranch commitId 進行回退 示例如下
git log -g
git branch revoery_test 796c1e7eb812beb88d58f7f34135e6bf06470ca7
git checkout revoery_test
恢復誤刪分支
可以看到恢復的分支裏仍然有被刪除前的文件信息

7)向遠程倉庫進行拉取和提交
當你完成了本地功能的開發,或者取得了進展之後,可以向遠程倉庫進行提交
提交前需要進行pull,將其他人對遠程倉庫的修改更新至本地,示例如下
語法格式:git pull <遠程主機名> <遠程分支名>:<本地分支名>
eg:git pull origin master:master
表示將遠程的master分支拉回至本地,並於本地的master分支進行合併

完成pull後,即可進行push
語法格式:git push <遠程主機名> <本地分支名>:<遠程分支名>
eg: git push origin master : master
注:當省略遠程分支名時,會將本地分支推送至遠程同名分支上,若遠程同名分支不存在則會被創建
當省略遠程分支和本地分支時,表示將當前分支推送到遠程對應分支上,
(第一次推送會提示使用 git push –set-upstream origin branchName 建立遠程與本地的追蹤關係)
git push origin –delete branchName 表示刪除遠程的指定分支

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章