git 与github 命令行操作与控制
一、git
1.download下載
https://www.git-scm.com/
2.配置 用戶名和郵箱
假設用戶名為"xxxx",郵箱為"xxxx@xxxx.com"
3.更改目錄
$ cd /d/ml_tech_srcUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src $ pwd /d/ml_tech_srcUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src $4.編輯hello.py的python文件
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ vim hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ ls hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ python hello.pyhello,world5.初始化倉庫
$ git init Reinitialized existing Git repository in D:/ml_tech_src/ml_1/.git/6.檢查狀態
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)hello.pynothing added to commit but untracked files present (use "git add" to track)User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $7.文件加入倉庫
$ git add . warning: LF will be replaced by CRLF in hello.py. The file will have its original line endings in your working directoryUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file: hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master)8.提交
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git commit -m "my first committing" [master (root-commit) ef7cc70] my first committing1 file changed, 1 insertion(+)create mode 100644 hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master nothing to commit, working tree cleanUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $9.查看提交歷史
$ git log commit ef7cc70308420d56726e8102caeecb4715319511 (HEAD -> master) Author: spx <lx@myhaspl.com> Date: Tue Nov 30 09:44:12 2021 +0800my first committingUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master)10.修改源文件
$ cat hello.py print("hello,world") print("ok")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: hello.pyno changes added to commit (use "git add" and/or "git commit -a")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $11.第2次提交
$ git commit -am "commit again" warning: LF will be replaced by CRLF in hello.py. The file will have its original line endings in your working directory [master da643c7] commit again1 file changed, 1 insertion(+)User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master nothing to commit, working tree cleanUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $-a 表示所有修改的文件全部提交
$ git add . warning: LF will be replaced by CRLF in hello.py. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in hello2.py. The file will have its original line endings in your working directoryUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git commit -am "my commit!" [master ccf29ef] my commit!2 files changed, 2 insertions(+)create mode 100644 hello2.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master nothing to commit, working tree cleanUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $13.撤銷修改
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ cat hello2.py print("hi")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ vim hello2.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ cat hello2.py print("hi") print("finish!")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: hello2.pyno changes added to commit (use "git add" and/or "git commit -a")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git checkout . Updated 1 path from the indexUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ cat hello2.py print("hi")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master nothing to commit, working tree clean使用checkout . 恢復到上次修改的前一個狀態。
14.恢復到以前的提交
恢復到以前的狀態,將離開分支master,進行頭指針分離。
可回到master分支。
15.master強制恢復到以前的指定狀態
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ cat hello.py print("hello,world") print("ok") print("!!!!!")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git reset --hard da643c HEAD is now at da643c7 commit againUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ ls hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ cat hello.py print("hello,world") print("ok")User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master nothing to commit, working tree cleanUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git log --pretty=oneline da643c7548b6e8fe1b9d5d23f36d38d3f522246c (HEAD -> master) commit again ef7cc70308420d56726e8102caeecb4715319511 my first committingUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $使用git reset --hard da643c完成
16.刪除一個倉庫
17.重新建立倉庫
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ git init Initialized empty Git repository in D:/ml_tech_src/ml_1/.git/User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)hello.pynothing added to commit but untracked files present (use "git add" to track)User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git add .User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git commit -m "restart commiting" [master (root-commit) afb0cf7] restart commiting1 file changed, 2 insertions(+)create mode 100644 hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master) $ git status On branch master nothing to commit, working tree cleanUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master)二、github
1.登錄設置
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ git config --global user.name "spxai"確認正確設置了 Git 用戶名:
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ git config --global user.name spxaiUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ git config --global user.email "msp@myhaspl.com"User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ git config --global user.email msp@myhaspl.com2.遠程倉庫創建
例如:
要新增遠程,請在終端上存儲倉庫的目錄中使用 git remote add 命令。
git remote add 命令使用兩個參數:
遠程命令,如 origin
遠程 URL,如 https://github.com/user/repo.git
例如:
3.提交倉庫
(1)相關基礎
更改遠程倉庫的 URL
git remote set-url 命令使用兩個參數:
現有遠程倉庫的名稱。 例如,源倉庫或上游倉庫是兩種常見選擇。
遠程倉庫的新 URL。 例如:
另外,還可以重命名遠程倉庫
使用 git remote rename 命令可重命名現有的遠程。
git remote rename 命令使用兩個參數:
現有的遠程名稱,例如 origin
遠程的新名稱,例如 destination
例如:
https:// 克隆 URL 在所有倉庫中提供,與可見性無關。 即使您在防火墻或代理后面,https:// 克隆 URL 也有效。
當您在命令行中使用 HTTPS URL 對遠程倉庫執行 git clone、git fetch、git pull 或 git push 命令時,Git 將要求您輸入 GitHub 用戶名和密碼。
$ git commit -m "First commit" [master (root-commit) 69cdcab] First commit1 file changed, 2 insertions(+)create mode 100644 hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (master)推送提交到遠程倉庫
使用 git push 將本地分支上的提交推送到遠程倉庫。
git push 命令使用兩個參數:
遠程命令,如 origin
分支名稱,如 main
例如:
git push
例如,您通常運行 git push origin main 來推送本地更改到在線倉庫。
重命名分支
要重命名分支,同樣使用 git push 命令,但要加上一個或多個參數:新分支的名稱。 例如:
git push :
這會將 LOCALBRANCHNAME 推送到 REMOTENAME,但其名稱將改為 REMOTEBRANCHNAME。
推送標記
默認情況下,沒有其他參數時,git push 會發送所有名稱與遠程分支相同的匹配分支。
要推送單一標記,可以發出與推送分支相同的命令:
git push
要推送所有標記,可以輸入命令:
git push --tags
刪除遠程分支或標記
刪除分支的語法初看有點神秘:
git push :
請注意,冒號前有一個空格。 命令與重命名分支的步驟類似。 但這里是告訴 Git 不要推送任何內容到 REMOTENAME 上的 BRANCHNAME。 因此,git push 會刪除遠程倉庫上的分支。
遠程和復刻
您可能已經知道,您可以對 GitHub 上的倉庫“復刻”。
在克隆您擁有的倉庫時,向其提供遠程 URL,告知 Git 到何處提取和推送更新。 如果要協作處理原始倉庫,可添加新的遠程 URL(通常稱為 upstream)到本地 Git 克隆:
git remote add upstream <THEIR_REMOTE_URL>
現在可以從其復刻提取更新和分支:
克隆倉庫
要獲取其他用戶倉庫的完整副本,請使用 git clone,如下所示:
運行 git clone 時,將發生以下操作:
創建名為 repo 的文件夾
將它初始化為 Git 倉庫
創建名為 origin 的遠程倉庫,指向用于克隆的 URL
將所有的倉庫文件和提交下載到那里
默認分支已檢出
從遠程倉庫獲取更改
使用 git fetch 可檢索其他人完成的新工作。 從倉庫獲取將會獲取所有新的遠程跟蹤分支和標記,但不會將這些更改合并到您自己的分支中。
如果已經有一個本地倉庫包含為所需項目設置的遠程 URL,您可以在終端使用 git fetch remotename 獲取所有新信息:
$ git fetch remotename # 獲取遠程倉庫的更新合并更改到本地分支
合并可將您的本地更改與其他人所做的更改組合起來。
通常將遠程跟蹤分支(即從遠程倉庫獲取的分支)與您的本地分支進行合并:
$ git merge remotename/branchname # 將在線更新與您的本地工作進行合并從遠程倉庫拉取更改
git pull 是在同一個命令中完成 git fetch 和 git merge 的便捷方式。
(2)提交操作
github頁面中創建ml_1項目 或使用[GitHub CLI https://github.com/cli/cli#installation](https://github.com/cli/cli#installation)```bash User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ rm -rf .gitUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 $ git init -b main Initialized empty Git repository in D:/ml_tech_src/ml_1/.git/User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main)User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ git add .User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ git commit -m "first commit" [main (root-commit) 140da5c] first commit1 file changed, 2 insertions(+)create mode 100644 hello.pyUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ git status On branch main nothing to commit, working tree cleanUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ git remote add ml_1 https://github.com/spxai/ml_1.gitUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ git remote -v ml_1 https://github.com/spxai/ml_1.git (fetch) ml_1 https://github.com/spxai/ml_1.git (push)使用 git fetch 可檢索其他人完成的新工作。 從倉庫獲取將會獲取所有新的遠程跟蹤分支和標記,但不會將這些更改合并到您自己的分支中。
User@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main) $ git fetch ml_1 main From https://github.com/spxai/ml_1* branch main -> FETCH_HEADgit merge合并更改到本地分支
將遠程跟蹤分支(即從遠程倉庫獲取的分支)與您的本地分支進行合并
提交更新
$ git push ml_1 main Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 545 bytes | 109.00 KiB/s, done. Total 5 (delta 0), reused 0 (delta 0), pack-reused 0 To https://github.com/spxai/ml_1.git2d3145d..0c10459 main -> mainUser@DESKTOP-01EST3R MINGW64 /d/ml_tech_src/ml_1 (main)總結
以上是生活随笔為你收集整理的git 与github 命令行操作与控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot整合Mybatis提
- 下一篇: Controller数据导出Excel