git本地倉庫及遠程倉庫GitHub

Get Started

  • git 六行配置
  • 本地倉庫的操作命令
  • 遠程倉庫GitHub
    • SSH key驗證身份
    • 上傳代碼
    • 下載代碼
    • 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

λ git config --global --list
5user.name=名字
user.email=郵箱
push.default=simple
core.quotepath=false
core.editor=code --wait
core.autocrlf=input

本地倉庫的操作命令

git就是一個命令。
git是一個分布式版本控制系統(tǒng)。與之前使用過的集中式版本控制svn不同的是git是把代碼倉庫完整地鏡像下來,包括完整的歷史記錄。
git是對文件的快照,而不是差分。
在用過之后就會發(fā)現(xiàn)git的分支更加簡便,靈活。

之前沒用過git,有點好奇,然后再網(wǎng)上發(fā)現(xiàn)這里的git說明十分詳細:
https://git-scm.com/book/zh/v2

git指令

  • git init:會創(chuàng)建.get目錄(就是本地目錄),用來容納你的代碼快照

  • git status
    ○ 查看當(dāng)前文件狀態(tài)(是否提交)

  • git add 路徑
    ○ 選擇那些變動時需要提交的,路徑可以是絕對路徑和相對路徑 . 和*

  • .gitignore
    ○ 描述那些變量是不需要提交的。常見的有node_modules, .DS_Store, .idea, .vscode

  • get commit -m 字符串
    ○ 提交,并說明理由提交,字符串里如果有空格,就要用引號包起來

  • git commit -v
    ○ v是verbose選項,可以回顧剛剛改動的代碼,能讓我把提交理由寫得更詳細一些

  • git log
    ○ 顯示之前的提交

  • git reset --hard 版本號
    ○ 復(fù)制前版本號(按q) 回到指定版本
    ○ commit 的號碼,可以是6位,也可以是4位,也可以是 7位,只要是惟一的即可。

  • git reflog
    ○ 查看所有提交log
    ※ add一個文件的時候,reset --hard之后這個文件就會丟失。所以在代碼要不就沒提交,要不已經(jīng)提交的狀態(tài)reflog再reset --hard。

  • git branch x
    ○ 基于當(dāng)前commit創(chuàng)建一個新的分支
    ○ 在哪個分支提交,代碼就出現(xiàn)在哪個分支
    ○ 單獨git branch,會提示現(xiàn)在有多少分支,帶有*的是目前所在分支

  • git checkout x
    ○ 切換到另一個分支
    ○ 當(dāng)前目錄有未提交的代碼,只要跟另一個分支不沖突,就不需要理會
    ○ 如果沖突了呢?可以使用git stash,也可以合并沖突

  • git merge x
    ○ 進入要保留的分支,運行g(shù)it merge
    ○ 合并完后刪除無用分支 git branch -d x

解決沖突的辦法

  • 發(fā)現(xiàn)沖突
    ○ 在合并分支的時候,會得到conflict提示
    ○ 使用git status -sb 查看哪個/哪些文件沖突了
  • 解決沖突
    ○ 依次打開每個文件
    ○ 搜索====四個等號
    ○ 在上下兩個部分中選擇要保留的代碼
    ○ 可以只選上面,也可以只選下面,也可以都選
    ○ 刪除不用的代碼,刪除====>>>><<<<這些標記
    ○ git add對應(yīng)文件
    ○ 再次git status -sb,解決下一個文件的沖突
    直到?jīng)]有沖突,運行g(shù)it commit(注意不需要選項)

遠程倉庫GitHub

SSH key驗證身份

代碼需要儲存在云端,而GitHub可以儲存你的代碼。那么,如何將本地的代碼連接到GitHub呢,首先要驗證身份。

  1. 先要有一個GitHb賬號+密碼
  2. 然后運行申請公鑰的命令,過程之中一直回車就好了
    ssh-keygen -t ed25519 -C "your_email@example.com"
  3. 查看公鑰,并粘貼到GitHub上(settings->SSH keys)
    cat id_xxx.pub
  4. 輸入命令測試是否配對成功,問是否要繼續(xù)連接的時候yes
    ssh -T git@github.com
    提示設(shè)置成功就可以上傳代碼啦

上傳代碼

  1. 新建一個GitHub Repository,復(fù)制SSH地址和下面的代碼
  2. 在本地添加遠程倉庫地址。origin是遠程倉庫的默認名字,可以換但是不建議。
    建議不要使用https://地址,每次都需要密碼,麻煩。
    git remote add origin git@github.com:倉庫地址
  3. 推送本地master分支到遠程origin的master分支,如果過程中提示你應(yīng)該git pull … ,就git pull。(如果遠程分支沒更新過,才可以省略)
    git push -u origin master
    -u origin master的意思是設(shè)置上游分支,之后就不用再設(shè)置上有分支,直接git pull;git push。
  4. 網(wǎng)站上給的命令是這樣的,但是直接用3.的命令也可以
git remote add origin git@github.com:username/repo-name.git
git branch -M main
git push -u origin main

※ 關(guān)于分支的提交,pull哪個分支就上傳哪個,在分支上只有commit后的文件才可以上傳,add和modify狀態(tài)的文件不會上傳;還有.ignore文件里添加的文件不會上傳。
※ modify文件需要再add之后commit。
※ 上傳一個新的分支,就要使用-u origin 分支名。

上傳其他分支:
一、x:x左邊是源頭,右邊是目標。從本地x到遠程x
git push origin x:x
二、切換到目標分支,然后上傳
git checkout x
git push -u origin x

??總結(jié):解決沖突
實際操作了一下,在GitHub上修改了一個文件,然后我本地修改了代碼,在不知道遠程倉庫中這個文件已經(jīng)被修改的情況下git push了。

λ git push
    Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
    To github.com:AkaneTang/git-demo-1.git
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to 'git@github.com:AkaneTang/git-demo-1.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
可以看到別人修改的文件和我的沖突了,按照提示git pull,拉取遠程代碼。
λ git pull
    remote: Enumerating objects: 5, done.
    remote: Counting objects: 100% (5/5), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0   
    Unpacking objects: 100% (3/3), done.
    From github.com:AkaneTang/git-demo-1
       3054bd5..f454902  master     -> origin/master
    Auto-merging index.html
    CONFLICT (content): Merge conflict in index.html
    Automatic merge failed; fix conflicts and then commit the result.

自動彈出merge該文件,選擇好需要保留的地方保存。再次上傳需要git add+git commit然后再git push。
在此過程中可以通過git status來查看文件狀態(tài)。modify文件時紅色的,add之后變綠,就可以commit了。

如何下載別人的代碼

  • 下載
    如果是不同的PC,要寫上傳新的ssh key(一機一key)
    git clone git@目標路徑
    cd目標路徑之后就可以一波四連:
    git add/ git commit/ [git pull] /git push

  • 下載某個分支
    先下載整個倉庫,然后git checkout 分支名
    或者搜一些命令

  • git clone git@?/xxx.git
    會在當(dāng)前目錄下創(chuàng)建一個xxx目錄,xxx/.git就是本地倉庫了,然后cd 進去這個目錄

  • git clone git@?/xxx.git yyy
    會在本地新建yyy目錄,記得cd yyy

  • git clone git@?/xxx.git .
    最后是空格+. ,這個命令不會新建目錄,使用當(dāng)前目錄
    不過一般還是新開一個,或者找個空目錄比較好

git高級操作

使用bash alias簡化命令

  • gst/ga/gc/gl/gp等
  • touch ~/.bashrc創(chuàng)建并進入這個文件然后編輯
    echo 'alias ga="git add"'>> ~/.bashrc
    echo 'alias gc="git commit -v"'>> ~/.bashrc
    echo 'alias gl="git pull"'>> ~/.bashrc
    echo 'alias gp="git push"'>> ~/.bashrc
    echo 'alias gco="git checkout"'>> ~/.bashrc
    echo 'alias gst="git status -sb"'>> ~/.bashrc
  • 重啟命令行或者運行 source ~/.bashrc
    ~/.bashrc就是bash的配置文件,通過編輯配置文件來寫成簡易命令
    也可以直接用vim編輯。
    vi ~/.bashrc之后按i進行編輯,然后ESC退出編輯模式,:wq保存并退出。
最后編輯于
?著作權(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)容

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