Git 操作

推薦廖雪峰的Git教程

本地倉庫

Git 六行配置

git config --global user.name 你的英文名
git config --global user.email 你的郵箱
git config --global push.default simple
git config --global core.quotepath false
git config --global core.editor "code --wait"
git config --global core.autocrlf input

注意:

  • 英文名和郵箱的設置跟 GitHub 沒有關系。
    可以跟 GitHub 的用戶名和郵箱保持一致,
    也可以不一致。建議保持一致。
  • 我們需要保證 code 是可以直接在命令行執(zhí)行的。如果不能執(zhí)行,就需要安裝 VSCode 并配置 PATH。我的 PATH 里添加的內(nèi)容是E:\Vscode\Microsoft VS Code\bin

配置完成后進行驗證:

git只是一個命令,和ls,cp同類。
整個命令框叫Bash 。
git解決的問題:

  • 版本控制,隨時退回到某個版本。
  • git init 命令創(chuàng)建.git目錄,用于快照。
  • git add 路徑,路徑可以是相對路徑,絕對路徑,. 和 * 。

    選擇性的添加目錄中的文件到git倉庫。
  • .gitignore 用來描述哪些變動是不需要提交的,常見的有node_modules; .DS_Store; .idea; .vscode 。

    創(chuàng)建.gitignore文件,在里邊寫入不行提交的文件的文件名。
  • git commit -m "版本號" (注意是英文引號)

    修改代碼后

    git commit -v 后會彈出vscode
    關閉git后會顯示。

    推薦git commit -v(在編輯器里加commit,方便寫的更詳細)而不是git commit -m+字符串(如果有空格,字符串要加引號)。
    后續(xù)提交的時候為了省事,可以先git add .提交當前目錄,再git commit -v 。
    重頭戲來啦!?。。。。。。。。。。。。。?/strong>
    git reset --hard xxxxxx恢復到提交過的任意一個版本。(前六位,其實前四位就可以了,只要這個號碼不唯一)在各個版本之間跳轉(zhuǎn)。一定要在執(zhí)行這個操作前將所有代碼commit,不然沒有commit的代碼就會被刪掉
    git log(給別人看的) 查看當前版本和之前提交的版本,git reflog(私有的日記) 查看完整的提交和版本變化過程。

    各個版本的壓縮文件存在.git的object里邊。
    只有commit 會影響.git倉庫。
    add 和 commit 的關系
    add就像找女朋友,可以撤銷。而commit就是結(jié)婚。

總結(jié):

git init 創(chuàng)建一個倉庫
git add 路徑 標記需要提交的文件
.gitignore描述哪些文件是不需要提交的

用來創(chuàng)建拷貝
git commit -m 字符串
git commit -v(推薦)

git reset --hard xxxxxx用來切換版本
git reflog用來查看所有歷史
git不會重復拷貝,創(chuàng)建新版本時只會拷貝之前沒拷貝的修改過的,減輕了工作量。


上邊的使用場景是想要回退到之前的版本,現(xiàn)在我們考慮第二個使用場景,兩條線同時開發(fā)。


git branch x 創(chuàng)建分支
在哪個分支提交代碼就出現(xiàn)在哪個分支。
git checkout 分支名 切換分支



場景三
兩個版本合并,一個在上一個在下。
合并的時候出現(xiàn)了沖突。

用鼠標自行刪減。

或者使用vim
小于號<<<<<<<封頂
大于號>>>>>>>封底

解決沖突的辦法
首先merge時提示有沖突

  • git status(或者git status -sb(summary branch),更容易看懂)查看哪些文件沖突

    UU表示兩邊都改了

  • 依次打開每個沖突文件,搜索"===="在上下兩部分中選擇要保留的代碼

    ,刪除無用的代碼和====;<<<<<<<;>>>>>>>;

  • git add 對應文件
  • 再次git status -sb 解決下一個文件的沖突
  • 直到?jīng)]有沖突后,運行git commit(不需要參數(shù))

補充:git branch -d x刪除分支



回顧

刪除也是要add的

GUI操作:當在vscode新建一個文件,可以直接在vscode里提交。

然后輸入修改信息,按回車。
還有一種方法提交修改的文件
ctrl + shift + p調(diào)出命令行輸入git add
然后git commit

如果是提交新創(chuàng)的文件
記得勾選

遠程倉庫

配置

一路回車就好
在github上添加剛剛生成的公匙。
用ssh -T git@github.com測試是否成功

總結(jié):這個過程就像是私匙放在個人電腦,公匙放在Github賬號上,上傳代碼用私鑰加密,Github用公鑰解密,只有配對時才能成功。

上傳和下載

上傳
創(chuàng)建一個新倉庫后,記得這里要設置成SSH,不建議用HTTPS(每次都要輸入一次密碼,很麻煩)!?。。。?!

打開Vscode,在終端輸入這段代碼,

如何上傳其他分支?

  • 法一:git push origin x:x
  • 法二:git checkout x3
    git push -u origin x

下載
git clone + SSH/HTTPS地址
下載自己的代碼可以用SSH,別人的代碼要用HTTPS!
下載自己的代碼時,如果是不同機器,則要上傳新的ssh key(公鑰共享,私鑰一機一key)


注意:下載下來的是一個完整的倉庫,同樣可以git checkout+分支名 切換分支。(可以只下載某個分支,但是命令很難記,不推薦)
然后,基于下載的倉庫,可以繼續(xù)編輯。[git add / git commit / (git pull) / git push]
注意git pull不是必須的,只有在遠程倉庫的代碼變動后(你的隊友改了代碼),才需要git pull
遠程倉庫只是本地倉庫的備份,所有倉庫都要先commit到本地倉庫,然后push到遠程。
幾種git clone形式

  • git clone git@?/xxx.git
    會在當前目錄下創(chuàng)建一個xxx目錄
    xxx/.git是本地倉庫
    一般直接接一句cd xxx
  • git clone git@?/xxx.git yyy
    會在本地新建名為yyy的目錄,該命令通常用于修改下載的目錄名,記得cd yyy
  • git clone git@?/xxx.git .
    注意最后有個 . ,該命令不會新建目錄,代碼和.git文件灌溉到當前目錄,當前目錄一開始最好是個空目錄。

git clone 下載速度慢如何解決?(親測有效,很????)

https://github.com/sun-shadow/Surf_the_Internet/blob/master/命令行篇.md


下邊的內(nèi)容不常用

一個本地倉庫同時上傳到兩個遠程倉庫
只需要兩句話

  • git remote add repo2 git@xxxxxx
  • git push -u repo2 main

高級操作

使用bash alias簡化命令(gst,ga,gc,gl,gp)

在用戶目錄中的.bashrc文件中寫入如下內(nèi)容

大功告成~
同理可以加入其他命令,但是記住每次添加完了要source一下。
美化git log

然后code ~/.bashrc,添加這句話到最后一行。

alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | less"

接著source一下,重啟終端glog即可


美化歷史命令
git rebase -i xxxxxx
xxxxxx為要美化的前一個號。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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