1. 程式人生 > >Git命令提交項目代碼

Git命令提交項目代碼

pla 分享圖片 interface -m rac 版本庫 because 並保存 url

Git客戶端安裝

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

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

Git下載地址https://git-scm.com/

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

`doc`命令行窗口輸入`git`命令,如果出現如下的信息,說明安裝成功,

[html] view plain copy
  1. C:\Users\67334>git
  2. usage: git [--version] [--help] [-C <path>] [-c name=value]
  3. [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
  4. [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
  5. [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
  6. <command> [<args>]
  7. These are common Git commands used in various situations:

點擊鼠標右鍵,菜單欄會出現 `Git GUI` 和 `Git Bash`GUI: Graphical User Interface(用戶圖形界面)Bash:是Windows下的命令行工具

技術分享圖片

版本存儲倉庫:

[html] view plain copy
  1. 公共:
  2. - github
  3. - 碼雲
  4. 自己搭建:
  5. - 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文本如下:

[html] view plain copy
  1. 初始化內容

b.txt文本內容如下:

[html] view plain copy
  1. 這是b文本內容

我們繼續為b.txt添加如下記錄信息

[html] view plain copy
  1. 我們臨時為b添加記錄

此刻b.txt文件內容如下:

[html] view plain copy
  1. 這是b文本內容
  2. 我們臨時為b添加記錄

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

[html] view plain copy
  1. git stash 將當前工作區所有修改過的內容存儲到“某個地方”,將工作區還原到當前版本未修改過的狀態
  2. git stash list 查看“某個地方”存儲的所有記錄
  3. git stash clear 清空“某個地方”
  4. git stash pop 將第一個記錄從“某個地方”重新拿到工作區(可能有沖突)
  5. git stash apply 編號, 將指定編號記錄從“某個地方”重新拿到工作區(可能有沖突)
  6. 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` 合並代,解決沖突(刪掉我們不需要的代碼),然後在提交代碼

[html] view plain copy
  1. <<<<<<< Updated upstream
  2. aa為各個
  3. bb額外分
  4. =======
  5. aac
  6. bbd
  7. >>>>>>> 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代碼,自己也提交該文件的代碼,那麽老大merge代碼會有沖突

會差生如下的錯誤提示:

Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use ‘git add/rm <file>‘
as appropriate to mark resolution, or use ‘git commit -a‘.

可以這樣修改

1、git pull [email protected]:xxx/SELand_Vertu develop先同步一下會出現以上的錯誤

2、pull會使用git merge導致沖突,需要將沖突的文件resolve掉 git add -u,

3、在項目中看看哪些代碼是對方改的,哪些代碼是自己修改的,在合並成一份最新的代碼

4、git commit之後才能成功

Git命令提交項目代碼