Git命令提交項目代碼

Git客戶端安裝

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

GitHub是一個面向開源及私有軟件項目的託管平臺,由於只支持Git 做爲惟一的版本庫格式進行託管因此咱們須要下載一個Git客戶端軟件,用來執行各類指令git

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

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

`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.   
  8. These are common Git commands used in various situations:  

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

版本存儲倉庫:url

[html]  view plain  copy
 
  1. 公共:  
  2.     - github   
  3.     - 碼雲  
  4. 本身搭建:  
  5.     - gitlab   

Git命

接下來我用`git`命令,來一步步實現GitHub發佈項目,版本控制的功能
spa

一、首先在電腦上建立一個空文件夾,我爲這個空文件夾起名叫demo,而後進入該文件夾首先在GIT終端執行,`git init` 指令,會在demo文件夾生成`.git`文件夾.net

二、在demo文件夾內建立一個a.txt文件,而後經過`git status` 查看,該指令做用是 列出修改過的(綠色標識)、新建立的(紅色標識)、已經暫存但未提交的文件(白色標識)
命令行

三、而後經過`git add 某文件(git add . 添加所有)`添加剛纔咱們新建的a.txt文件

四、而後經過`git commit -m "備註信息"`,提交本次內容

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



 

五、咱們利用上述指令,在往demo文件夾中添加一個b.txt文件,而後經過`git log`查看咱們的操做記錄,而後能夠查詢到咱們添加a.txt和b.txt的log日誌,而後經過`git reset --hard b96f962d0f835e3114b6f51bf7c9bfe6125626e3`,去回退到咱們的操做節點,此時我回退到第一次添加文件節點,也就是demo文件夾只有一個a.txt文件,如下是git端的效果截圖


 

六、此時查看`git log` 結果發現只有一條操做記錄,也就是咱們添加的a.txt的記錄,咱們以前進行的第二步操做呢?也就是添加的b.txt文件節點時,咱們如何回退到最後這個節點呢?咱們能夠利用`git reflog`


七、此刻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      編號,刪除指定編號的記錄  

 

此次會有衝突,咱們須要解決衝突,便可

 

八、咱們能夠經過`git branch` 查看咱們的項目全部分支,默認只有一個`master`主分支,咱們能夠經過`git branch dev`(dev是咱們起的分支名)新建一個分支,名字是dev開發分支,而後經過`git checkout dev`切換到咱們新建的dev分支,咱們也能夠經過`git checkout -b 分支名`一併實現建立、切換分支的功能

九、咱們切換到`dev`分支,經過`touch 文件名`建立一個文件,而後add、commit ,意思就是在dev分支上作一些修改,並保存在dev分支上,而後在切回master分支,咱們要作的就是將dev上更新的內容,也在master上作一樣的修改,咱們能夠用`git merge` 分支名,將dev上的更新內容,合併到master上另外刪除分支使用`git branch -d 分支名`

十、利用`github`建立項目,會出現以下指令,須要在git終端輸入建立生成項目,要添加一個新的遠程倉庫,能夠指定一個簡單的名字,以便未來引用,運行 git remote add [shortname] [url]:

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



 

十一、接下來咱們經過`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

 

十二、咱們還能夠往`github`項目上添加新分支,咱們經過`git branch 分支`建立分支,經過`git checkout 分支`切換分支,(或者經過`git checkout -b 分支`,建立並切換分支),而後在添加、提交(我這裏沒有添加任何信息),最後`git push origin dev` 往github項目上添加新分支

 

1三、咱們還能夠拉取其餘分支的內容到本分支,好比我在`master`上添加內容,而後我在`dev`分支上去拉取`master`上的代碼,而後在提交到對應的github分支`dev`上(我本地依然沒有添加額外的內容)

 

1四、衝突如何產生?咱們如何解決衝突?當本身拉取了`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對應的分枝上


 

 

########################如下是項目中的截圖########################

一、首先進入項目的主分支

二、Fork一份工程,當作本身的項目管理分支

三、在電腦上建立一個文件夾,先Clone一份本身工程的項目分支(xxx屏蔽公司信息)

git clone git@xxxx.gitlab.com:xxxxxx/SELand_Vertu

四、進入項目的二級目錄進入git客戶端,確認要pull分支

      git branch看看當前的分支

      git checkout -b develop  切換到develop分支,由於我要pull拉去develop分支上的項目

五、而後在將本身的項目分支同步項目主分支(咱們項目分支爲develop分支)

git pull git@xxx.gitlab.com:xxx/SELand_Vertu develop

六、每次提交代碼時候,須要先同步項目主分支代碼

git status是哪些文件有所修改

git diff 能夠查詢所修改的代碼

git add -A 增長本身所作的修改

git commit -a 提交全部修改的代碼

git push origin develop 提交代碼

 

七、最後在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'.

能夠這樣修改

一、git pull git@xxx.gitlab.com:xxx/SELand_Vertu develop先同步一下會出現以上的錯誤

二、pull會使用git merge致使衝突,須要將衝突的文件resolve掉 git add -u,

三、在項目中看看哪些代碼是對方改的,哪些代碼是本身修改的,在合併成一份最新的代碼

四、git commit以後才能成功

相關文章
相關標籤/搜索