gitlab & git git push origion master :refs/for/master git push origion HEAD:refs/for/master

工作區(Working Directory)
就是你在電腦裏能看到的目錄

版本庫(Repository)
工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。

Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。

前面講了我們把文件往Git版本庫裏添加的時候,是分兩步執行的:

第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;

第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

因爲我們創建Git版本庫時,Git自動爲我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。


要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git

關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;

此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;

分佈式版本系統的最大好處之一是在本地工作完全不需要考慮遠程庫的存在,也就是有沒有聯網都可以正常工作,而SVN在沒有聯網的時候是拒絕幹活的!當有網絡的時候,再把本地提交推送一下就完成了同步,真是太方便了!

Git鼓勵大量使用分支:

查看分支:git branch

創建分支:git branch <name>

切換分支:git checkout <name>或者git switch <name>

創建+切換分支:git checkout -b <name>或者git switch -c <name>

合併某分支到當前分支:git merge <name>

刪除分支:git branch -d <name>

git pull --rebase origin master
用於合併代碼 然後再
git push -u origin master
由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。

可以直接輸入命令 :cat ~/.ssh/id_rsa.pub

1、git pull origin master --allow-unrelated-histories //把遠程倉庫和本地同步,消除差異

2、重新add和commit相應文件

3、git push origin master

4、此時就能夠上傳成功了

build.gradle: The option setting 'android.enableR8=false' is deprecated.
It will be removed in version 5.0 of the Android Gradle plugin.
You will no longer be able to disable R8

git提交代碼
1 git add .
2 git commit -m "IssueID=00000000 描述"
3 git pull --rebase origin master
4 git push origin HEAD :refs/for/master 即是將本地的master分支推送到遠程主機origin上的對應master分支, origin 是遠程主機名, 第一個master是本地分支名,第二個master是遠程分支名。
git push的一般形式爲 git push <遠程主機名> <本地分支名> <遠程分支名>

git pull rebase 的好處就是不用添加合併的節點 具體查看https://www.cnblogs.com/ellen-mylife/p/12794245.html

回退到上一個commit 先git log 查看上一次的id
然後git reset --hard commitid

git push origion master :refs/for/master

! [remote rejected] master -> master (prohibited by Gerrit)

1.解決

git push origion HEAD:refs/for/master

簡單點說,就是refs/for/mybranch需要經過code review之後纔可以提交;refs/heads/mybranch不需要code review。

如:
如果需要code review,直接push

$git push origin master
1
那麼就會有“! [remote rejected] master -> master (prohibited by Gerrit)”的錯誤信息
而這樣push就沒有問題,

$git push origin HEAD:refs/for/mybranch

精簡版查看log git log --pretty=oneline

查看到commitid 的時候 就可以跳到制定id的commit版本
在git 中HEAD指向當前版本就是你當前的提交 上一個版本就是 HEAD^ 多個就是HEAD~n
HEAD表示成一個指針 當你回退到某一個版本的時候 只不過是HEAD的指向變了

如果回退後還想再回去,當前窗口沒有關閉的時候可以向上找commitid 然後繼續git reset --hard commitid 就回去了
如果當前窗口關閉或者過去了一天 那麼使用git reflog 來查看之前的操作 找到對應的commitid

git checkout -- readme.txt 可以丟棄工作區的修改
總之,就是讓這個文件回到最近一次git commit或git add時的狀態。

git checkout -- file命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令,我們在後面的分支管理中會再次遇到git checkout命令。

如果你把文件Git add 添加到stage緩存區了 那麼想要撤回到工作區之前的 需要先git reset HEAD (file)
意思就是吧HEAD指針從stage緩存區指向工作區的文件 也就把文件從緩存區撤回了 最後在利用
git checkout --file 命令 撤回之前的操作 丟棄工作的文件

$ git checkout -- test.txt
git checkout其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

注意:從來沒有被添加到版本庫就被刪除的文件,是無法恢復的!
小結
命令git rm用於刪除一個文件。如果一個文件已經被提交到版本庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容

參考:
https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章