前言
- Git是一個開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或大或小的項目。
- Git是Linus Torvalds為了幫助管理Linux內核開發(fā)而開發(fā)的一個開放源代碼的版本控制軟件。
- Git與常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本庫的方式,不用服務器端軟件支持,各個客戶端都有一個最新版本信息,當服務器故障了,各個客戶端都不會受到影響。# 一、pandas是什么?
示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務而創(chuàng)建的。
一、初始化
設置用戶名
git config --global user.name "Yaepii Jia"
設置郵箱
git config --global user.email yaepii@126.com
保存用戶名和密碼
git config --global credential.helper store
查看配置信息
git config -l
–global關鍵字:全局配置,所有倉庫生效
–system關鍵字:系統(tǒng)配置,對所有用戶生效
二、新建倉庫
倉庫就是用來存放和管理代碼的一個容器,新建倉庫就是把一個電腦中的文件夾目錄變成git可以管理的倉庫就可以了。
方式一:在電腦本地創(chuàng)建一個倉庫
git init [倉庫名]
下圖中的.git文件記錄了倉庫的信息,這是一個隱藏文件夾,需要用ls -a命令才能顯示,進入到這個目錄,可以使用ls -altr命令顯示詳細信息,當刪除.git文件夾,倉庫也會被刪除。
方式二:從遠程克隆一個已經存在的倉庫
git clone <倉庫地址>
三、工作區(qū)域和文件狀態(tài)
工作區(qū)域分為:
- 工作區(qū):本地文件夾目錄,實際操作的目錄
- 暫存區(qū):保存即將提交到git上的修改內容
- 本地倉庫:存儲代碼和版本信息
工作流程一般是:將工作區(qū)的文件先添加到暫存區(qū),然后通過提交命令一次性提交到本地倉庫。
文件狀態(tài):
四、添加和提交文件
查看當前倉庫的狀態(tài):
git status
將文件添加到暫存區(qū),等待提交:
git add <文件名>
git add . #將所有文件添加到暫存區(qū)
取消暫存(從版本庫和暫存區(qū)中刪除文件,但不在工作區(qū)刪除文件):
git rm --cached <file_name>
將文件提交到倉庫中:
git commit -m "提交信息"
查看提交記錄:
git log
git log --oneline #查看簡潔版提交信息
五、回退到之前版本
命令:git reset --param <版本id>
三個參數(shù):
- soft:保留工作區(qū)和暫存區(qū)所有內容
- hard:刪除工作區(qū)和暫存區(qū)所有內容
- mixed:默認,刪除暫存區(qū)內容,保存工作區(qū)內容
git reset HEAD^ ##HEAD表示版本的指針,指向當前版本,^表示上一版本
查看操作的歷史記錄,可以回退到之前某個版本號:
git reflog
六、查看文件差異
查看文件在(不同區(qū)域、不同版本、不同分支)之間的差異,用得不多,因為以后開發(fā)主要是在圖形化工具中使用git。
git diff #比較工作區(qū)和暫存區(qū)文件的差異(默認)
git diff HEAD #比較工作區(qū)和版本庫文件的差異
git diff --cached #比較暫存區(qū)和版本庫文件的差異
git diff <版本1的ID> <版本2的ID> [file_name] #比較兩個版本文件的差異
git diff HEAD~n HEAD [file_name] #比較當前版本和上n個版本文件的差異
七、從版本庫中刪除文件
使用這個命令,會將文件從工作區(qū)和暫存區(qū)同時刪除,然后需要再提交一下,更新版本庫中內容
git rm <file_name>
如果想只在暫存區(qū)刪除一個文件,而工作區(qū)不刪除,可以加上–cached參數(shù)
git rm --cached <file_name>
八、.gitignore忽略文件
在.gitignore文件中添加一些文件或文件夾(比如:日志文件.log、編譯中間文件、臨時文件等),可以使得在提交時,將.gitignore中的文件被忽略,不提交。
但是當前.gitignore中的文件不能是已經被添加到版本庫中的文件,當這些文件發(fā)生修改時,git還是會檢測到其內容的修改。
匹配規(guī)則:從上到下逐行匹配,每一行表示一個忽略模式,官網匹配規(guī)則
提示:github上提供了常用語言的忽略文件模板。
九、github遠程倉庫–SSH配置和克隆倉庫
在本地創(chuàng)建一個ssh秘鑰:
ssh-keygen -t rsa -C "your_email@example.com" -b 4096
- -t 指定密鑰類型,默認是 rsa ,可以省略。
- -C 設置注釋文字,比如郵箱。
- -f 指定密鑰文件存儲文件名,一般默認,讓存儲到默認路徑以及默認文件名
- -b指定密鑰的大小,默認也可以
它會要求輸入Enter file in which to save the key (/home/stephenzhou/.ssh/id_rsa)
這里是要求輸入秘鑰的文件名,我們可以回車使用默認文件名,但當之前已經創(chuàng)建過秘鑰文件,應該再自己設置一個,最好不要用默認。
然后會要求你輸入密碼,這個密碼是在提交時輸入的,和登錄密碼不一樣,輸入完成后會產生兩個文件:id_rsa是私匙,id_rsa.pub是公匙,id_rsa不能告訴任何人,只有公鑰可以,ssh采用的是非對稱加密。
然后再github中,點擊個人頭像,選擇settings,添加ssh公鑰,將pub文件的內容復制進來,然后自定義一個名字,點擊添加,輸入登錄密碼后就完成了添加。
然后在本地端使用git clone命令就可以拷貝某一個項目到本地文件夾下(不需要git init初始化倉庫,直接在一個普通文件夾下git clone即可)
git clone git@github.com:xxxxx.git
本地倉庫和遠程倉庫是兩個地方,在本地倉庫進行修改后,遠程倉庫不會同步修改內容,需要一種機制將它們之間關聯(lián)起來,這里用到兩個命令:git pull(拉取:將遠程倉庫的修改同步到本地)git push(推送:將本地倉庫的修改同步到遠程倉庫)
cd remote-repo_name
vim hello.txt
git add .
git commit -m "first commit"
git push
十、關聯(lián)本地倉庫與遠程倉庫
一般來說當我們在本地倉庫寫完本地倉庫后,在github上創(chuàng)建了一個空的倉庫,用以下命令,將他們關聯(lián)起來:
git remote add <remote_name> <url>
remote_name:遠程倉庫的別名,一般填origin
url:遠程倉庫的git鏈接
當從github上clone下來一個倉庫后,就不用上面這行代碼了,git自動建立了本地倉庫和遠程倉庫的鏈接。
查看當前倉庫對應的遠程倉庫的別名和地址:
git remote -v
指定分支的名稱為main:
git branch -M main
將本地倉庫的main分支和遠程倉庫的main分支關聯(lián)起來**(本地倉庫提交了文件之后,push提交才能在github上顯示出來)**:
git push -u origin main
-u:將本地倉庫分支與遠程倉庫分支一起合并
從遠程倉庫拉取修改內容:
git pull <romote_name> <romote_branch>:<local_branch>
刪除遠程倉庫:
git remote rm <remote_name>
十一、分支
分支類似于版本庫中的不同版本,可以獨立存在和提交,分支可以使得一個項目的各個模塊實現(xiàn)獨立開發(fā)與測試,提高了整體項目的工作效率。
查看當前倉庫的所有分支:
git branch
創(chuàng)建一個新的分支:
git branch <branch_name>
切換分支:
git checkout <branch_name>
但是使用這個命令切換分支可能會存在一些問題:因為checkout不僅可以切換分支,還有恢復文件的功能,當分支名和文件名相同時,就會出現(xiàn)歧義,默認會切換分支。
語義明確的切換分支:
git switch <branch_name>
切換回main分支,使用ls命令發(fā)現(xiàn),沒有dev.txt類型的文件夾,這是因為在dev分支進行了修改還沒有合并到main分支中。
將不同的分支合并到當前的分支中,當前分支為目標分支:
git merge <被合并的分支名>
合并后會自動進行一次提交,Windows下會使用默認的提交信息,使用以下命令可以修改提交信息,也可以在執(zhí)行命令時加上-m參數(shù):
git commit --amend
在命令行中查看分支圖:
git log --graph --oneline --decorate --all
刪除已完成合并的分支:
git branch -d <branch_name>
如果這個分支沒有被合并,需要用-D參數(shù)進行強制刪除:
git branch -D <branch_name>
十二、解決合并沖突
如果兩個分支修改了同一個文件的同一行代碼,就會發(fā)生合并沖突。
創(chuàng)建feat分支,并在feat分支下對main1.txt文件進行修改,然后提交:
git branch feat
git switch feat
vim main1.txt
git commit -am "feat:1" #加上-a參數(shù)可以同時完成暫存和提交兩個動作
返回main分支,然后在main分支下對main1.txt文件進行修改,然后提交:
git switch main
vim main1.txt
git commit -am "feat:1" #加上-a參數(shù)可以同時完成暫存和提交兩個動作
合并兩個分支,提示自動合并失?。?/p>
git merge <被合并的分支名>
可以使用git status查看沖突:
這時就需要手動修改文件內容,解決沖突,也可以使用以下命令終止合并:
vim main1.txt
git commit =am "merge conflict" #修改后再次提交
git merge --abort #終止合并
回退和rebase
rebase中文意思是“變基”,也是用來整合分支的,可以在任意分支上使用rabase命令整合分支,整合完都是一條直線,但順序會有所不同:
- 如果在dev分支上使用rebase命令,dev分支的提交會整合到main分支后面
- 如果在main分支上使用rebase命令,main分支的提交會整合到dev分支后面
恢復已合并的分支:
git checkout -b <branch_name> <branch_id>
切換到dev分支,執(zhí)行命令進行rebase合并:
git switch dev
git rebase main
切換到main分支,執(zhí)行命令進行rebase合并:
git switch main
git rebase dev
Merge合并:
- 優(yōu)點:不會破壞原分支的提交歷史,方便回溯和查看
- 缺點:會產生額外的提交節(jié)點,分支圖比較復雜
Rebase合并:
- 優(yōu)點:不會新增額外的提交記錄,形成線性歷史,比較直觀和干凈
- 缺點:會改變提交歷史,改變了當前分支branch out的節(jié)點,避免在共享分支中使用。
其他命令
1.打標簽
給當前的提交打上標簽,通常用于版本發(fā)布:
git tag <tag_name>
2.儲藏當前工作現(xiàn)場
在開發(fā)過程中,在一個分支開發(fā)新的功能,還沒開發(fā)完畢,做到一半時有反饋需要處理緊急bug,但是新功能開發(fā)了一半又不想提交,這時就用到了stash命令,儲藏當前工作現(xiàn)場:
git stash save “message” | 將當前工作現(xiàn)場存儲到堆棧中 |
---|---|
git stash list | 查看所有stash |
git stash pop | 恢復最近一次stash,并在list中刪除這次stash |
git stash pop stash@{n} | 恢復指定的stash,stash@{0}表示最近的stash |
git stash apply n | 恢復指定的stash,但不會再list中刪除 |
git stash drop stash@{n} | 在list中刪除指定的stash |
git stash clear | 刪除所有stash |
3.git pull 和 git fetch
- git fetch是將遠程主機的最新內容拉到本地,用戶在檢查了以后決定是否合并到工作本機分支中。
- git pull 則是將遠程主機的最新內容拉下來后直接合并,即:git pull = git fetch + git merge,這樣可能會產生沖突,需要手動解決。
git fetch用法:
git fetch <romote_name> #將某個遠程倉庫的更新全部取回本地
git fetch <romote_name> <branch_name> #將某個遠程倉庫的某個分支更新取回本地
git pull用法等于:
git fetch <romote_name> <branch_name> #將某個遠程倉庫的某個分支更新取回本地
git merge FETCH_HEAD #將拉取下來的最新內容合并到當前所在的分支中
git pull用法:
git pull <romote_name <remote_branch_name>:<local_branch_name>
一般工作流程:
git fetch #代碼拉取到本地之后
git branch #查看分支
git switch <remote_branch_name> #切換到遠程分支
注意
git add.時出現(xiàn)警告:LF will be replaced by CRLF the next time Git touches it
CR為回車符, LF為換行符。Windows結束一行用CRLF, Mac和Linux用LF。
與core.autocrlf參數(shù)有關:
false表示取消自動轉換功能。適合純Windows
true表示提交代碼時把CRLF轉換成LF,簽出時LF轉換成CRLF。適合多平臺協(xié)作
input表示提交時把CRLF轉換成LF,檢出時不轉換。適合純Linux或Mac
Windows平臺下默認設置為true,警告不用管它,這是合理的;Linux平臺下把這個參數(shù)設置為input即可。
設置方法:文章來源:http://www.zghlxwxcb.cn/news/detail-500046.html
git config --global core.autocrlf false/true/input
總結
推薦這個B站教程,滿滿干貨,視頻制作精簡且高質量,UP聲音好聽,沒有廢話?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-500046.html
到了這里,關于精簡版Git基礎操作(快速上手)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!