git常見命令:
創建初始化倉庫:
git 將文件提交到暫存區
git add 文件名
將文件提交到工作區
git commit -m "注釋(例如這是發行的版本1)" 文件名
查看狀態
如果暫存區沒有文件被提交顯示:
$ git status On branch master nothing to commit, working tree clean
如果暫存區有文件
$ git status On branch master Changes to be committed:(use "git restore --staged <file>..." to unstage)new file: ? Demo03.txt ?
git status
查看日志:
git log
出現的日志信息:
這個就是一時間為標準,由近到遠的記錄。
對于log他的展示方式和作用有很大的可操作性:
//歷史記錄過多是,會出現分屏的的效果 下一頁:空格 上一頁:b 最后一頁會顯示:end 退出:q
其他的日志展示方式:
-
git log
-
git log --pretty=oneline
-
git log --oneline
-
git log reflog
-
reset:前進或者是后退命令
git reset --hard ****** 就是直接返回指定版本 這個是工作區,暫存區,本地代碼倉庫都會變。hard是最常用的
-
演示效果:
-
使用命令返回到aaa階段:
-
mixed參數: 本地庫的指針移動的同時,重置暫存區,但是工作區不動
soft參數:
本地庫的指針移動的時候,暫存區,工作區都不動
刪除文件:
使用命令rm:
直接演示刪除的是test.txt文件:
之久就是將操作同步到暫存區和本地庫:
將刪除的文件開始恢復:
通過這個操作其實我們是可以發現我們的返回時返回的這個時間點,所以文件也是根據時間點截取的。
總結: git diff [文件名] ---》 將工作區中的文件和暫存區中文件進行比較
git diff --->比較工作區中和暫存區中 所有文件的差異
git diff 歷史版本 ---》比較暫存區和本地庫中內容
分支:
查看分支: git branch -v
創建分支:git branch branch1
切換分支:
git checkout branch1
合并分支并處理沖突:git merge chanch1
出現沖突,因為是在同一個文件的同一行出現的文件修改問題,解決的方法是公司內部溝通解決。
注意現在顯示的是合并中,需要將解決之后的文件重新提交。
這個最終的提交是能帶有文件的名字的
創建遠程庫:
使用的是gitHub 他創建遠程庫的時候,只是按著圖形化界面就可以了。
https://github.com/Time-Passer-By-HDK/GitResp2.git這是你自己的遠程庫的地址。但是這個地址有點長,所以我們的git提供了起別名的方式,
別名:git remote add origin https://www.github/time-passer-by-HDK/GitResp2.git (origin他只是一個別名,這個隨便)
fetch:根據這個地址獲取數據
推送操作:
push:根據這個地址推送數據
推送:git push origin master (一個是遠程庫的別名,一個是推送的分支的選擇)
克隆操作:
git clone +https://地址
就是將遠程操作的數據拉取到本地
并且會為我們創建別名。
邀請加入團隊:
如果不是團隊中的人,是不可以直接提交代碼的,需要項目負責人的拉取,現在拉取的方式還在查找。
如果我們修改之后我們的本地庫的數據和遠程代碼倉庫是不一樣的,所以就要再次拉取數據.
拉取分為兩步:
fetch操作:
git fetch origin master
fetch 這個是抓取的操作,他就只是將數據進行了讀取,將文件下載到本地,可以直接合并。并沒有直接將數據放置到咱們的工作區。
抓取之后可以去遠程庫去查看文件時候抓取成功:
git checkout origin/master
如果發現內容正確,就開始合并操作。
merge操作:
其實上面的兩部合起來就是pull操作:
git pull origin master
如果是比較慎重的操作的話還是建議使用上面發步的操作,如果代碼比較簡單可以直接簡單的使用pull操作
協同開發操作時的解決沖突的方式(這個是針對一個分支的不同的人的操作):
就是如果是兩個人對同一位置進行操作的話,就會產生這個沖突,
如果是沖突的話就是先將遠程的拉取下來,在進行修改和上傳
還是拉取下來之后認為的選擇,之后再上傳,只要是解決重入的再commit提交時都是不帶文件名的。
跨團隊操作:
如果是B公司與A公司合作,首先是將A公司的數據放到自己的遠程庫中,如果是B的員工提交代碼的話,休要A的項目負責人審核。
B公司員工做的事情:
-
進入到賬號之后,將A公司的項目的地址輸入,之后點擊fork操作
-
之后就會出現這個項目,再將這個項目克隆到本地。
-
之后就可以開始自己的工作了
-
之后就是將代碼提交到自己的遠程庫(B公司的)
-
之后就是直接再github操作創建一個新的請求,讓A公司審批
-
A的項目負責人審核
現在我們每次的push操作因為再windows系統中因為是有這個憑據管理器,所以不需要每次都輸入密碼,但是如果是別的系統的話,每次的提交都是需要輸入密碼的,這個其實是很不方便的。
在實際開發中,我們使用的是SHH的方式:
這個需要我們自己的設置也解決這個問題,
1.首先是進入到用戶的主目錄中 其實就是~ 這個目錄,指令時cd ~
2.之后是執行命令生成一個.shh目錄
ssh-keygen -t rsa -C 2827571574@qq.com
輸入命令之后進行三次的回車確認,這個其實就是讓你去選擇使用他的默認值。
之后就會出現這個文件夾
3.打開文件id_rsa.pub文件,將里面的內容直接復制。
4.打開GitHub,將內容放置到Settings里面。
?
5.生成密鑰之后,開始正常的操作,就是正常的起別名,之后提交什么的
IDEA集成操作:
在使用這個提交時顯示錯誤:
$ git push origin_SHH master ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
解決方案:
如果沒有配置文件就自己寫一個:
vim config
創建一個配置文件,之后換一個端口使用。
Host github.com User git Hostname ssh.github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa Port 443 ? Host gitlab.com Hostname altssh.gitlab.com User git Port 443 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa ?
保存退出之后檢查是否成功:
這個問題就解決了。
IDEA整合GIT
將Git整合:
將本地庫初始化:
點擊VCS 之后開始選擇創建的工具:
發現文件中已經有了git文件
在創建文件之后彈出窗口,詢問時候添加到倉庫中:
注意之后是將這個項目添加到暫存區,之后就是簡單的提交
在控制臺查看數據:
查看日志:
現在只是將代碼提交到本地庫,并沒有提交到遠程庫,所以現在需要將代碼提交到遠程庫,但是我們還是使用剛剛的遠程庫的話,就會出現一個問題,這兩個庫是相關的庫,所以在拉取時,他的語法是:
git pull origin master --allow-unrelated-histories 哪個別名隨便用,可以直接是地址
git push -u origin master -f 這是推送的命令,添加-f 就是直接覆蓋
通過命令之后就可以發現現在的文件夾中出現了所有的文件。
現在信息就是同步的了。
一般在開發中都是先拉取,在進行push操作。
項目中的克隆操作:
在實際開發中我們都是先將項目經理的項目克隆到本地,之后再對于代碼進行開發和編寫
使用idea的話如何解決版本沖突:
如果出現沖突,會先讓你合并,這個具體還是讓人選擇。這里會出現選項,讓開發者選擇是選擇你的還是選擇別人的,這個具體的選擇的方式就是自己做主了。
但是如何避免沖突呢:
一般在開發中都是先拉取,在進行push操作。