国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 開發(fā)工具 Git Git常用指令總結(jié)

Git常用指令總結(jié)

Jun 06, 2019 pm 04:04 PM
git指令

Git常用指令總結(jié)

git常用指令有:

#git init

? ? ?在本地新建一個repo,進入一個專案目錄,執(zhí)行g(shù)it init,會初始化一個repo,並在目前資料夾下建立一個.git資料夾.

?

git clone

#? ? ?取得一個url對應的遠端Git repo, 建立一個local copy.

? ? ?一般的格式是git clone [url].

?????clone下來的repo會以url最後一個斜線後面一個斜線後面的名稱命名,建立一個資料夾,如果想要指定特定的名稱,可以git clone [url] newname指定.

?

git status

#? ? ?查詢repo的狀態(tài).

? ? ?git status -s: -s表示short, -s的輸出標記會有兩列,第一列是對staging區(qū)域而言,第二列是對working目錄而言.

?

git log

? ? ?show commit history of a branch.

? ? ?git log --oneline --number : 每條log只顯示一行,顯示number條.

? ? ?git log --oneline --graph:可以圖形化地表示出分支合併歷史.

? ? ?git log branchname可以顯示特定分支的log.

? ? ?git log --oneline branch1 ^branch2,可以查看在分支1,卻不在分支2中的提交.^表示排除這個分支(Window下可能要給^branch2加上引號).

? ? ?git log --decorate會顯示出tag資訊.

? ? ?git log --author=[author name] 可以指定作者的提交歷史.

? ? ?git log -- since --before --until --after 根據(jù)提交時間篩選log.

? ? ?--no-merges可以將merge的commits排除在外.

? ? ?git log --grep 根據(jù)commit資訊過濾log: git log --grep=keywords

? ? ?預設(shè)情況下, git log --grep --author是OR的關(guān)係,即滿足一條即被返回,如果你想讓它們是AND的關(guān)係,可以加上--all-match的option.

? ? ?git log -S: filter by introduced diff.

? ? ?例如: git log -SmethodName (注意S和後面的字之間沒有等號分隔).

? ? ?git log -p: show patch introduced at each commit.

? ? ?每一個提交都是一個快照(snapshot),Git會把每次提交的diff計算出來,作為一個patch顯示給你看.

? ? ?另一種方法是git show [SHA].

? ? ?git log --stat: show diffstat of changes introduced at each commit.

? ? ?同樣是用來看改變的相對訊息的,--stat比-p的輸出更簡單一些.

? ??

git add

在提交之前,Git有一個暫存區(qū)(staging area),可以放入新添加的文件或者加入新的改動. commit時提交的改動是上一次加入到staging area中的改動,而不是我們disk上的變更.

? ? ?git add?.

? ? ?會遞歸地新增目前工作目錄中的所有檔案.

?

##? ? ?不加參數(shù)的git diff:

? ? ?show diff of unstaged changes.

?????此指令比較的是工作目錄中目前檔案與暫存區(qū)域快照之間的差異,也就是修改之後還沒有暫存起來的變化內(nèi)容.

?

?????若要看已經(jīng)暫存起來的文件和上次提交時的快照之間的差異,可以用:

?????git diff --cached 指令.

? ? ?show diff of staged changes.

?????(Git 1.6.1 及更高版本也允許使用效果是允許使用,相同的).

?

? ? ?git diff HEAD

? ? ?show diff of all staged or unstated changes.

? ? ?也即比較提交之詞間所有的改動.

?

? ? ?如果想看自從某個版本之後都改動了什麼,可以用:

? ? ?git diff [version tag]

? ? ?跟log指令一樣,diff也可以加上--stat參數(shù)來簡化輸出.

?

? ? ?git diff [branchA] [branchB]可以用來比較兩個分支.

?????它實際上會返回一個由A到B的patch,不是我們想要的結(jié)果.

?????一般我們想要的結(jié)果是兩個分支分開以後各自的改動都是什麼,是由命令:

? ? ?git diff [branchA]…[branchB]給出的.

? ? ?實際上它是:git diff $(git merge-base [branchA] [branchB]) [branchB]的結(jié)果.

?

?

git commit

? ? ?提交已經(jīng)被add進來的變更.

? ? ?git commit -m 「the commit message"

? ? ?git commit -a 會先把所有已經(jīng)taddrack,提交(有點像svn的一次提交,不用先暫存). 對於沒有track的文件,還是需要git add一下.

? ? ?git commit --amend 增補提交. 會使用與當前提交節(jié)點相同的父節(jié)點進行一次新的提交,舊的提交將會被取消.

?

#git reset

? ? ?undo changes and commits.

? ? ?這裡的HEAD關(guān)鍵字指的是目前分支最末梢最新的一個提交.也就是版本庫中該分支上的最新版本.

? ? ?git reset HEAD: unstage files from index and reset pointer to HEAD

? ? ?這個指令用來把不小心add進去的檔案從staged狀態(tài)取出來,可以單獨針對某一個檔案操作: git reset HEAD - - filename, 這個- - 也可以不加.

? ? ?git reset --soft

? ? ?move HEAD to specific commit reference, index and staging are untouched.

? ? ?the working directory since last commit.

? ? ?使用git reset —hard HEAD進行reset,即上次提交之後,所有staged的改動和工作目錄的改動都會消失,還原到上次提交的狀態(tài).

? ? ?這裡的HEAD可以被寫成任何一次提交的SHA-1.

? ? ?不帶soft和hard參數(shù)的git reset,實際上帶的是預設(shè)參數(shù)mixed.

?

? ? ?總結(jié):

? ? ?git reset --mixed id,是git的HEAD變了(也就是提交記錄變了),但文件並沒有改變,(也就是working tree並沒有改變). 取消了commit和add的內(nèi)容.

?????git reset --soft id. 實際上,是git reset –mixed id 後,又做了一次git add.即取消了commit的內(nèi)容.

?????git reset --hard id.是git的HEAD變了,檔案也變了.

? ? ?依改變範圍排序如下:

? ? ?soft (commit) < mixed (mixed (mixed (mixed) commit add) < hard (commit add local working)

?

git revert

? ? ?反轉(zhuǎn)撤銷提交.只要把出錯的提交(commit )的名字(reference)作為參數(shù)傳給命令就可以了.

? ? ?git revert HEAD: 撤銷最近的一個提交.

? ? ?git revert會創(chuàng)建一個反向的新提交,可以通過參數(shù)-n來告訴Git先不要提交.

? ??

git rm

? ? ?git rm file: 從staging區(qū)移除檔案,同時也移除出工作目錄.

? ? ?git rm --cached: 從staging區(qū)移除檔案,但留在工作目錄中.

? ? ?git rm --cached從功能上等同於git reset HEAD ,清除了快取區(qū),但不動工作目錄樹.

##?

#git clean

? ? ?git?clean是從工作目錄中移除沒有track的檔案.

? ? ?通常的參數(shù)是git clean -df:

? ? ?-d表示同時移除目錄,-f表示force,因為在git的設(shè)定檔中, clean.requireForce=true ,如果不加-f,clean將會拒絕執(zhí)行.

##?

#git mv

? ? ?git rm - - cached orig; mv orig new; git add new?

git stash

? ? ?把目前的改變壓入堆疊.? ? ?git stash將會將目前目錄和index中的所有改動(但不包括未track的文件)壓入一個棧,然後留給你一個clean的工作狀態(tài),即處於上一次最新提交處.

? ? ?git stash list會顯示這個堆疊的list.

? ? ?git stash apply:取出stash中的上一個項目(stash@{0}),並且套用到目前的工作目錄.

? ? ?也可以指定別的項目,例如git stash apply stash@{1}.

? ? ?如果你在應用stash中項目的同時想要刪除它,可以用git stash pop

?

? ? ?刪除stash中的項目:

? ? ?git stash drop: 刪除上一個,也可指定參數(shù)刪除指定的一個項目.

? ? ?git stash clear: 刪除所有項目.

?

##?

##?

##?

##?

##?

##?##?

git branch

? ? ?git branch可以用來列出分支,建立分支和刪除分支.

? ? ?git branch -v可以看見每個分支的最後一次提交.

? ? ?git branch: 列出本地所有分支,當前分支會被星號標示出.######? ? ?git branch (branchname): 創(chuàng)造一個新的分支(當你用這種方式創(chuàng)建分支的時候,分支是基於你的上一次提交建立的).?####

? ? ?git branch -d (branchname): 刪除一個分支.

? ? ?刪除remote的分支:

? ? ?git push (remote-name) :(branch-name): deletech a remgit push (remote-name) :(branch-name): deletech a remgit push): delete .

? ? ?這個是因為完整的命令形式是:

? ? ?git push remote-name local-branch:remote-branch

? ? ?而這裡local-branch的部分為空,

##? ? ?而這裡的local-branch就代表刪除了remote-branch

?

git checkout

  git checkout (branchname)

?

?

??切換到一個分支.

? ? ?git checkout -b (branchname):建立並切換到新的分支.

? ? ?這個指令是將git branch newbranch和git checkout newbranch合在一起的結(jié)果.

? ? ?checkout還有另一個作用:取代本地改動:

? ? ?git checkout --

? ? ?此指令會使用HEAD中的最新內(nèi)容來取代你的工作目錄中的檔案.已新增至暫存區(qū)的變更以及新檔案都不會受到影響.

? ? ?注意:git checkout filename會刪除該檔案中所有沒有暫存和提交的改動,這個操作是不可逆的.

?

# git merge

? ? ?把一個分支merge進目前的分支.

? ? ?git merge [alias]/[branch]

? ? ?把遠端分支merge到目前分支.

?

? ? ?如果發(fā)生衝突,需要手動修改,可以用git mergetool.

##? ?解決衝突的時候可以用git diff,解決完之後用git add添加,即表示衝突已經(jīng)被resolved.

?

git tag

? ? ?tag a point in history as import.

? ? ?會在一個提交上建立永久性的書籤,通常是發(fā)布一個release版本或ship了什麼東西之後加tag.

? ? ?例如: git tag v1.0

? ? ?git tag -a v1.0, -a參數(shù)會允許你加入一些資訊,即make an annotated tag.

? ? ?當你執(zhí)行g(shù)it tag -a指令的時候,Git會打開一個編輯器讓你輸入tag資訊.

? ? ?

? ? ?我們可以利用commit SHA來給一個過去的提交打tag:

? ? ?git tag -a v0.9 XXXX

#?

#? ? ?push的時候是不

?

#? ? ?push的時候是不行包含tag的,如果想包含,可以在push時加上--tags參數(shù).

? ? ?fetch的時候,branch HEAD可以reach的tags是自動被fetch下來的, tags that aren't reachable from branch heads will be skipped.如果想確保所有的tags都被包含進來,需要加上--tags選項.

?

git remote

# list, add and delete remote repository aliases.

? ? ?因為不需要每次都用完整的url,所以Git為每一個remote repo的url都建立一個別名,然後用git remote來管理這個list.

? ? ?git remote: 列出remote aliases.

? ? ?如果你clone一個project,Git會自動將原來的url加進來,別名就叫做:origin.

? ? ?v:可以看見每個別名對應的實際url.

? ? ?git remote add [alias] [url]: 新增一個新的remote repo.

? ? ?git remote rm [alias]: 刪除一個存在的remote alias.

? ? ?git remote rename [old-alias] [new-alias]: 重新命名.

? ? ?git remote set-url [alias] [url]:url. 可以加上—push和fetch參數(shù),為同一個別名set不同的存取位址.

?

git fetch

? ? ?download new branches and data from a remote repository.

? ? ?可以git fetch [alias]取某一個遠程repo,也可以git fetch --all取到全部repo

? ? ?fetch將會取到所有你本地沒有的資料,所有取下來的分支可以被叫做remote branches,它們和本地分支一樣(可以看diff,log等,也可以merge到其他分支),但是Git不允許你checkout到它們.?

#?

git pull

? ? ?fetch from a remote repo and try to merge into the current branch.

? ? ?pull == fetch merge FETCH_HEAD

? ? ?git pull會先執(zhí)行g(shù)it fetch,然後執(zhí)行g(shù)it merge,把取來的分支的head merge到當前分支.這個merge操作會產(chǎn)生一個新的commit.? ??

?????如果使用--rebase參數(shù),它它會執(zhí)行g(shù)it rebase來取代原來的git merge.

??######?#########git rebase######

?????--rebase不會產(chǎn)生合併的提交,它會將本地的所有提交臨時保存為補丁(patch),放在”.git/rebase”目錄中,然後將當前分支更新到最新的分支尖端,最後把保存的補丁應用到分支上.

? ? ?rebase的過程中,也許會出現(xiàn)衝突,Git會停止rebase並讓你解決衝突,在解決完衝突之後,用git add去更新這些內(nèi)容,然後無需執(zhí)行commit,只需:

? ? ?git rebase --continue就會繼續(xù)打餘下的補丁.

? ? ?git rebase --abort將會終止rebase,目前分支將會回到rebase之前的狀態(tài).

?

git push

? ? ?push your new branches and data to a remote repository.

? ? ?git push [ alias] [branch]

? ? ?將會把目前分支merge到alias上的[branch]分支.如果分支已經(jīng)存在,將會更新,如果不存在,將會添加這個分支.

? ? ?如果有多個人向同一個remote repo push代碼, Git會首先在你試圖push的分支上運行g(shù)it log,檢查它的歷史中是否能看到server上的branch現(xiàn)在的tip,如果本地歷史中不能看到server的tip,說明本地的程式碼不是最新的,Git會拒絕你的push,讓你先fetch,merge,之後再push,這樣就保證了所有人的改動都會被考慮進來.

#git reflog

? ? ?git reflog是對reflog進行管理的命令,reflog是git用來記錄引用變化的一種機制,例如記錄分支的變化或是HEAD引用的變化.

? ? ?當git reflog不指定引用的時候,預設(shè)列出HEAD的reflog.

? ? ?HEAD@{0}代表HEAD目前的值,HEAD@{3}代表HEAD在3次變化之前的值.

? ? ?git會將變化記錄到HEAD對應的reflog檔案中,其路徑為.git/logs/HEAD, 分支的reflog檔案都放在.git/logs/ refs目錄下的子目錄中.

?

?

#特殊符號:

##?????^代表父提交,當一個提交有多個父提交時,可以透過在^後面跟上一個數(shù)字,表示第幾個父提交: ^相當於^1.

?????~相當於連續(xù)的個^ .

git init

? ? ?在本地新建一個repo,進入一個專案目錄,執(zhí)行g(shù)it init,會初始化一個repo,並在目前資料夾下建立一個. git資料夾.

?

git clone

? ? ?取得一個url對應的遠端Git repo, 建立一個local copy.

#一般的格式是git clone [url].

?????clone下來的repo會以url最後一個斜線後面的名稱命名,建立一個資料夾,如果想要指定特定的名稱,可以git clone [url ] 新name指定.

?

git status

#? ? ?查詢repo的狀態(tài).

? ? ?git status -s: -s表示short , -s的輸出標記會有兩列,第一列是對staging區(qū)域而言,第二列是對working目錄而言.

?

git log

? ? ?show commit history of a branch.

? ? ?git log --oneline --number: 每條log只顯示一行,顯示number.

? ? ?git log -- oneline --graph:可以圖形化地表示出分支合併歷史.

? ? ?git log branchname可以顯示特定分支的log.

? ? ?git log --oneline branch1 ^branch2,可以查看在分支1,卻不在分支2中的提交.^表示排除這個分支(Window下可能要給^branch2加上引號).

? ? ?git log --decorate會顯示出tag訊息.

? ? ?git log --author=[author name] 可以指定作者的提交歷史.

? ? ?git log --since --before --until --after 根據(jù)提交時間篩選log.

--no-merges可以將merge的commits排除在外.

? ? ?git log --grep 根據(jù)commit訊息過濾log: git log --grep=keywords

#? ? ?預設(shè)情況下, git log - -grep --author是OR的關(guān)係,即滿足一條即被返回,如果你想讓它們是AND的關(guān)係,可以加上--all-match的option.

? ? ?git log -S: filter by introduced diff.

? ? ?例如: git log -SmethodName (注意S與後面的字之間沒有等號分隔).

? ? ?git log -p: show patch introduced at each commit.

? ? ?每一個提交都是一個快照(snapshot),Git會把每次提交的diff計算出來,作為一個patch顯示給你看.

? ? ?另一種方法是git show [SHA ].

? ? ?git log --stat: show diffstat of changes introduced at each commit.

? ? ?同樣是用來看改動的相對訊息的,--stat比-p的輸出更簡單一些.

? ??

git add

? ? ?在提交之前,Git有一個暫存區(qū)(staging area),可以放入新添加的文件或者加入新的改動. commit時提交的改動是上一次加入到staging area中的改動,而不是我們disk上的改動.

? ? ?git add?.

? ? ?會遞歸地添加當前工作目錄中的所有文件.

?

git diff

? ? ?不加參數(shù)的git diff:

? ? ?show diff of unstaged changes.

?????此命令比較的是工作目錄中當前文件和暫存區(qū)域快照之間的差異,也就是修改之后還沒有暫存起來的變化內(nèi)容.

?

?????若要看已經(jīng)暫存起來的文件和上次提交時的快照之間的差異,可以用:

?????git diff --cached 命令.

? ? ?show diff of staged changes.

?????(Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的).

?

? ? ?git diff HEAD

? ? ?show diff of all staged or unstated changes.

? ? ?也即比較woking directory和上次提交之間所有的改動.

?

? ? ?如果想看自從某個版本之后都改動了什么,可以用:

? ? ?git diff [version tag]

? ? ?跟log命令一樣,diff也可以加上--stat參數(shù)來簡化輸出.

?

? ? ?git diff [branchA] [branchB]可以用來比較兩個分支.

?????它實際上會返回一個由A到B的patch,不是我們想要的結(jié)果.

?????一般我們想要的結(jié)果是兩個分支分開以后各自的改動都是什么,是由命令:

? ? ?git diff [branchA]…[branchB]給出的.

? ? ?實際上它是:git diff $(git merge-base [branchA] [branchB]) [branchB]的結(jié)果.

?

?

git commit

? ? ?提交已經(jīng)被add進來的變更.

? ? ?git commit -m 「the commit message"

? ? ?git commit -a 會先把所有已經(jīng)taddrack,提交(有點像svn的一次提交,不用先暫存). 對於沒有track的文件,還是需要git add一下.

? ? ?git commit --amend 增補提交. 會使用與當前提交節(jié)點相同的父節(jié)點進行一次新的提交,舊的提交將會被取消.

?

#git reset

? ? ?undo changes and commits.

? ? ?這裡的HEAD關(guān)鍵字指的是目前分支最末梢最新的一個提交.也就是版本庫中該分支上的最新版本.

? ? ?git reset HEAD: unstage files from index and reset pointer to HEAD

? ? ?這個指令用來把不小心add進去的檔案從staged狀態(tài)取出來,可以單獨針對某一個檔案操作: git reset HEAD - - filename, 這個- - 也可以不加.

? ? ?git reset --soft

? ? ?move HEAD to specific commit reference, index and staging are untouched.

? ? ?the working directory since last commit.

? ? ?使用git reset —hard HEAD進行reset,即上次提交之後,所有staged的改動和工作目錄的改動都會消失,還原到上次提交的狀態(tài).

? ? ?這裡的HEAD可以被寫成任何一次提交的SHA-1.

? ? ?不帶soft和hard參數(shù)的git reset,實際上帶的是預設(shè)參數(shù)mixed.

?

? ? ?總結(jié):

? ? ?git reset --mixed id,是git的HEAD變了(也就是提交記錄變了),但文件並沒有改變,(也就是working tree並沒有改變). 取消了commit和add的內(nèi)容.

?????git reset --soft id. 實際上,是git reset –mixed id 後,又做了一次git add.即取消了commit的內(nèi)容.

?????git reset --hard id.是git的HEAD變了,檔案也變了.

? ? ?依改變範圍排序如下:

? ? ?soft (commit) < mixed (mixed (mixed (mixed) commit add) < hard (commit add local working)

?

git revert

? ? ?反轉(zhuǎn)撤銷提交.只要把出錯的提交(commit )的名字(reference)作為參數(shù)傳給命令就可以了.

? ? ?git revert HEAD: 撤銷最近的一個提交.

? ? ?git revert會創(chuàng)建一個反向的新提交,可以通過參數(shù)-n來告訴Git先不要提交.

? ??

git rm

? ? ?git rm file: 從staging區(qū)移除檔案,同時也移除出工作目錄.

? ? ?git rm --cached: 從staging區(qū)移除檔案,但留在工作目錄中.

? ? ?git rm --cached從功能上等同於git reset HEAD ,清除了快取區(qū),但不動工作目錄樹.

##?

#git clean

? ? ?git?clean是從工作目錄中移除沒有track的檔案.

? ? ?通常的參數(shù)是git clean -df:

? ? ?-d表示同時移除目錄,-f表示force,因為在git的設(shè)定檔中, clean.requireForce=true ,如果不加-f,clean將會拒絕執(zhí)行.

##?

#git mv

? ? ?git rm - - cached orig; mv orig new; git add new?

git stash

? ? ?把目前的改變壓入堆疊.? ? ?git stash將會將目前目錄和index中的所有改動(但不包括未track的文件)壓入一個棧,然後留給你一個clean的工作狀態(tài),即處於上一次最新提交處.

? ? ?git stash list會顯示這個堆疊的list.

? ? ?git stash apply:取出stash中的上一個項目(stash@{0}),並且套用到目前的工作目錄.

? ? ?也可以指定別的項目,例如git stash apply stash@{1}.

? ? ?如果你在應用stash中項目的同時想要刪除它,可以用git stash pop

?

? ? ?刪除stash中的項目:

? ? ?git stash drop: 刪除上一個,也可指定參數(shù)刪除指定的一個項目.

? ? ?git stash clear: 刪除所有項目.

?

##?

##?

##?

##?

##?

##?##?

git branch

? ? ?git branch可以用來列出分支,建立分支和刪除分支.

? ? ?git branch -v可以看見每個分支的最後一次提交.

? ? ?git branch: 列出本地所有分支,當前分支會被星號標示出.######? ? ?git branch (branchname): 創(chuàng)造一個新的分支(當你用這種方式創(chuàng)建分支的時候,分支是基於你的上一次提交建立的).?####

? ? ?git branch -d (branchname): 刪除一個分支.

? ? ?刪除remote的分支:

? ? ?git push (remote-name) :(branch-name): deletech a remgit push (remote-name) :(branch-name): deletech a remgit push): delete .

? ? ?這個是因為完整的命令形式是:

? ? ?git push remote-name local-branch:remote-branch

? ? ?而這裡local-branch的部分為空,

##? ? ?而這裡的local-branch就代表刪除了remote-branch

?

git checkout

  git checkout (branchname)

?

?

??切換到一個分支.

? ? ?git checkout -b (branchname):建立並切換到新的分支.

? ? ?這個指令是將git branch newbranch和git checkout newbranch合在一起的結(jié)果.

? ? ?checkout還有另一個作用:取代本地改動:

? ? ?git checkout --

? ? ?此指令會使用HEAD中的最新內(nèi)容來取代你的工作目錄中的檔案.已新增至暫存區(qū)的變更以及新檔案都不會受到影響.

? ? ?注意:git checkout filename會刪除該檔案中所有沒有暫存和提交的改動,這個操作是不可逆的.

?

# git merge

? ? ?把一個分支merge進目前的分支.

? ? ?git merge [alias]/[branch]

? ? ?把遠端分支merge到目前分支.

?

? ? ?如果發(fā)生衝突,需要手動修改,可以用git mergetool.

##? ?解決衝突的時候可以用git diff,解決完之後用git add添加,即表示衝突已經(jīng)被resolved.

?

git tag

? ? ?tag a point in history as import.

? ? ?會在一個提交上建立永久性的書籤,通常是發(fā)布一個release版本或ship了什麼東西之後加tag.

? ? ?例如: git tag v1.0

? ? ?git tag -a v1.0, -a參數(shù)會允許你加入一些資訊,即make an annotated tag.

? ? ?當你執(zhí)行g(shù)it tag -a指令的時候,Git會打開一個編輯器讓你輸入tag資訊.

? ? ?

? ? ?我們可以利用commit SHA來給一個過去的提交打tag:

? ? ?git tag -a v0.9 XXXX

#?

#? ? ?push的時候是不

?

#? ? ?push的時候是不行包含tag的,如果想包含,可以在push時加上--tags參數(shù).

? ? ?fetch的時候,branch HEAD可以reach的tags是自動被fetch下來的, tags that aren't reachable from branch heads will be skipped.如果想確保所有的tags都被包含進來,需要加上--tags選項.

?

git remote

# list, add and delete remote repository aliases.

? ? ?因為不需要每次都用完整的url,所以Git為每一個remote repo的url都建立一個別名,然後用git remote來管理這個list.

? ? ?git remote: 列出remote aliases.

? ? ?如果你clone一個project,Git會自動將原來的url加進來,別名就叫做:origin.

? ? ?v:可以看見每個別名對應的實際url.

? ? ?git remote add [alias] [url]: 新增一個新的remote repo.

? ? ?git remote rm [alias]: 刪除一個存在的remote alias.

? ? ?git remote rename [old-alias] [new-alias]: 重新命名.

? ? ?git remote set-url [alias] [url]:url. 可以加上—push和fetch參數(shù),為同一個別名set不同的存取位址.

?

git fetch

? ? ?download new branches and data from a remote repository.

? ? ?可以git fetch [alias]取某一個遠程repo,也可以git fetch --all取到全部repo

? ? ?fetch將會取到所有你本地沒有的資料,所有取下來的分支可以被叫做remote branches,它們和本地分支一樣(可以看diff,log等,也可以merge到其他分支),但是Git不允許你checkout到它們.?

#?

git pull

? ? ?fetch from a remote repo and try to merge into the current branch.

? ? ?pull == fetch merge FETCH_HEAD

? ? ?git pull會先執(zhí)行g(shù)it fetch,然後執(zhí)行g(shù)it merge,把取來的分支的head merge到當前分支.這個merge操作會產(chǎn)生一個新的commit.? ??

?????如果使用--rebase參數(shù),它它會執(zhí)行g(shù)it rebase來取代原來的git merge.

??######?#########git rebase######

?????--rebase不會產(chǎn)生合并的提交,它會將本地的所有提交臨時保存為補丁(patch),放在”.git/rebase”目錄中,然后將當前分支更新到最新的分支尖端,最后把保存的補丁應用到分支上.

? ? ?rebase的過程中,也許會出現(xiàn)沖突,Git會停止rebase并讓你解決沖突,在解決完沖突之后,用git add去更新這些內(nèi)容,然后無需執(zhí)行commit,只需要:

? ? ?git rebase --continue就會繼續(xù)打余下的補丁.

? ? ?git rebase --abort將會終止rebase,當前分支將會回到rebase之前的狀態(tài).

?

git push

? ? ?push your new branches and data to a remote repository.

? ? ?git push [alias] [branch]

? ? ?將會把當前分支merge到alias上的[branch]分支.如果分支已經(jīng)存在,將會更新,如果不存在,將會添加這個分支.

? ? ?如果有多個人向同一個remote repo push代碼, Git會首先在你試圖push的分支上運行g(shù)it log,檢查它的歷史中是否能看到server上的branch現(xiàn)在的tip,如果本地歷史中不能看到server的tip,說明本地的代碼不是最新的,Git會拒絕你的push,讓你先fetch,merge,之后再push,這樣就保證了所有人的改動都會被考慮進來.

?

git reflog

? ? ?git reflog是對reflog進行管理的命令,reflog是git用來記錄引用變化的一種機制,比如記錄分支的變化或者是HEAD引用的變化.

? ? ?當git reflog不指定引用的時候,默認列出HEAD的reflog.

? ? ?HEAD@{0}代表HEAD當前的值,HEAD@{3}代表HEAD在3次變化之前的值.

? ? ?git會將變化記錄到HEAD對應的reflog文件中,其路徑為.git/logs/HEAD, 分支的reflog文件都放在.git/logs/refs目錄下的子目錄中.

?

?

特殊符號:

?????^代表父提交,當一個提交有多個父提交時,可以通過在^后面跟上一個數(shù)字,表示第幾個父提交: ^相當于^1.

?????~相當于連續(xù)的個^.

更多Git相關(guān)技術(shù)文章,請訪問Git使用教程欄目!

以上是Git常用指令總結(jié)的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

.git目錄是什麼,其中包含什麼? .git目錄是什麼,其中包含什麼? Jun 20, 2025 am 12:12 AM

.git目錄是Git倉庫的核心,包含版本控制所需的所有數(shù)據(jù)。 1.它存儲了對象(如提交、樹、標籤)、引用(如分支和標籤指針)、HEAD當前分支信息、索引暫存區(qū)、配置文件等關(guān)鍵內(nèi)容。 2.用戶通常無需手動操作這些文件,因直接編輯可能導致倉庫損壞,如刪除文件、修改引用或破壞索引。 3.若出現(xiàn)問題,可用gitfsck或gitreflog進行修復。 4.雖不應隨意更改.git內(nèi)容,但查看其中文件如HEAD、config和日誌可幫助理解Git運作機制。了解.git的結(jié)構(gòu)有助於深入掌握Git工作原理。

什麼是三向合併? 什麼是三向合併? Jun 19, 2025 am 12:07 AM

三路合併是一種使用原始版本和兩個修改版本來更準確地解決衝突的合併方法。 1.它基於三個版本:共同祖先(基礎(chǔ)版本)、你的更改(本地版本)和他人的更改(遠程版本)。 2.系統(tǒng)通過比較兩個修改版本與基礎(chǔ)版本,識別出重疊修改並標記衝突區(qū)域以供手動處理。 3.與兩路比較相比,它能更好地理解變更上下文,減少誤報並提高自動合併的安全性。 4.常見於Git分支合併、PullRequest及高級合併工具中。 5.使用時需確保所選基礎(chǔ)版本為真正的共同祖先,並選用支持三路合併的工具以保證準確性。

如何從遠程服務器克隆現(xiàn)有的GIT存儲庫? 如何從遠程服務器克隆現(xiàn)有的GIT存儲庫? Jun 24, 2025 am 12:05 AM

cloneAgitRepositor,SuseGitiationStalledByCheckingWithGit- versionandInstallingifNeed。 (1)setUpyourusernAmeAneAneAmeAneMailDemailusiseGitConfig。 (2)useGitCloneFollowEdfOlledBolotef theRepositoryUrlltocreateAtolecalCopy

哪些常見的GIT工作流程(例如,Gitflow,Github流)? 哪些常見的GIT工作流程(例如,Gitflow,Github流)? Jun 21, 2025 am 12:04 AM

常見的Git工作流包括Gitflow、GitHubFlow和GitLabFlow,各自適用於不同開發(fā)場景。 Gitflow適合有計劃發(fā)布的項目,通過main、develop、feature、release和hotfix分支實現(xiàn)結(jié)構(gòu)化管理;GitHubFlow以單一主分支為核心,強調(diào)持續(xù)交付,適合需要頻繁部署的小型團隊或Web應用;GitLabFlow在GitHubFlow基礎(chǔ)上增加環(huán)境感知能力,支持多環(huán)境部署並使用標籤追蹤生產(chǎn)狀態(tài)。每種流程各有優(yōu)劣,選擇時應根據(jù)團隊規(guī)模、項目類型和發(fā)布頻率進行調(diào)整

.gitignore文件的目的是什麼? .gitignore文件的目的是什麼? Jun 22, 2025 am 12:11 AM

.gitignore文件用於指定Git應忽略的文件或文件夾,防止其被提交到版本庫,從而避免不必要的或敏感文件被追蹤。其核心作用包括:1.排除開發(fā)過程中生成的臨時文件如node_modules、.env、.log等;2.避免操作系統(tǒng)或編輯器產(chǎn)生的特定文件進入版本控制;3.清理構(gòu)建工俱生成的編譯產(chǎn)物如dist/、build/目錄;4.設(shè)置時需注意語法如通配符*、目錄以/結(jié)尾、!表示例外。若已提交文件後才添加.gitignore,需手動運行g(shù)itrm-r--cached.清除緩存後再重新提交。

如何清除整個儲藏列表? 如何清除整個儲藏列表? Jul 01, 2025 am 12:02 AM

要清除Git中的整個stash列表,沒有直接的內(nèi)置命令,但可以通過幾個步驟完成。首先運行g(shù)itstashlist查看當前所有stash條目,然後逐個使用gitstashdropstash@{n}刪除,或者使用gitreflogdelete--expire-unreachable=nowrefs/stash和gitgc--prune=now一次性強制清除所有stash,此外也可以使用bash循環(huán)命令whilegitstashlist|grep-q'^stash@';dogitstashdrop;d

什麼是git子模型,為什麼使用它們? 什麼是git子模型,為什麼使用它們? Jun 25, 2025 am 12:13 AM

Git子模塊允許將一個Git倉庫作為子目錄嵌入另一個倉庫,適用於引用外部項目或組件而不合併其歷史記錄。使用子模塊的原因包括:管理具有獨立版本控制的第三方庫、維護項目不同部分的獨立開發(fā)歷史、在多個項目間共享代碼。子模塊的工作原理是:添加子模塊時,Git會記錄應使用的具體提交,父項目僅跟蹤該提交而非子模塊內(nèi)的文件變化;克隆主倉庫後需初始化並更新子模塊;子模塊信息存儲於.gitmodules文件及.git/config中,實際文件位於.git/modules/路徑下。適用場景包括:嚴格控制外部依賴版本

什麼是git中的包裝文件? 什麼是git中的包裝文件? Jul 08, 2025 am 12:14 AM

Packfile是Git用來打包、壓縮和傳輸版本庫對象的高效機制。當你執(zhí)行g(shù)itpush、gitfetch或gitclone時,Git實際傳輸?shù)木褪莗ackfile;1.它最初由鬆散對象通過gitgc或gitrepack命令生成,存於.git/objects/pack/目錄;2.Packfile不僅包含對像數(shù)據(jù),還記錄對象間的差異(delta)關(guān)係,並配合索引文件(.idx)實現(xiàn)快速查找;3.這種設(shè)計減少了傳輸體積,提高了同步效率;4.大量小packfile可能影響性能,可通過gitgc或git

See all articles