一提澎、本地配置git,注冊并將項目代碼提交到GitHub
GitHub是代碼托管平臺念链,也是基于git的開源分布式版本控制系統(tǒng)盼忌。然而,當(dāng)你登陸github官網(wǎng)時掂墓,它并沒有為你準備一個很好的代碼上傳的系統(tǒng)谦纱,這是因為它是基于git的分布式版本管理系。那么君编,如何更快更有效的將本地代碼上傳到github呢跨嘉?首先,我們需要在本地安裝git吃嘿,這樣才能在本地環(huán)境中使用git命令行祠乃,其次是要連接到你的GitHub賬戶上,這樣才能把你的代碼文件上傳上去兑燥,而每一次的更改都會形成一個版本記錄亮瓷,這樣對團隊協(xié)作是很有幫助的。
1.安裝git
下載并在本地安裝
2.配置git
設(shè)置自己的賬戶信息降瞳,windows下任意位置右鍵菜單在出現(xiàn)的菜單中選擇git bash打開git命令行嘱支,使用如下命令設(shè)置信息,配置自己的用戶名和用戶郵箱:
git config --global user.name mwkang
git config --global user.email mwkang@foxmial.com
3.創(chuàng)建本地ssh
這是一種傳輸代碼的方法挣饥,速度快又安全除师。SSH 是目前較可靠,專為遠程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議扔枫。在終端或cmd輸入以下命令行馍盟,選擇ssh-key生成路徑和密碼均默認直接回車跳過:
ssh-keygen -t rsa -C "mwkang@foxmial.com"
4.將ssh配置到GitHub中
windows系統(tǒng)C:\Users\自己電腦用戶名.ssh 路徑下,用記事本打開id_rsa.pub茧吊,將里面的全部代碼復(fù)制到github的新建SSH中,然后檢驗是否配置成功八毯,復(fù)制如下代碼:
ssh -T git@github.com
到終端搓侄,驗證時輸入YES,然后出現(xiàn)如下信息:
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
Hi hawx1993! You've successfully authenticated, but GitHub does not provide shell access.
當(dāng)出現(xiàn)以上信息時话速,說明配置成功讶踪,可以連接上GitHub
5.創(chuàng)建本地版本庫
在本地創(chuàng)建一個版本庫
$ mkdir test
#test是你的文件夾的名字
$ cd test
#進入test所在目錄
$ pwd
#pwd命令用于顯示當(dāng)前目錄
通過git init命令把這個目錄變成Git可以管理的倉庫
$ git init
在github上創(chuàng)建一個你自己的new repository
mkdir test
cd test
git init #initialize your git repository
touch README #create a file named README
git add README #add README to cache
git commit -m 'first commit' #commit your files to local repository
將本地的文件傳送至github中
git remote add origin https://github.com/yourname/test.git
git push -u origin master
</br>
二、配置Maven并新建一個項目上傳到GitHub
Maven項目對象模型(POM)泊交,可以通過一小段描述信息來管理項目的構(gòu)建乳讥,報告和文檔的軟件項目管理工具柱查。
Maven 除了以程序構(gòu)建能力為特色之外,還提供高級項目管理工具云石。由于 Maven 的缺省構(gòu)建規(guī)則有較高的可重用性唉工,所以常常用兩三行 Maven 構(gòu)建腳本就可以構(gòu)建簡單的項目。由于 Maven 的面向項目的方法汹忠,許多 Apache Jakarta 項目發(fā)文時使用 Maven淋硝,而且公司項目采用 Maven 的比例在持續(xù)增長。
1.配置java環(huán)境變量
maven的運行需要java運行環(huán)境宽菜,所以需要確保已安裝JDK谣膳,并將 “JAVA_HOME” 變量加入到 Windows 環(huán)境變量。
運行如下代碼查看java版本铅乡,若如圖所示继谚,則java已在本地配置好
java -version
2.本地配置maven
Maven官方網(wǎng)站下載Maven 的 zip 文件,例如: apache-maven-3.3.9-bin.zip阵幸,將它解壓到你要安裝 Maven 的文件夾
3.配置maven環(huán)境變量
運行如下代碼查看maven版本花履,若如圖所示,則maven在本地配置好
mvn -v
4.安裝并在IDEA中配置Maven
安裝IDEA侨嘀,并在其中修改maven home路徑臭挽,其下兩個路徑為maven本地倉庫設(shè)置和路徑,默認即可咬腕。
5.新建Maven項目并提交到GitHub
(新建項目過程在文檔02中展開)
三欢峰、附:pull&push&git常用命令
1.pull
- 如需獲取他人庫中的代碼,先 fork 別人的倉庫涨共,相當(dāng)于拷貝一份
- 在自己的機器上 git clone 這個倉庫纽帖,切換分支(也可以在 master 下),進行代碼修改
git clone https://github.com/beepony/bootstrap.git
cd bootstrap~ git checkout -b test-pr
git add . && git commit -m "test-pr"
git push origin test-pr
- 完成修改之后举反,回到 test-pr 分支懊直,發(fā)起 pull request 給原倉庫,讓對方看到你修改的 bug
- 原倉庫 review 這個 bug火鼻,如果是正確的話室囊,就會 merge 到他自己的項目中
2.push
- 進入到要push的代碼的目錄文件夾,打開bash
- 初始化魁索,系統(tǒng)會在本地代碼庫會自動創(chuàng)建一個.git隱藏文件融撞,這個就是本地代碼庫
git init
- 加載文件,"." 是把文件夾里面的所有文件都加載進來
git add .
也可以單個加載
git add index.html,test.html
- 提交文件粗蔚,創(chuàng)建時間點尝偎,創(chuàng)建之后可以隨時回到這個時間點,-m "這里的文件是注釋"
git commit -m "init commi
可以隨時查看git的狀態(tài)
git status
- 可以看到有2個文件被修改了,9615個插入致扯,沒有文件刪除
**3.git常用命令
- 新建代碼庫
# 在當(dāng)前目錄新建一個Git代碼庫
$ git init
# 新建一個目錄肤寝,將其初始化為Git代碼庫
$ git init [dir-name]
# 下載一個項目和它的整個代碼歷史
$ git clone [url]
- Git配置
# 顯示當(dāng)前的Git配置
$ git config --list
# 編輯Git配置文件
$ git config -e [--global]
# 設(shè)置提交代碼時的用戶信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
- 為Git增加/刪除文件
# 添加指定文件到暫存區(qū)
$ git add [file1] [file2] ...
# 添加指定目錄到暫存區(qū),包括子目錄
$ git add [dir]
# 添加當(dāng)前目錄的所有文件到暫存區(qū)
$ git add .
# 添加每個變化前抖僵,都會要求確認
# 對于同一個文件的多處變化鲤看,可以實現(xiàn)分次提交
$ git add -p
# 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
$ git rm [file1] [file2] ...
# 停止追蹤指定文件裆针,但該文件會保留在工作區(qū)
$ git rm --cached [file]
# 改名文件刨摩,并且將這個改名放入暫存區(qū)
$ git mv [file-original] [file-renamed]
- 將代碼提交到Git
# 提交暫存區(qū)到倉庫區(qū)
$ git commit -m [message]
# 提交暫存區(qū)的指定文件到倉庫區(qū)
$ git commit [file1] [file2] ... -m [message]
# 提交工作區(qū)自上次commit之后的變化畏线,直接到倉庫區(qū)
$ git commit -a
# 提交時顯示所有diff信息
$ git commit -v
# 使用一次新的commit账月,替代上一次提交
# 如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息
$ git commit --amend -m [message]
# 重做上一次commit挪挤,并包括指定文件的新變化
$ git commit --amend [file1] [file2] ...
- Git的分支
# 列出所有本地分支
$ git branch
# 列出所有遠程分支
$ git branch -r
# 列出所有本地分支和遠程分支
$ git branch -a
# 新建一個分支耘婚,但依然停留在當(dāng)前分支
$ git branch [branch-name]
# 新建一個分支罢浇,并切換到該分支
$ git checkout -b [branch]
# 新建一個分支,指向指定commit
$ git branch [branch] [commit]
# 新建一個分支沐祷,與指定的遠程分支建立追蹤關(guān)系
$ git branch --track [branch] [remote-branch]
# 切換到指定分支嚷闭,并更新工作區(qū)
$ git checkout [branch-name]
# 切換到上一個分支
$ git checkout -
# 建立追蹤關(guān)系,在現(xiàn)有分支與指定的遠程分支之間
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到當(dāng)前分支
$ git merge [branch]
# 選擇一個commit赖临,合并進當(dāng)前分支
$ git cherry-pick [commit]
# 刪除分支
$ git branch -d [branch-name]
# 刪除遠程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
- Git的標簽
# 列出所有tag
$ git tag
# 新建一個tag在當(dāng)前commit
$ git tag [tag]
# 新建一個tag在指定commit
$ git tag [tag] [commit]
# 刪除本地tag
$ git tag -d [tag]
# 刪除遠程tag
$ git push origin :refs/tags/[tagName]
- 查看信息
# 顯示有變更的文件
$ git status
# 顯示當(dāng)前分支的版本歷史
$ git log
# 顯示commit歷史胞锰,以及每次commit發(fā)生變更的文件
$ git log --stat
# 搜索提交歷史,根據(jù)關(guān)鍵詞
$ git log -S [keyword]
# 顯示某個commit之后的所有變動兢榨,每個commit占據(jù)一行
$ git log [tag] HEAD --pretty=format:%s
# 顯示某個commit之后的所有變動嗅榕,其"提交說明"必須符合搜索條件
$ git log [tag] HEAD --grep feature
# 顯示某個文件的版本歷史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]
# 顯示指定文件相關(guān)的每一次diff
$ git log -p [file]
# 顯示過去5次提交
$ git log -5 --pretty --oneline
# 顯示所有提交過的用戶吵聪,按提交次數(shù)排序
$ git shortlog -sn
# 顯示指定文件是什么人在什么時間修改過
$ git blame [file]
# 顯示暫存區(qū)和工作區(qū)的差異
$ git diff
# 顯示兩次提交之間的差異
$ git diff [first-branch]...[second-branch]
# 顯示今天你寫了多少行代碼
$ git diff --shortstat "@{0 day ago}"
# 顯示某次提交的元數(shù)據(jù)和內(nèi)容變化
$ git show [commit]
# 顯示某次提交發(fā)生變化的文件
$ git show --name-only [commit]
# 顯示某次提交時凌那,某個文件的內(nèi)容
$ git show [commit]:[filename]
# 顯示當(dāng)前分支的最近幾次提交
$ git reflog
- Git遠程同步
# 下載遠程倉庫的所有變動
$ git fetch [remote]
# 顯示所有遠程倉庫
$ git remote -v
# 顯示某個遠程倉庫的信息
$ git remote show [remote]
# 增加一個新的遠程倉庫,并命名
$ git remote add [shortname] [url]
# 取回遠程倉庫的變化吟逝,并與本地分支合并
$ git pull [remote] [branch]
# 上傳本地指定分支到遠程倉庫
$ git push [remote] [branch]
# 強行推送當(dāng)前分支到遠程倉庫帽蝶,即使有沖突
$ git push [remote] --force
# 推送所有分支到遠程倉庫
$ git push [remote] --all
- 撤銷與其他
# 恢復(fù)暫存區(qū)的指定文件到工作區(qū)
$ git checkout [file]
# 恢復(fù)某個commit的指定文件到暫存區(qū)和工作區(qū)
$ git checkout [commit] [file]
# 恢復(fù)暫存區(qū)的所有文件到工作區(qū)
$ git checkout .
# 重置暫存區(qū)的指定文件,與上一次commit保持一致块攒,但工作區(qū)不變
$ git reset [file]
# 重置暫存區(qū)與工作區(qū)励稳,與上一次commit保持一致
$ git reset --hard
# 重置當(dāng)前分支的指針為指定commit,同時重置暫存區(qū)囱井,但工作區(qū)不變
$ git reset [commit]
# 重置當(dāng)前分支的HEAD為指定commit麦锯,同時重置暫存區(qū)和工作區(qū),與指定commit一致
$ git reset --hard [commit]
# 重置當(dāng)前HEAD為指定commit琅绅,但保持暫存區(qū)和工作區(qū)不變
$ git reset --keep [commit]
# 新建一個commit,用來撤銷指定commit# 后者的所有變化都將被前者抵消鹅巍,并且應(yīng)用到當(dāng)前分支
$ git revert [commit]
# 暫時將未提交的變化移除千扶,稍后再移入
$ git stash$ git stash pop
# 生成一個可供發(fā)布的壓縮包
$ git archive