日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git使用小记

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git使用小记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 基本操作

全局配置:

?git config --global user.name xx?

?git config --global user.email xxx?

?

初始化一個倉庫:

?git init?

?

添加:

?git add "file1.txt"?

?git commit -m "添加文件1"?

?

比較:分別列出每個文件的當前內容與其最近一次提交的差異

?git diff file1 file2 file3?,工作區和暫存區的比較

?git diff --cached file1 file2 file3?,暫存區和倉庫比較

?

查看某次提交做的修改:

?git show ${commit_id}?

?

創建新倉庫 / 將已有未被管理的項目加入到某個倉庫 / 將已有已被管理的項目加入到另一個倉庫:

?

?

2. 分支管理

創建分支:?git branch 新分支名 [源分支名]?

刪除分支:?git branch -d 分支名?

切換分支:?git checkout 分支名?,或? ?git checkout -b 新分支名 [源分支名]?,后者為從指定源分支(默認為master)創建并切換分支

查看分支(假設遠程和本地庫中都只有master分支,遠程主機名在本地被取為origin):

  • 查看本地:?git branch?,得到master
  • 查看遠程分支:?git branch -r?,得到origin/master
  • 查看本地和遠程的所有分支:?git branch -a?,得到master和remotes/origin/master兩條記錄

取回遠程主機分支:?git fetch 遠程主機名 [分支名]?,如git fetch origin master。若沒有指定分支名則取回所有分支的更新;取回分支只是將遠程主機版本庫的更新取回,對本地分支沒影響;所取回的更新,在本地主機上要用"遠程主機名/分支名"的形式讀取

合并分支:?git merge [--no-ff] 被合并分支名?,將指定分支合并到當前分支。不含--no-ff參數時,Git執行快進式合并,直接將當前分支指向被合并分支;帶該參數時會執行正常合并,在Master分支上生成一個新節點。

關于創建與合并分支的原理,可見創建與合并分支-廖雪峰、Git分支管理策略-阮一峰

?

3. 查看狀態

命令:?git status?

查看commit記錄:?git log [--pretty=oneline] ?,這里加后面參數可以減少不相關信息的輸出,從而輸出每次修改的commit_id和注釋。如?8ebc1882fa63e8048a8ad983e9de7fa413f54580 add file test.txt?

查看commit和reset等記錄:?git reflog?,其可查看所有分支的所有操作記錄(包括commit和reset的操作及已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄),其會列出每種操作完后的commit_id串的前幾位。

查看提交圖:?git log --graph --pretty=oneline --abbrev-commit?,結果示例:

?

4. 版本回退

(參考自Git版本回退操作)

?git reset --hard commit_id?

  • 這里版本號可以不全寫會根據已寫的自動查找;
  • 除了用commit_id外,也可用特殊標記:Git用?HEAD?表示當前分支的最新版本、?HEAD^?表示上版本、?HEAD^^?表示上上版本、?HEAD~100?表示往上100個版本以此類推
  • 回退后,HEAD的指向也變成當前的最新版,可能造成往歷史版本回滾后滾不回真正的最新版,如對于版本號為1到10的十個版本,回滾到版本5后HEAD就是版本5了此時滾不回10。解決:可以通過git reflog查看版本10提交時的commit_id從而滾到最新版。

?

?

5. 遠程管理

(參考自Git遠程操作詳解-阮一峰)

Git和其他版本控制系統如SVN的一個不同之處就是有暫存區(即stage或index)的概念。

git clone

git fetch

git pull

git push

git remote

git clone?

?git clone <版本庫的網址> [<本地目錄名>]?,從遠程主機克隆一個版本庫。

  • 該命令會在本地主機生成一個目錄,不指定名稱的話與遠程主機的版本庫同名;
  • Git要求每個遠程主機都必須指定一個主機名,默認為origin,可以通過-o參數指定,如?git clone -o jQuery https://github.com/jquery/jquery.git?,此外可以通過 -b 指定克隆版本庫的指定分支。
  • git clone還支持HTTP(s)、FTP、SSH、file等協議,如?git clone file:///opt/git/project.git?

git fetch

?git fetch?用法見上面的分支管理部分。

git pull

?git pull <遠程主機名> <遠程分支名>[:<本地分支名>]?:從指定遠程主機的某個分支拉取更新并合并到指定的本地分支,如?git pull origin next:master?將origin/next分支更新拉取并合并到本地master分支。

  • 若未指定本地分支時默認為當前分支,如?git pull origin next?取回origin/next分支并與當前分支合并,相當于 git fetch origin/next、git merge origin/next兩步操作。
  • 若當前分支與遠程分支存在追蹤關系,git pull就可以省略遠程分支名,如git pull origin。
    • 在git clone時所有本地分支默認與遠程主機的同名分支,建立追蹤關系,也即本地的master分支自動"追蹤"origin/master分支。
    • Git也允許手動建立追蹤關系,如git branch --set-upstream master origin/next指定master分支追蹤origin/next分支。
  • 若當前分支只有一個追蹤分支,連遠程主機名都可以省略,如?git pull??

git push

?git push <遠程主機名> <本地分支名>:<遠程分支名>?:將本地分支的更新,推送到遠程主機,如?git push origin master:next?將本地master分支推送到遠程origin主機的next分支上。

  • 省略遠程分支名表示將本地分支推送到與之存在"追蹤關系"的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。如?git push origin master?將本地的master分支推送到origin主機的master分支。
  • 省略本地分支名表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支。如?git push origin :master?等同于?git push origin --delete master?,表示刪除origin主機的master分支。
  • 若當前分支與遠程分支之間存在追蹤關系,則本地分支和遠程分支都可以省略。如?git push origin?將當前分支推送到origin主機的對應分支。
  • 若當前分支只有一個追蹤分支,那么主機名都可以省略。如?git push?
  • 若當前分支與多個主機存在追蹤關系,則可使用-u選項指定一個默認主機,如?git push -u origin master?將本地的master分支推送到origin主機的master分支,同時指定origin為默認主機并將兩分支關聯起來,在以后的推送或者拉取時就可以不加任何參數使用git push了。?

git remote

??git remote ?:管理遠程主機名

  • 不帶參數時,列出所有遠程主機
  • -v參數,列出所有遠程主機及網址
  • ?git remote show <主機名> ?,查看某遠程主機信息
  • ?git remote add <主機名> <網址> ?,添加遠程主機
  • ?git remote rm <主機名> ?,刪除遠程主機
  • ?git remote rename <主機名> ?,重命名遠程主機

??

GtiHub不適合作為個人不愿公開的項目的托管,可以使用Gitlab。

為Gitlab賬號添加SSH key并使用Git連接Gitlab(為GitLab帳號添加SSH keys并連接GitLab):有兩種方式從Gitlab上clone項目,http和ssh。

  • 前者每次clone、push等操作都需要用戶輸入賬號的用戶名和密碼,比較麻煩;
  • 可以使用后者并配置SSH Key來避免這種麻煩。其實本質上使用SSH也需要輸入賬號和相應密碼,但我們通過生成并添加SSH Key使得在clone等操作時計算機幫我們做了身份驗證的事。(且由于生成了公鑰和私鑰并把公鑰放到了Gitlab上,它們相當于一對鎖和鑰匙,在連接時進行公鑰和私鑰的匹配,所以用SSH方式不需要知道賬號的密碼了,在生成SSH Key時提示設置的密碼也不是賬號的密碼,而是push操作時的密碼,可以不設置,這樣以后clone等操作都不需要輸入密碼了)

6. 其他

修改已經commit的comment

修改最近一次提交:

?git commit --amend ?可以修改最近一次提交的注釋信息。詳情參閱:https://stackoverflow.com/questions/179123/how-to-modify-existing-unpushed-commits

修改指定某次的歷史提交:

https://xiewenbo.iteye.com/blog/1285693

?

轉載于:https://www.cnblogs.com/z-sm/p/4203845.html

總結

以上是生活随笔為你收集整理的git使用小记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。