git和github使用

Git

主要概念:本地庫邮偎、暫存區(qū)index file犹撒、工作區(qū)working tree

提交:工作區(qū)add→暫存區(qū)commit→本地庫

回退:本地庫(soft)→暫存區(qū)(mix)→工作區(qū)(hard)

一、代碼托管中心

內網托管:搭建gitlab服務器

外網托管:github、碼云

二症概、本地庫和遠程庫

2.1.團隊內部開發(fā)

本地庫 push 到遠程庫

遠程庫 clone 到本地庫

2.2.跨團隊開發(fā)

遠程庫A fork 到遠程庫B

A組把自己開發(fā)的push和clone到遠程庫A

B組把自己開發(fā)的push和clone到遠程庫B

然后遠程庫B pull request →審核→merge到遠程庫A

三、起步

3.0.建立遠程連接

這里用碼云作為遠程倉庫

3.0.1首先在碼云創(chuàng)建一個賬號

3.0.2添加一個SSH公鑰(方法可以參考碼云的提示)

圖片.png

3.0.3在git本地倉庫SSH公鑰

查看本地ssh密鑰.png
//查看本地ssh密鑰命令早芭,如果沒有設置過會顯示No such file or directory
$ cd ~/.ssh
$ ls
//然后會像上圖那樣顯示
//如果沒有彼城,就來創(chuàng)建新的密鑰,這里的email地址是碼云或github的賬號
$ ssh-keygen -t rsa -C "your_email@youremail.com"

Creates a new ssh key using the provided email # Generating public/private rsa key pair.

//其他系統(tǒng):
Enter file in which to save the key (/home/you/.ssh/id_rsa):
//windows:
Enter file in which to save the key(/c/Users/xxx/.ssh/id_rsa):

完成后,大概是這個樣子的

Your identification has been saved in /c/Users/xxx/.ssh/id_rsa.
Your public key has been saved in /c/Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:g0Bjal6pyev27yb6lSofUUk7CcB3zVasdLqQDfR3rzk xxxx@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|   .=..oo= o.    |
|   +.o..*o= o    |
|  o +. .oBo+.    |
| + + . oo.+. .   |
|  =   o S. .  .  |
|   .   . o.  o   |
|  .   . o   E    |
| .. + .+     .   |
| ..o.O*          |
+----[SHA256]-----+

3.0.4添加公鑰到你的遠程倉庫

1募壕、查看生成公鑰

//輸入命令后调炬,顯示一串SSH-RSA碼,復制到github里面
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZEE8qJA8jYY7NqcoQWwjcvdQuwDG4RHWDKZzpz5bZ1byJRAQA8vxcRJ5mqrwlYcISErXUcsfqjGkLbgXJMPSR7ggwdDgEBcpBXQE+eXFIafgZfUS5ZsCkNXtKJ3RXVdAkQGb6krVUbk7Bll7N+ygyZv1iH0s6GtKlz4uNicpyUZY+lv0BewWTAy+Dm0EpFh8FAIWufhpYpY8MvPf23RaZEMSaB8hDo+Ep4bLHNM5D4SKU6eggEARQYlI3m/f8kHZm600bEoJxwsxM03Qmqcr/kbKFC/TiJWVm4UiLj1DKOiHrtYUBaqx0m0cbtb6LYjoAedtKksLmqJg/sOe0CKEz xxx@qq.com

2舱馅、設置遠程倉庫的SSH公鑰
github:登陸你的github帳戶缰泡。點擊你的頭像,然后 Settings -> 左欄點擊 SSH and GPG keys -> 點擊 New SSH key
碼云:碼云賬戶代嗤,點擊你的頭像棘钞,然后左側導航欄SSH。
3干毅、然后你復制上面的公鑰內容宜猜,粘貼進“Key”文本域內。 title域硝逢,自己隨便起個名字姨拥。
4、點擊 Add key渠鸽。
完成以后叫乌,驗證下這個key是不是正常工作:
5、查看公鑰能不能用

//ssh -T選項的意思為徽缚,不分配偽終端
$ ssh -T git@github.com
$ ssh -T git@gitee.com
//顯示下面的字符串說明連接OK
$ Hi xxx! You've successfully authenticated, but GitHub/gitee does not provide shell access.

3.0.5.創(chuàng)建一個倉庫

圖片.png

如碼云提示的操作憨奸,不過因為我放git的文件夾換過位置,顯示證書錯誤凿试,所以要多一步操作

$ git config --global user.name "用戶名"
$ git config --global user.email "xxx@xxx.com"
//把遠程倉庫地址賦值給origin膀藐,origin = 'https://.........'
$ git remote add origin https://gitee.com/用戶名/項目名.git
//關閉證書校驗
$ git config --system http.sslverify false
//更新證書位置,一般是放在git里面
$ git config --system http.sslcainfo "D:/ProgramFiles/Git/mingw64/ssl/certs/ca-bundle.crt"
//把本文件夾的git倉庫推送至遠程倉庫
$ git push -u origin master
//第一次使用上一行的代碼會讓你輸入碼云或github賬號密碼红省。

3.0.6[可選]修改git的remote url

使用命令 git remote -v 查看你當前的 remote url

$ git remote -v
origin https://github.com/someaccount/someproject.git (fetch)
origin https://github.com/someaccount/someproject.git (push)
origin  https://gitee.com/someaccount/someproject.git (fetch)
origin  https://gitee.com/someaccount/someproject.git (push)

如果是以上的結果那么說明此項目是使用https協(xié)議進行訪問的(如果地址是git開頭則表示是git協(xié)議)

你可以登陸你的碼云/github额各,就像本文開頭的圖例,你在上面可以看到你的ssh協(xié)議相應的url吧恃,類似:


圖片.png
項目SSH(github).png

復制此ssh鏈接虾啦,然后使用命令 git remote set-url 來調整你的url。

git remote set-url origin git@github.com:someaccount/someproject.git

然后你可以再用命令 git remote -v 查看一下痕寓,url是否已經變成了ssh地址傲醉。

然后你就可以愉快的使用git fetch, git pull , git push,再也不用輸入煩人的密碼了

3.0.7git保存遠程地址

#查看本文件夾底下呻率,git保存的遠程倉庫地址(github地址硬毕、碼云地址)
$ git remote -v
#添加遠程地址,別名為origin
$ git remote add origin https://github.com/someaccount/someproject.git
$ git remote add origin https://gitee.com/someaccount/someproject.git

3.0.8PUSH到遠程倉庫

#push master分支到origin地址
$ git push origin master

3.0.9Clone到本地倉庫

#克隆到本地
$ git clone https://github.com/skyloyal/JavaProject.git

3.0.10邀請開發(fā)人員

github登陸后礼仗,在需要更多開發(fā)人員的項目底下吐咳。

邀請開發(fā).png

3.0.11.pull到本地

#抓取master分支
$ git fetch origin master
#切換到抓取下來的master分支
$ git checkout 'origin/master'
#合并
$ git merge origin/master
#pull = fetch + merge
$ git pull origin master

3.1.基本操作

//任何項目開始都先初始化本地git倉庫
$ git init
//展示文件夾內文件數目
$ ll
//創(chuàng)建文件夾wechat
$ mkdir wechat

3.2.設置簽名

3.2.1.形式如下

用戶名:XX

Email地址:XXXXX@xx.com

作用:區(qū)分不同開發(fā)人員的身份

辨析:這里設置的簽名和登陸遠程庫(github)的賬號密碼沒有任何關系逻悠。

3.2.2.設置簽名命令

項目級別/倉庫級別:僅在當前本地庫范圍內有效

信息保存位置:~/.gitconfig文件

設置簽名
$ git config user.name XXX
$ git config user.email XXXXX@xx.com

系統(tǒng)用戶級別:登錄當前操作系統(tǒng)的用戶范圍

$ git config --global user.name XXX
$ git config --global user.email XXXXX@xx.com

優(yōu)先級:就近原則,項目級別優(yōu)先于系統(tǒng)用戶級別韭脊,二者都有時童谒,采用項目級別的簽名

如果只有系統(tǒng)用戶級別的簽名,就以系統(tǒng)用戶級別的簽名為準

不允許都沒有系統(tǒng)級或項目級簽名.

3.3.提交更改

下面以新建good.txt為例子

#查看工作區(qū)沪羔、暫存區(qū)狀態(tài)
$ git status
#添加到本地暫存區(qū)
$ git add 
$ git add -all
#撤出本地暫存區(qū)
$ git rm --cached good.txt
#提交暫存區(qū)到本地庫饥伊,提交后會去到vim編譯器,要寫一段注釋
$ git commit
#用一條命令添加暫存區(qū)蔫饰、提交
$ git commit -a
#帶注釋提交
$ git commit -m "it is the node" good.txt

3.4.提交記錄

#顯示所有提交琅豆,顯示作者author、記錄date篓吁、記錄node茫因,記錄hash。
$ git log
#分行顯示(完整)
$ git log --pretty=oneline
#分行顯示(哈希值最后7位越除,提交注釋)
$ git log oneline
#分行顯示(哈希值最后7位,提交注釋外盯,head指針移動步數)
$ git reflog

3.5.版本回退

#{9a9ebe0}是提交記錄的后7位哈希值摘盆,版本回退命令
$ git reset --hard 9a9ebe0
#按相對步數回退
#一步
$ git reset --hard HEAD^
#兩步
$ git reset --hard HEAD^^
#三步
$ git reset --hard HEAD^^^
#回退三步
$ git reset --hard HEAD~3

3.6.刪除

#刪除操作
$ rm good.txt
#把操作放到暫存區(qū)
$ git add good.txt
#提交到本地庫
$ git commmit -m "delete" good.txt
#如果刪除了想要回來,就可以用版本回退命令恢復

3.7.比較文件差異

#將工作區(qū)中的文件和暫存區(qū)進行比較
$ git diff good.txt
#將工作區(qū)中的文件和本地庫歷史記錄比較
$ git diff HEAD^ good.txt
#不帶文件名比較多個文件

四饱苟、分支管理

剛開始的主干是master

分支大樣圖.png

4.0.查詢分支

$ git branch -v

4.1.新建分支

#新建分支hot_fix
$ git branch hot_fix

4.2.切換分支

#切換分支hot_fix
$ git checkout hot_fix

4.3.接受分支

#在主干上孩擂,接受分支
$ git checkout master
$ git merge hot_fix

4.4.沖突的解決

第一步:編輯文件,刪除特殊符號

第二步:把文件修改到滿意的程度箱熬,保存

第三步:git add 文件名

第四步:git commit -m ""

五类垦、基本原理

git的文件管理機制

git把數據看作是小型文件系統(tǒng)的一組快照,同一個文件城须,做了變化蚤认,新的文件就會包含舊文件的指針。

每一個提交對象都會有一個hash值糕伐,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末砰琢,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子良瞧,更是在濱河造成了極大的恐慌陪汽,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褥蚯,死亡現場離奇詭異挚冤,居然都是意外死亡,警方通過查閱死者的電腦和手機赞庶,發(fā)現死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門训挡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澳骤,“玉大人,你說我怎么就攤上這事舍哄⊙缌梗” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵表悬,是天一觀的道長弥锄。 經常有香客問我,道長蟆沫,這世上最難降的妖魔是什么籽暇? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮饭庞,結果婚禮上戒悠,老公的妹妹穿的比我還像新娘。我一直安慰自己舟山,他們只是感情好绸狐,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著累盗,像睡著了一般寒矿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上若债,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天符相,我揣著相機與錄音,去河邊找鬼蠢琳。 笑死啊终,一個胖子當著我的面吹牛,可吹牛的內容都是我干的傲须。 我是一名探鬼主播蓝牲,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泰讽!你這毒婦竟也來了搞旭?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤菇绵,失蹤者是張志新(化名)和其女友劉穎肄渗,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體咬最,經...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡翎嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了永乌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惑申。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡具伍,死狀恐怖,靈堂內的尸體忽然破棺而出圈驼,到底是詐尸還是另有隱情人芽,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布绩脆,位于F島的核電站萤厅,受9級特大地震影響,放射性物質發(fā)生泄漏靴迫。R本人自食惡果不足惜惕味,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玉锌。 院中可真熱鬧名挥,春花似錦、人聲如沸主守。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽参淫。三九已至救湖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黄刚,已是汗流浹背捎谨。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工民效, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留憔维,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓畏邢,卻偏偏與公主長得像业扒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舒萎,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內容