Git命令提交項目代碼
Git客戶端安裝
今天就結合`GitHub`,通過`Git`命令,來了解如何實現開源代碼庫以及版本控制
GitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持Git 作為唯一的版本庫格式進行托管所以我們需要下載一個Git客戶端軟件,用來執行各種指令
Git下載地址https://git-scm.com/
下載完畢後,配置`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下的命令行工具
版本存儲倉庫:
[html] view plain copy- 公共:
- - 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文本內容如下:
[html] view plain copy- 這是b文本內容
我們繼續為b.txt添加如下記錄信息
[html] view plain copy- 我們臨時為b添加記錄
此刻b.txt文件內容如下:
[html] view plain copy- 這是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` 合並代,解決沖突(刪掉我們不需要的代碼),然後在提交代碼
[html] view plain copy- <<<<<<< 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代碼,自己也提交該文件的代碼,那麽老大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命令提交項目代碼