柚子快報邀請碼778899分享:git 常用操作指令
柚子快報邀請碼778899分享:git 常用操作指令
文章目錄
git clonegit taggit configgit addgit commitgit stashgit rmgit branch/checkoutgit pull/pushgit rebash/merge多人維護同一分支解決沖突安全方法
git clone
git clone?可以將一個遠程 Git 倉庫拷貝到本地,讓自己能夠查看該項目,或者進行修改。
拷貝項目命令格式如下:
git clone [url]
[url]?是你要拷貝的項目。
例如我們拷貝 Github 上的項目:
$ git clone https://github.com/tianqixin/runoob-git-test
Cloning into 'runoob-git-test'...
remote: Enumerating objects: 12, done.
remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 12
Unpacking objects: 100% (12/12), done.
git tag
Git 支持兩種標簽:
輕量標簽(lightweight)附注標簽(annotated)
輕量標簽(lightweight)
輕量標簽本質(zhì)上是將提交校驗和存儲到一個文件中——沒有保存任何其他信息。 創(chuàng)建輕量標簽,不需要使用 -a、-s 或 -m 選項,只需要提供標簽名字:
$ git tag
$ git tag
附注標簽(annotated)
創(chuàng)建附注標簽,在git tag指定-a
git tag -a
//創(chuàng)建帶有注釋的標簽:
$ git tag -a v1.4 -m "my version 1.4"
//列出所有標簽:
$ git tag
通過使用 git show 命令可以看到標簽信息和與之對應(yīng)的提交信息:
共享標簽
默認情況下,git push?命令并不會傳送標簽到遠程倉庫服務(wù)器上。 在創(chuàng)建完標簽后我們必須顯式地推送標簽到共享服務(wù)器上。 這個過程就像共享遠程分支一樣——你可以運行?git push origin
$ git push origin
使用--tags選項可以將所有不在遠程倉庫服務(wù)器上的標簽一次性傳送到那里。
$ git push origin --tags
注意:?使用?git push
刪掉標簽
要刪除掉本地倉庫上的標簽,可以使用命令?git tag -d
$ git tag -d
刪除遠端標簽:
git push origin --delete
檢出標簽
如果想查看某個標簽所指向的文件版本,可以使用?git checkout?命令, 雖然這會使我們的倉庫處于“分離頭指針(detached HEAD)”的狀態(tài)——但是這個狀態(tài)有些副作用:
$ git checkout
?git config
我們可以通過git config來配置用戶名和郵箱地址,便于我們將代碼提交到遠程倉庫,具體格式如下:
git config --global user.name '你的用戶名'
git config --global user.email '你的郵箱'
git add
git add 命令可將文件添加到緩存,如新項目中,添加所有文件很普遍,可以使用如下命令:
git add .
注意:add有多種形式,可以add某個文件,某個文件夾,或直接add當前倉庫下所有文件
git add 單個文件
git add 文件夾1/ 文件夾2/ ……多個文件夾之間空格隔開
git add .
有時候我們add之后又改了代碼,所以想重新add,但是之前add但是沒有commit的文件還在,想撤銷怎么辦呢?
git status //查看已經(jīng)add的
git reset . //撤銷命令reset,此處表示撤銷全部
git reset HEAD 命令用于取消已緩存的內(nèi)容,如我們要取消已提交的test.txt文件,可以如下使用:(撤銷單個文件)
git reset HEAD test.txt
git commit
git commit 將緩存區(qū)內(nèi)容添加到倉庫中,可以在后面加-m選項,以在命令行中提供提交注釋,格式如下:
git commit -m "第一次版本提交" //文件從暫存區(qū)提交到版本庫,其中" "內(nèi)是對應(yīng)提交的注釋
如果你覺得 每次 commit之前要add一下,想跳過add這一步,可以直接使用 -a選項,如:
git commit -am "第一次版本提交"
我們可以創(chuàng)建一個文件,并將它添加打緩存,之后在提交,具體操作如下:
git stash
git stash ///暫存"工作現(xiàn)場"
git stash list //查看保存的工作現(xiàn)場
git stash apply // 恢復(fù)工作現(xiàn)場,但是stash內(nèi)容不刪除,刪除需要 git stash pop
git stash pop //恢復(fù)工作現(xiàn)場的同時刪除stash內(nèi)容
常用git stash命令:
(1)git stash save "save message" : 執(zhí)行存儲時,添加備注,方便查找,只有g(shù)it stash 也要可以的,但查找時不方便識別。
(2)git stash list :查看stash了哪些存儲
(3)git stash show :顯示做了哪些改動,默認show第一個存儲,如果要顯示其他存貯,后面加stash@{$num},比如第二個 git stash show stash@{1}
(4)git stash show -p : 顯示第一個存儲的改動,如果想顯示其他存存儲,命令:git stash show stash@{$num} -p ,比如第二個:git stash show stash@{1} -p
(5)git stash apply :應(yīng)用某個存儲,但不會把存儲從存儲列表中刪除,默認使用第一個存儲,即stash@{0},如果要使用其他個,git stash apply stash@{$num} , 比如第二個:git stash apply stash@{1}
(6)git stash pop :命令恢復(fù)之前緩存的工作目錄,將緩存堆棧中的對應(yīng)stash刪除,并將對應(yīng)修改應(yīng)用到當前的工作目錄下,默認為第一個stash,即stash@{0},如果要應(yīng)用并刪除其他stash,命令:git stash pop stash@{$num} ,比如應(yīng)用并刪除第二個:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丟棄stash@{$num}存儲,從列表中刪除這個存儲
(8)git stash clear :刪除所有緩存的stash
總結(jié):
如果要應(yīng)用這些stash,直接使用git stash apply或者git stash pop就可以再次導(dǎo)出來了。
git add 只是把文件加到git 版本控制里,并不等于就被stash起來了,git add和git stash 沒有必然的關(guān)系,但是執(zhí)行g(shù)it stash 能正確存儲的前提是文件必須在git 版本控制中才行。
常規(guī) git stash 的一個限制是它會一下暫存所有的文件。有時,只備份某些文件更為方便,讓另外一些與代碼庫保持一致。一個非常有用的技巧,用來備份部分文件:
add 那些你不想備份的文件(例如: git add file1.js, file2.js)調(diào)用 git stash –keep-index。只會備份那些沒有被add的文件。調(diào)用 git reset 取消已經(jīng)add的文件的備份,繼續(xù)自己的工作。
git rm
如果只是簡單地從工作目錄中手工刪除文件,運行 git status 時就會在 Changes not staged for commit 的提示。要從 Git 中移除某個文件,就必須要從已跟蹤文件清單中移除,然后提交??梢匀缦率褂茫?/p>
git rm
如果刪除之前修改過并且已經(jīng)放到暫存區(qū)域的話,則必須要用強制刪除選項 -f
git rm -f
可以遞歸刪除,即如果后面跟的是一個目錄做為參數(shù),則會遞歸刪除整個目錄中的所有子目錄和文件:
git rm –r *
rm -rf .git/ //強制刪除暫存文件
git branch/checkout
git branch:查看分支命令git branch (branchname):創(chuàng)建分支命令git checkout (branchname):切換分支命令git merge:合并分支命令git branch -d (branchname):刪除分支命令
git branch ? ? ? ? ? ? ? ? ? ? ? ? ? #查看分支 git branch -a ? ? ? ? ? ? ? ? ? ? ? ?#查看所有分支,包括遠程和本地 git branch name ? ? ? ? ? ? ? ? ? ? ?#創(chuàng)建分支 git checkout name ? ? ? ? ? ? ? ? ? ?#切換分支到name git checkout -b name ? ? ? ? ? ? ? ? #創(chuàng)建一個新的分支并且立即切換到它 git merge name ? ? ? ? ? ? ? ? ? ? ? #在分支master上合并分支name git branch -d name ? ? ? ? ? ? ? ? ? #刪除本地分支name git push origin --delete name ? ? ? ?#刪除遠程分支 ? ?
git pull/push
git fetch和git pull的區(qū)別:
git fetch:相當于是從遠程獲取最新版本到本地,不會自動合并。 git pull:相當于是從遠程獲取最新版本并merge到本地。 git push git push 推送你的新分支與數(shù)據(jù)到某個遠端倉庫命令,格式如下:
更新操作:
$ git pull
$ git pull origin
將遠程主機 origin 的 master 分支拉取過來,與本地的 brantest 分支合并。
git pull origin master:brantest
如果遠程分支是與當前分支合并,則冒號后面的部分可以省略。
git pull origin master
git push 命令用于從將本地的分支版本上傳到遠程并合并。
命令格式如下:
git push <遠程主機名> <本地分支名>:<遠程分支名>
如果本地分支名與遠程分支名相同,則可以省略冒號:
git push <遠程主機名> <本地分支名>
以下命令將本地的 master 分支推送到 origin 主機的 master 分支。
$ git push origin master //等價于$ git push origin master:master
或git push -u origin master
如果origin端還不存在本地分支dev,想將本地分支推送到遠端可以使用
git push --set-upstream origin dev
刪除主機的分支可以使用 --delete 參數(shù),以下命令表示刪除 origin 主機的 master 分支:
git push origin --delete master
git rebash/merge
在開發(fā)中經(jīng)常需要基于一個分支來創(chuàng)建子分支,然后在子分支上進行開發(fā),最后驗證功能無問題才會將子分支合并到主分支上去。將子分支合并到主分支上一般有兩種方案,分別為:
git merge:這種合并會在對應(yīng)的主分支上產(chǎn)生合并的提交,以及對應(yīng)子分支的提交情況。git rebase:這種合并是變基的操作,相當于將子分支的 commit 直接提交到主分支上,此時主分支上不會有合并記錄和對應(yīng)子分支的提交情況,看起來比較清爽。
現(xiàn)將子分支?dev?的代碼以git rebase的方式合并到主分支?main上且不要留下合并的記錄,此時相當于將子分支的所有?commit?提交到當前的主分支上。如下:B?,?C為主分支上的提交,D,?E?為子分支的提交,現(xiàn)在要將子分支的兩筆?commit?合并到主分支上。
?初始時狀態(tài):
對子分支?dev?進行g(shù)it rebase?之后,子分支的 commit 就被合并到主分支上,此時主分支的提交記錄如下圖所示:
git rebase?流程
# 1. 切換到主分支 main 上,其它分支的代碼將被合并到該分支上
git checkout main
# 2. 變基操作,對子分支 dev 進行變基操作,相當于將其所有的 commit 都提交到主分支(當前所在的分支)上去
git rebase dev
# 3. 變基操作成功后,此時主分支上的代碼選喲推送到遠程代碼倉中
git push
【注意事項】
git rebase?的分支是基于目標分支進行創(chuàng)建的。git rebase?可能會遇到?jīng)_突需要解決
但是如果是多個人在維護主分支main時,自己維護分支dev1,如果自己分支超前main分支,r如果想將dev1分支修改的內(nèi)容合并到main分支
則最好先同步一下main分支,即將dev1變基onto main
操作:
git checkout dev1
git rebash main
git push
此時dev1和main分支同基
然后將dev1修改合并到main分支
操作:
git checkout main
git merge dev1
git push
多人維護同一分支解決沖突安全方法
案例:A和B同時在一個分支開發(fā)
A:先于B提交
B想同步A的提交并解決與自己修改的沖突
1、先創(chuàng)建臨時分支 git checkout -b dev-a
2、提交到本地,無需傳到遠端 git add . git commit
3、然后切換到原始分支,相當于原始分支未改動 git checkout dev-test
4、在本地dev-test分支拉取遠端修改,此時本地dev-test與遠端dev-test已經(jīng)同步 git pull
5、切換到臨時創(chuàng)建的分支 git checkout dev_a
6、進行變基操作,讓臨時分支與dev-test分支同步,同時需要解決沖突 git rebase dev-test
7、將臨時分支合并到開發(fā)分支dev-test,并刪除臨時分支
git checkout dev-test
git merge dev_a
git branch -d dev_a
常見的操作命令:
參考:
Git 常用基本命令使用詳細大全_git命令行-CSDN博客
git常用命令總結(jié)_git_一頭小驢-GitCode 開源社區(qū) (csdn.net)
https://www.cnblogs.com/Jeffxu/p/17968795
Git教程學(xué)習(xí):07 打標簽_git 打標簽-CSDN博客
柚子快報邀請碼778899分享:git 常用操作指令
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。