Git使用

猴子都能懂的git

https://backlog.com/git-tutorial/cn/

git和SVN的簡單對比
SVN必須聯(lián)網(wǎng)才能正常工作,git支持本地版本控制工作
分布式和集中式的最大區(qū)別在于:在分布式下
開發(fā)者可以本地提交
每個開發(fā)者機器上都有一個服務(wù)器的數(shù)據(jù)庫
git的工作原理,
工作區(qū)(Working Directory):倉庫文件夾里除.git目錄以外的內(nèi)容
版本庫(Repository):.git目錄,用于存儲記錄版本信息

暫緩區(qū)(stage)
分支(master):git自動創(chuàng)建的第一個分支
HEAD指針:用于指向當(dāng)前分支

git add :把文件修改添加到暫存區(qū)
git commit :把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支

SourceTree
下載地址:http://www.sourcetreeapp.com/download

git常用指令

git help :git指令幫助手冊
查看其他指令的做法:git help 其他指令

git init : 初始化本地倉庫
git config :git的配置信息相關(guān)(修改的是.git/config文件)
配置用戶名:git config user.name 用戶名(用于跟蹤修改記錄)
配置郵箱:git config user.email 郵箱(用于多人開發(fā)間的溝通)
查看配置信息:git config –l
編輯配置信息:git config –e(用vim編輯,:wq是退出vim編輯器)
設(shè)置指令的別名:git config alias.別名 原指令名稱
設(shè)置帶參數(shù)指令的別名:git config alias.別名 “原指令名稱 參數(shù)”
將此設(shè)置應(yīng)用到整個系統(tǒng)中:git config ––gloabal
----

git status :查文件的狀態(tài)
查看某個文件的狀態(tài):git status 文件名
查看當(dāng)前路徑所有文件的狀態(tài):git status

git log :查看文件的修改日志
查看某個文件的修改日志:git log 文件名
查看當(dāng)前路徑所有文件的修改日志:git log
用一行的方式查看簡單的日志信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一個整數(shù))

git reflog 簡單log

git diff :查看文件最新改動的地方
查看某個文件的最新改動的地方:git diff 文件名
查看當(dāng)前路徑所有文件最新改動的地方:git diff
------------

git init :初始化一個空的本地倉庫,生成一個.git目錄,用于維護版本信息
在當(dāng)前路徑初始化倉庫:git init
在其他路徑初始化倉庫:git init 倉庫路徑

git add :將工作區(qū)的文件保存到暫緩區(qū)
保存某個文件:git add 文件名
保存所有文件:git add .

git commit :將暫緩區(qū)的文件提交到當(dāng)前分支
提交某個文件到分支:git commit -m ”注釋” 文件名
保存當(dāng)前路徑的所有文件到分支:git commit -m ”注釋” 
------------
git reset :版本回退(建議加上––hard參數(shù),git支持無限次后悔)
回退到上一個版本:git reset ––hard HEAD^
回退到上上一個版本:git reset ––hard HEAD^^
回退到上N個版本:git reset ––hard HEAD~N(N是一個整數(shù))
回退到任意一個版本:git reset ––hard 版本號(版本號用7位即可)

git rm:刪除文件(刪完之后要進行commit操作,才能同步到版本庫)
------------

git clone:下載遠(yuǎn)程倉庫到本地
下載遠(yuǎn)程倉庫到當(dāng)前路徑:git clone 倉庫的URL
下載遠(yuǎn)程倉庫到特定路徑:git clone 倉庫的URL 存放倉庫的路徑

git pull:下載遠(yuǎn)程倉庫的最新信息到本地倉庫
git push:將本地的倉庫信息推送到遠(yuǎn)程倉庫

5. 備注補充
文件狀態(tài)(git status)
 > 顏色含義
     紅色: 代表被添加或者修改的文件沒有被添加到暫緩區(qū)
     綠色: 代表文件在暫緩區(qū),等待提交
 > 版本號的含義
     版本號是一個由SHA1生成的40位哈希值
     這樣做的目的是保證版本號的唯一

日志查看配置, 命令如下: 
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"

Git版本備份/分支管理

git tag -a v1.0 -m “標(biāo)記1.0版本”
git push origin v1.0
touch main.c 創(chuàng)建main.c文件
git 直接打標(biāo)簽, 通過控制head指向,來回到任一版本

> 進入文件夾后,初始化共享庫
git init ——bare

> 進入文件夾后
git clone 共享庫絕對路徑
> 進入工作區(qū),配置姓名,郵箱
git config user.name “manager”
git config user.email “manager@qq.com”      
> 給此版本打標(biāo)簽,并將標(biāo)簽上傳到共享庫
git tag -a v1.0 -m “標(biāo)記1.0版本”
git push origin v1.0

———至此,分支修復(fù)bug結(jié)束,下面合并分支———
從共享庫更新代碼到本地庫
git pull
查看當(dāng)前服務(wù)器都有哪些分支
git branch -r
切換到master分支后,將v1.0fixbug分支合并過來
git checkout master
git merge origin/v1.0fixbug -m “合并分支”
合并完成后提交到共享庫
git add .
git commit -m “合并分支”
git push
合并完成后,可以刪除共享庫的分支
git branch -r -d origin/v1.0fixbug
查看版本標(biāo)簽,至此結(jié)束!!
git tag

git push 只能提交代碼,不能連同標(biāo)記一起提交
git push origin v1.0 提交標(biāo)簽

tag指向一次commit的id,通常用來給開發(fā)分支做一個標(biāo)記
查看標(biāo)簽 : git tag
查看某兩次tag之間的commit:git log --pretty=oneline tagA..tagB
查看某次tag之后的commit: git log --pretty=oneline tagA..

5.常用命令
git show # 顯示某次提交的內(nèi)容 git show $id
git add <file> # 將工作文件修改提交到本地暫存區(qū)
git rm <file> # 從版本庫中刪除文件
git reset <file> # 從暫存區(qū)恢復(fù)到工作文件
git reset HEAD^ # 恢復(fù)最近一次提交過的狀態(tài),即放棄上次提交后的所有本次修改
git diff <file> # 比較當(dāng)前文件和暫存區(qū)文件差異 git diff
git log -p <file> # 查看每次詳細(xì)修改內(nèi)容的diff
git branch -r # 查看遠(yuǎn)程分支
git merge <branch> # 將branch分支合并到當(dāng)前分支
git stash # 暫存
git stash pop #恢復(fù)最近一次的暫存
git pull # 抓取遠(yuǎn)程倉庫所有分支更新并合并到本地
git push origin master # 將本地主分支推到遠(yuǎn)程主分支

分支的使用

一、查看有多少個分支?
    1.git branch 可以查看當(dāng)前版本庫中有多少個分支
    1.如果當(dāng)前的版本庫是空的, 那么無法查看
    2.分支前面有*號代表當(dāng)前的HEADER指針指向哪一個分支, 我們提交的代碼就會提交到指向的分支中

二、如何創(chuàng)建一個分支
    git branch 分支名稱 來創(chuàng)建一個新的分支
    在哪個分支中創(chuàng)建了新的分支, 那么創(chuàng)建出來的新的分支就會繼承當(dāng)前分支的所有狀態(tài)
    例如:
    在master分支中做了兩個操作, 然后在master分支中創(chuàng)建了Dev分支
    那么創(chuàng)建出來的Dev分支就會繼承master分支中的這兩個操作
    注意點:
    一旦分支被創(chuàng)建出來之后, 分支就是獨立的, 分支之間不會相互影響

三、切換分支?
    1.通過git switch 分支名稱 來修改HEADER指針的指向
    注意點: 只要HEADER指針的指向發(fā)生了改變, 那么commit的代碼就會發(fā)生改變
    HEADER指針指向誰commit提交的代碼就提交到誰里面

四、如何將分支提交到遠(yuǎn)程服務(wù)器
    1.通過git branch -r 來查看遠(yuǎn)程服務(wù)器上有多少個分支
    2.首先需要在本地切換到新建的分支中, 然后通過git push指令提交新建的分支到遠(yuǎn)程的服務(wù)器
    git push --set-upstream origin Dev

五、如何合并分支
    可以通過 git merge 分支名稱 來合并分支
    例如:
    在master分支中執(zhí)行  git merge Dev 就代表需要將Dev分支中的代碼都合并到master分支中
    例如:
    在Dev分支中執(zhí)行 git merge master 就代表需要將master分支中的代碼都合并到Dev分支中

六、如何刪除分支
    1.可以通過git branch -d 分支名稱 來刪除本地的分支
    2.可以通過git push origin --delete 分支名稱 來刪除遠(yuǎn)程服務(wù)器的分支
1、
什么是“git cherry-pick”?
命令 git cherry-pick 通常用于把特定提交從存儲倉庫的一個分支引入到其他分支中。
常見的用途是從維護的分支到開發(fā)分支進行向前或回滾提交。

這與其他操作(例如:合并(merge)、變基(rebase))形成鮮明對比,
后者通常是把許多提交應(yīng)用到其他分支中。
小結(jié):git cherry-pick <commit-hash>

2、
如何從 git 中刪除文件,而不將其從文件系統(tǒng)中刪除?
如果你在 git add 過程中誤操作,你最終會添加不想提交的文件。
但是,git rm 則會把你的文件從你暫存區(qū)(索引)和文件系統(tǒng)(工作樹)中刪除,這可能不是你想要的。

上面意思是,git reset <paths> 是 git add <paths> 的逆操作。

3、
什么時候使用“git rebase”代替“git merge”?
這兩個命令都是把修改從一個分支集成到另一個分支上,它們只是以非常不同的方式進行。
參考:
http://blog.jobbole.com/114297/
https://blog.csdn.net/pushiqiang/article/details/79068449
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000
Vim編輯器簡單使用.jpeg
命令模式:等待編輯命令輸入;所有輸入的內(nèi)容都被當(dāng)做命令來執(zhí)行
插入模式:輸入的所有內(nèi)容都被顯示,并被當(dāng)做文件內(nèi)容處理
命令行模式:執(zhí)行待定命令(保存文件并退出vim : wq   ; 強制退出不保存: q! )
git常用命令速查表.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 Git是什么 官方話:Git是一個免費的開源分布式版本控制系統(tǒng),旨在快速高效地處理從小型到大型項目的所有事務(wù)...
    梅先森森森森森森閱讀 2,109評論 1 3
  • git init .初始化,表示把這個文件變成Git可以管理的倉庫。初始化后打開隱藏的文件可以看到有一個.git文...
    wzhixin閱讀 1,004評論 0 0
  • Git是什么 官方得話:Git是一個免費開源分布式得版本控制系統(tǒng),快速得處理從小型到大型得所有事務(wù)。能幫我們更好的...
    Zane_Samuel閱讀 613評論 1 0
  • 世界很遠(yuǎn) ~巴赫曼世界很遠(yuǎn),從一個國家到另一個國家的道路漫長,世界上的地方很多,我卻都認(rèn)得,我在所有的高塔上,見過...
    劉博奇閱讀 143評論 0 0
  • 加入007已經(jīng)好幾個月了,每次寫東西的時候都是發(fā)愁,我該怎么辦呢,我難道要一直這樣下去嗎?還是我一直沒有認(rèn)真的...
    悅享同學(xué)閱讀 199評論 0 0

友情鏈接更多精彩內(nèi)容