1. 程式人生 > >Git命令提交專案程式碼

Git命令提交專案程式碼

Git客戶端安裝

今天就結合`GitHub`,通過`Git`命令,來了解如何實現開原始碼庫以及版本控制

GitHub是一個面向開源及私有軟體專案的託管平臺,因為只支援Git 作為唯一的版本庫格式進行託管所以我們需要下載一個Git客戶端軟體,用來執行各種指令

下載完畢後,配置`path`環境變數,`E:\develop\git\Git\bin`(我本機的在E盤下)

`doc`命令列視窗輸入`git`命令,如果出現如下的資訊,說明安裝成功,

C:\Users\67334>git
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

These are common Git commands used in various situations:

點選滑鼠右鍵,選單欄會出現 `Git GUI``Git Bash`GUI: Graphical User Interface(使用者圖形介面)Bash:是Windows下的命令列工具

版本儲存倉庫:

公共:
	- github 
	- 碼雲
自己搭建:
	- gitlab 

Git命

接下來我用`git`命令,來一步步實現GitHub釋出專案,版本控制的功能

1、首先在電腦上建立一個空資料夾,我為這個空資料夾起名叫demo,然後進入該資料夾首先在GIT終端執行,`git init` 指令,會在demo資料夾生成`.git`資料夾

2、在demo資料夾內建立一個a.txt檔案,然後通過`git status`

檢視,該指令作用是 列出修改過的(綠色標識)、新建立的(紅色標識)、已經暫存但未提交的檔案(白色標識)

3、然後通過`git add 某檔案(git add . 新增全部)`新增剛才我們新建的a.txt檔案

4、然後通過`git commit -m "備註資訊"`,提交本次內容

以上4步的操作效果截圖如下:



5、我們利用上述指令,在往demo資料夾中新增一個b.txt檔案,然後通過`git log`檢視我們的操作記錄,然後可以查詢到我們新增a.txt和b.txt的log日誌,然後通過`git reset --hard b96f962d0f835e3114b6f51bf7c9bfe6125626e3`

,去回退到我們的操作節點,此時我回退到第一次新增檔案節點,也就是demo資料夾只有一個a.txt檔案,以下是git端的效果截圖


6、此時檢視`git log` 結果發現只有一條操作記錄,也就是我們新增的a.txt的記錄,我們之前進行的第二步操作呢?也就是新增的b.txt檔案節點時,我們如何回退到最後這個節點呢?我們可以利用`git reflog`


7、此刻demo資料夾中的2個檔案內容,a.txt文字如下:

初始化內容

b.txt文字內容如下:

這是b文字內容

我們繼續為b.txt新增如下記錄資訊

我們臨時為b新增記錄

此刻b.txt檔案內容如下:

這是b文字內容
我們臨時為b新增記錄

上述意思就是在更新`b.txt`檔案內容,新增操作記錄如果用到開發場景,我們在**需求1**,然而由於工作需要,**需求1**需要暫且擱置,我們需要做**需求2****需求1**程式碼需要砍掉,等我們做完**需求2**,我們繼續需要獲取我們之前**需求1**的程式碼,我們可以利用`git stash`命令,以下是該命令的含義

git stash             將當前工作區所有修改過的內容儲存到“某個地方”,將工作區還原到當前版本未修改過的狀態
				git stash list        檢視“某個地方”儲存的所有記錄
				git stash clear     清空“某個地方”
				git stash pop       將第一個記錄從“某個地方”重新拿到工作區(可能有衝突)
				git stash apply     編號, 將指定編號記錄從“某個地方”重新拿到工作區(可能有衝突) 
				git stash drop      編號,刪除指定編號的記錄

這次會有衝突,我們需要解決衝突,即可

8、我們可以通過`git branch` 檢視我們的專案所有分支,預設只有一個`master`主分支,我們可以通過`git branch dev`(dev是我們起的分支名)新建一個分支,名字是dev開發分支,然後通過`git checkout dev`切換到我們新建的dev分支,我們也可以通過`git checkout -b 分支名`一併實現建立、切換分支的功能

9、我們切換到`dev`分支,通過`touch 檔名`建立一個檔案,然後add、commit ,意思就是在dev分支上做一些修改,並儲存在dev分支上,然後在切回master分支,我們要做的就是將dev上更新的內容,也在master上做同樣的修改,我們可以用`git merge` 分支名,將dev上的更新內容,合併到master上另外刪除分支使用`git branch -d 分支名`

10、利用`github`建立專案,會出現如下指令,需要在git終端輸入建立生成專案,要新增一個新的遠端倉庫,可以指定一個簡單的名字,以便將來引用,執行 git remote add [shortname] [url]:

通過`git remote add origin 和https://github.com/iyongfei/test.git`



11、接下來我們通過`git clone https://github.com/iyongfei/test.git``clone`下載我們的`github`專案,我們預設拉取的是`master`分支(預設分支可以在**github**設定其他分支)

然後根據以前的git指令,進行`git add .``git commit -m "備註資訊"`

注意注意,由於專案開發都是協同開發,我們在接下來在提交程式碼之前,需要`git pull origin 分支`,拉取對應分支程式碼,然後如果有衝突解決衝突,然後在`git push origin 分支名`

ps:我如下的截圖在提交程式碼時,為了簡化操作,沒有`git pull`


12、我們還可以往`github`專案上新增新分支,我們通過`git branch 分支`建立分支,通過`git checkout 分支`切換分支,(或者通過`git checkout -b 分支`,建立並切換分支),然後在新增、提交(我這裡沒有新增任何資訊),最後`git push origin dev` 往github專案上新增新分支

13、我們還可以拉取其他分支的內容到本分支,比如我在`master`上新增內容,然後我在`dev`分支上去拉取`master`上的程式碼,然後在提交到對應的github分支`dev`上(我本地依然沒有新增額外的內容)

14、衝突如何產生?我們如何解決衝突?當自己拉取了`dev`的程式碼,同事也拉取了`dev`的程式碼,同事先於我提交程式碼,然後自己也在本地修改了程式碼,如果修改了同一個檔案,會出現衝突情況,再次拉取`dev`程式碼會失敗,而且提交失敗


解決方式一:先在自己本地`dev`,通過`git stash`暫存修改,然後`git pull 分支`程式碼,再然後`git stash pop` 合併代,解決衝突(刪掉我們不需要的程式碼),然後在提交程式碼

<<<<<<< Updated upstream
aa為各個
bb額外分
=======
aac
bbd
>>>>>>> Stashed changes

解決方式二:不利用`git stash`,利用`compare`對比軟體,將有衝突的檔案,剪切出來,然後拉取`dev`分支程式碼,就把github的`dev`分支最新程式碼,同步下來,然後在跟自己的剪切出來的程式碼段,進行對比,將自己的程式碼更新到同步下來的程式碼,然後在提交到github對應的分枝上


########################以下是專案中的截圖########################

1、首先進入專案的主分支

2、Fork一份工程,當做自己的專案管理分支



3、在電腦上建立一個資料夾,先Clone一份自己工程的專案分支(xxx遮蔽公司資訊)

git clone [email protected]:xxxxxx/SELand_Vertu

4、進入專案的二級目錄進入git客戶端,確認要pull分支

      git branch看看當前的分支

      git checkout -b develop  切換到develop分支,因為我要pull拉去develop分支上的專案

5、然後在將自己的專案分支同步專案主分支(我們專案分支為develop分支)

git pull [email protected]:xxx/SELand_Vertu develop

6、每次提交程式碼時候,需要先同步專案主分支程式碼

git status是哪些檔案有所修改

git diff 可以查詢所修改的程式碼

git add -A 增加自己所做的修改

git commit -a 提交所有修改的程式碼

git push origin develop 提交程式碼


7、最後在new merge request,提交給相應的負責人,進行merge程式碼


錯誤解決::::

如果某個同事提交程式碼,老大沒有及時merge程式碼,自己也提交該檔案的程式碼,那麼老大mer