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`
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