文章目錄
- 代碼倉庫
- 創建倉庫
- 1.進入需要創建代碼庫的文件夾
- 2.創建/切始化倉庫
- 3.關聯遠程倉庫
- 拉取遠程倉庫到本地
- 添加文件到倉庫
- 1.查看工作區狀態
- 2.添加文件到暫存區
- 3.提交到本地倉庫
- 4.對比工作區文件變化
- 倉庫配置
- 1.配置全局用戶名和郵箱
- 2.配當前倉庫用戶名和郵箱
- 3.查看Git全局配置
- 代碼版本/提交切換
- 查看過去版本/提交
- 1.提交的詳情
- 2.提交的簡介
- 回退版本/提交
- 1.回退到當前最新提交
- 2.回退到上次提交
- 3.回退到上n次提交
- 4.回退到某次提交
- 重返未來版本
- 1.查看歷史提交以及被回退的提交
- 2.回到未來版本
- 撤銷修改
- 1.工作區文件撤銷
- 2.暫存區文件撤銷
- 3.提交到了版本庫
- 刪除文件
- 1.從版本庫刪文件
- 2.恢復刪除
- 3.從版本庫中刪除文件,但是本地不刪除該文件
- 暫存修改
- 忽略文件
- 分支
- 創建與合并分支
- 1.創建分支
- 2.切換分支
- 3.合并分支
- 4.刪除分支
- 刪除本地分支
- 刪除遠程分支
- 5.查看分支
- 6.合并分支,解決分支沖突
- 7.開發完需要提交PR/MR
- 暫存修改
- 1.暫存工作現場
- 2.恢復工作現場
- 恢復
- 刪除
- 恢復+刪除
- 多人協作
- 1.查看遠程庫信息
- 2.更新/推送遠程庫
- 更新遠程庫信息
- 將遠程庫最新修改更新到本地
- 將本地修改推送到遠程倉庫
- 3.本地分支與遠程分支交互
- 使用遠程分支A創建本地分支
- 代碼版本tag
- 1.查看tag
- 本地tag
- 遠程tag
- 2.操作tag
- 添加tag
- 給當前版本加tag
- 給歷史版本加tag
- 刪除tag
- 刪除本地標簽
- 刪除遠程標簽
- 推送tag到遠程倉庫
- 更新到本地
- 其他生僻命令
- 查看代碼歷史記錄
- 查找引入 bug 的提交
- 復制提交到當前分支
- 查看命令
代碼倉庫
創建倉庫
1.進入需要創建代碼庫的文件夾
cd 文件路徑
2.創建/切始化倉庫
git init
3.關聯遠程倉庫
git remote add origin 遠程倉庫URL
拉取遠程倉庫到本地
或者直接克隆遠程的倉庫,更簡單方便。
git clone <遠程倉庫URL>
添加文件到倉庫
1.查看工作區狀態
git status
2.添加文件到暫存區
添加單個文件:
git add 文件名
添加所有文件:
git add .
會忽略的文件:.gitignore
中指定的文件會被忽路、空目錄
3.提交到本地倉庫
git commit#我的電腦是Windows,此時進入了一個文本編輯器(vim)
#使用CTRL+C,輸入i,進入插入模式
#使用CTRL+C,輸入:wq,保存退出
也可以使用git commit -m "commit message"
,建議提交遵循commit message
規范。
使用git commit -m "commit message"
的方式提交代碼雖然快捷,但是有一些潛在的問題:
- 提交信息可能過于簡單:使用
-m
參數,你可能會傾向于寫一些簡短的提交信息,這可能會導致提交信息缺乏必要的詳細內容,使得其他開發者難以理解這次提交的目的和內容。 - 無法處理復雜的提交信息:如果你的提交信息需要多行,或者需要更復雜的格式(比如列表、引用等),那么
-m
參數就無法滿足需求了。 - 可能會忽略未跟蹤的文件:
git commit -m
只會提交已經被添加到暫存區的文件,如果有新的文件被修改但是還沒有被添加到暫存區,那么這些文件就不會被提交。
4.對比工作區文件變化
git diff
建議將beyond compare
配置為diff
工具,用于diff
以及merge
沖突
倉庫配置
1.配置全局用戶名和郵箱
git config --global user.name "name"
git config --global user.email "email address"
若是個人開發機可以這樣配置,若是公共編譯機則不能這樣配置。
2.配當前倉庫用戶名和郵箱
git config user.name "name"
git config user.email "email address"
3.查看Git全局配置
git config --global -l
代碼版本/提交切換
注意:這里的版本均為本地倉庫版本。
查看過去版本/提交
1.提交的詳情
git log
2.提交的簡介
git log --pretty=oneline
回退版本/提交
1.回退到當前最新提交
git reset --hard HEAD
2.回退到上次提交
git reset --hard HEAD^
3.回退到上n次提交
git reset --hard HEAD~n
4.回退到某次提交
git reset --hard commit_id
# 可通過git log獲取id
重返未來版本
1.查看歷史提交以及被回退的提交
git reflog
注意:該記錄有時限,且只在本地
2.回到未來版本
git reset --hard commit_id
撤銷修改
1.工作區文件撤銷
如果文件沒有被提交到暫存區(即沒有執行 git add
命令),你可以使用 git checkout 文件名
來撤銷對該文件的修改。
git checkout 文件名
2.暫存區文件撤銷
如果你想將暫存區的文件撤銷到工作區,你可以使用 git reset HEAD 文件名
命令。這個命令不帶 --hard
參數,所以它只會將暫存區的文件撤銷到工作區,而不會影響工作區的文件。
git reset HEAD 文件名
如果你想撤銷暫存區的文件,你可以使用 git checkout 文件名
命令。這將會撤銷你對該文件的所有修改。
git checkout 文件名
3.提交到了版本庫
參見回退版本/提交
刪除文件
1.從版本庫刪文件
git rm 文件名
修改后需要提交
2.恢復刪除
參考撤銷修改
3.從版本庫中刪除文件,但是本地不刪除該文件
git rm --cached 文件名
暫存修改
參照分支-暫存修改
忽略文件
通過git
倉庫下的.gitignore
文件屏蔽某些中間文件/生成文件
分支
創建與合并分支
1.創建分支
僅創建:
git branch 分支名
創建并切換:
git checkout -b 分支名
在本地倉庫操作,創建的都是本地分支。
2.切換分支
git checkout 分支名
3.合并分支
合并某分支到當前分支:
git merge <要合并的分支>
禁用 Fast-forward 模式:
git merge --no-ff
變基:
用于重新應用一系列提交到另一個分支上。
git rebase <要提取提交的分支>
4.刪除分支
刪除本地分支
刪除未合并分支:
git branch -D 分支名
刪除已合并分支:
git branch -d 分支名
刪除遠程分支
git push origin -d 分支名
也可以在界面操作。
5.查看分支
查看當前分支:
git branch
查看所有分支消息:
git branch -a
例如:
* masterremotes/origin/master
6.合并分支,解決分支沖突
-
將要合并的分支更新到最新
-
切換到主分支
-
合并分支
-
解決合并時的conflict
-
提交到版本庫
-
合并成功
-
查看分支狀態
git log --graph git log --graph --pretty=oneline --abbrev-commit
7.開發完需要提交PR/MR
通過PR/MR來合并開發分支與主分支。
暫存修改
1.暫存工作現場
git stash
2.恢復工作現場
恢復
git stash apply
刪除
git stash drop
恢復+刪除
git stash pop
多人協作
1.查看遠程庫信息
#詳細
git remote -v#不詳細
git remote
2.更新/推送遠程庫
更新遠程庫信息
git fetch
將遠程庫最新修改更新到本地
git pull#或
git fetch + git merge
將本地修改推送到遠程倉庫
git pushgit push origin 分支名
3.本地分支與遠程分支交互
使用遠程分支A創建本地分支
git checkout -b A origin/A
#origin是遠程倉庫名,若名字一樣origin/A可以省略
將本地分支與遠程分支作關聯
git branch --set-upstream-to=origin/remote_branch your_branch#或
git checkout your_branch
git branch -u origin/remote_branch
代碼版本tag
1.查看tag
本地tag
git tag -l
遠程tag
git ls-remote --tags origin
2.操作tag
添加tag
給當前版本加tag
git tag -a 標簽名 -m "這是備注信息"
給歷史版本加tag
git tag -a 標簽名 commit_id -m "這是備注信息"
刪除tag
刪除本地標簽
git tag -d <tag_name>
刪除遠程標簽
git push origin :refs/tags/<tag_name>
推送tag到遠程倉庫
git push origin <tag_name>#推送所有未提交的tag
git push origin --tags
更新到本地
git pull origin --tags
其他生僻命令
查看代碼歷史記錄
git blame <file_name>
查找引入 bug 的提交
這個命令可以通過自動搜索的方式來查找引入 bug 的提交。利用二分查找法,自動檢查每個提交是否引入了 bug。
git bisect start
git bisect bad # 當前版本是有bug的
git bisect good v1.0 # v1.0 版本沒有 bug
git bisect reset
復制提交到當前分支
將指定的提交應用到當前分支。常用于將其他分支的提交復制到當前分支。
git cherry-pick <commit-id>
查看命令
#常用命令
git help#所有命令
git help -a