git 命令汇总
瞎扯
最近有幾個留言想讓寫下git的內容,git是一個工具,主要是用來管理碼農的代碼的,理由很簡單,碼農寫的代碼太多,自己都不知道可能哪里出現了Crash。Linux也是因為git的出現,可以讓世界上越來越多的人維護修改bug,現在的linux內核才發展的越來越快。
?
git基礎
我覺得,要學習git,首先要了解幾個概念
- working dir 這個是工作區,我們一般都處在工作區中
- index 這個是緩存區,可以臨時保存你的改動
- HEAD 指向你最新提交的結果(上圖沒顯示)
- 哈希號 上面那個...... 表示每次提交生成一次哈希號,可以認為是某次提交的身份證號碼(上圖沒顯示)
- local repository : 本地倉庫
- remote repository:遠程倉庫
?
安裝初始化git
正常我們都是在Linux下開發和使用git,如果在windows和蘋果下開發,請自行百度
安裝git
#sudo apt-get install git?#sudo apt-get install git-doc git-svn git-email git-gui gitk
初始化git
ssh-keygen #生成git key 默認在.ssh目錄下git init # 在當前目錄新建一個Git代碼庫
git init [project-name] # 新建一個目錄,將其初始化為Git代碼庫
git clone [url]# 下載一個項目和它的整個代碼歷史
git config --list# 顯示當前的Git配置
git config -e [--global]# 編輯Git配置文件
# 設置提交代碼時的用戶信息
git config --global?user.email?"you@example.com"
git config --global?user.name?"Your Name"
?
?
代碼提交相關命令
git clone?https://github.com/username/repo?name.git # 從遠程倉庫下載代碼git status . # 查看當前工作區的修改
git add * # 跟蹤新文件
git add -u [path] # 添加[指定路徑下]已跟蹤文件
rm *&git rm * # 移除文件
git rm -f * # 移除文件
git rm --cached * # 停止追蹤指定文件,但該文件會保留在工作區
git mv file_from file_to # 重命名跟蹤文件
git log # 查看提交記錄
git commit # 提交更新
git commit [file1] [file2] ... # 提交指定文件
git commit -m 'message'
git commit -a # 跳過使用暫存區域,把所有已經跟蹤過的文件暫存起來一并提交
git commit --amend#修改最后一次提交
git commit -v # 提交時顯示所有diff信息
git reset HEAD *#取消已經暫存的文件
git reset --mixed HEAD *#同上
git reset --soft HEAD *#重置到指定狀態,不會修改索引區和工作樹
git reset --hard HEAD *#重置到指定狀態,會修改索引區和工作樹
git reset -- files#重置index區文件
git revert HEAD #撤銷前一次操作
git revert HEAD~ #撤銷前前一次操作
git revert commit ## 撤銷指定操作
git checkout -- file#取消對文件的修改(從暫存區——覆蓋worktree file)
git checkout branch|tag|commit -- file_name#從倉庫取出file覆蓋當前分支
git checkout -- .#從暫存區取出文件覆蓋工作區
git diff file #查看指定文件的差異
git diff --stat #查看簡單的diff結果
git diff #比較Worktree和Index之間的差異
git diff --cached #比較Index和HEAD之間的差異
git diff HEAD #比較Worktree和HEAD之間的差異
git diff branch #比較Worktree和branch之間的差異
git diff branch1 branch2 #比較兩次分支之間的差異
git diff commit commit #比較兩次提交之間的差異
git log --grep=aplog #查找關鍵字aplog
git log #查看最近的提交日志
git log --pretty=oneline #單行顯示提交日志
git log --graph # 圖形化顯示
git log --abbrev-commit # 顯示log id的縮寫
git log -num #顯示第幾條log(倒數)
git log --stat # 顯示commit歷史,以及每次commit發生變更的文件
git log --follow [file] # 顯示某個文件的版本歷史,包括文件改名
git log -p [file] # 顯示指定文件相關的每一次diff
git log --oneline #只用一行顯示每次的提交包含哈希號和commit內容?
git stash #將工作區現場(已跟蹤文件)儲藏起來,等以后恢復后繼續工作。
git stash list #查看保存的工作現場
git stash apply #恢復工作現場
git stash drop #刪除stash內容
git stash pop #恢復的同時直接刪除stash內容 最好不要這么干,除非你下次確認不會再使用緩存數據
git stash apply stash@{0} #恢復指定的工作現場,當你保存了不只一份工作現場時。
?
分支操作
git branch #列出本地分支git branch -r#列出遠端分支 為了方便查看,前面會有一個*號顯示
git branch -a#列出所有分支
git branch -v#查看各個分支最后一個提交對象的信息
git branch --merge#查看已經合并到當前分支的分支
git branch --no-merge#查看為合并到當前分支的分支
git branch test#新建test分支
git branch branch [branch|commit|tag] # 從指定位置出新建分支
git branch --track branch remote-branch # 新建一個分支,與指定的遠程分支建立追蹤關系
git branch -m old new #重命名分支
git branch -d test #刪除test分支
git branch -D test #強制刪除test分支 可以多分支同時刪除
git branch --set-upstream dev origin/dev #將本地dev分支與遠程dev分支之間建立鏈接
git checkout test#切換到test分支
git checkout -b test#新建+切換到test分支
git checkout -b test dev#基于dev新建test分支,并切換
git merge test#將test分支合并到當前分支
git merge --squash test ## 合并壓縮,將test上的commit壓縮為一條
git cherry-pick commit #揀選合并,將commit合并到當前分支,比如我們之前在dev分支下做了一個修改,然后切換到master下面來,同步了最新的代碼,可以通過cherry-pick把之前的提交同步過來
git cherry-pick -n commit #揀選多個提交,合并完后可以繼續揀選下一個提交
git rebase master#將master分之上超前的提交,變基到當前分支
git rebase --onto master 169a6 #限制回滾范圍,rebase當前分支從169a6以后的提交
git rebase --interactive #交互模式
git rebase --continue# 處理完沖突繼續合并
git rebase --skip# 跳過
git rebase --abort# 取消合并
遠程分支相關命令
git fetch origin remotebranch[:localbranch]# 從遠端拉去分支[到本地指定分支]git merge origin/branch#合并遠端上指定分支
git pull origin remotebranch:localbranch# 拉去遠端分支到本地分支
git push origin branch#將當前分支,推送到遠端上指定分支
git push origin localbranch:remotebranch#推送本地指定分支,到遠端上指定分支
git push origin :remotebranch # 刪除遠端指定分支
git push origin remotebranch --delete # 刪除遠程分支
git branch -dr branch # 刪除本地和遠程分支
git checkout -b [--track] test origin/dev#基于遠端dev分支,新建本地test分支[同時設置跟蹤]
?
git遠程源
git是一個分布式代碼管理工具,所以可以支持多個倉庫,在git里,服務器上的倉庫在本地稱之為remote。
個人開發時,多源用的可能不多,但多源其實非常有用。
正常的時候,我們在一個遠程倉庫作為本地代碼倉庫的源,但是有時候我們遠程倉庫的地址改變了,本地不管提交還是拉取代碼都會出錯,這時候就需要更新源。
git remote add origin1 git@github.com:weiqifa/demo.git #添加源git remote#顯示全部源
git remote -v#顯示全部源+詳細信息
git remote rename origin1 origin2#重命名
git remote rm origin#刪除
git remote show origin#查看指定源的全部信息
?
想清楚了再使用
gitpush-f origin master#強制提交,這個命令你領導估計也不知道你干嘛了,當然你爽了,別人就瞎逼了同步其他分支的某個文件
git show yan3_dev:scripts/resource_tool>scripts/resource_tool
把yan3_dev 分支下的resource_tool 同步到當前分支下
?
打包項目源碼命令相關
git clone –bare kernel/ 這樣生成kernel.git 這里會包含.git文件夾
git clone kernel.git/ 這樣來解包
?
打補丁命令相關
git diff ./ > *.patch
patch -p1 < xxx.patch
?
查看歷史分支圖
git log –graph –all
?
git 忽略文件相關
Git 忽略一些文件的提交 - 嵌入式Linux - CSDN博客
?
學會查找資料
總結的命令不一定會都用到,但是學會如何查找資料解決自己的問題非常關鍵,很多時候我們提交可能提示出錯,很多的時候都是分支跟master有沖突,或者從錯誤日志上可以看出問題,多動動腦子,很快就可以解決了。
git help commit #查看commit命令的幫助信息?
參考
Git 命令 - 嵌入式Linux - CSDN博客?blog.csdn.net
https://blog.csdn.net/weiqifa0/article/details/11655049?blog.csdn.net
GIT安裝和配置 - 嵌入式Linux - CSDN博客?blog.csdn.net
GIT安裝和配置 - 嵌入式Linux - CSDN博客?blog.csdn.net
https://blog.csdn.net/weiqifa0/article/details/51917879?blog.csdn.net
ubuntu下面的git服務器搭建 - 嵌入式Linux - CSDN博客?blog.csdn.net
ubuntu下面的git服務器搭建 - 嵌入式Linux - CSDN博客?blog.csdn.net
【Github教程】史上最全github使用方法:github入門到精通 - 嵌入式Linux - CSDN博客?blog.csdn.net
https://blog.csdn.net/weiqifa0/article/details/10107375?blog.csdn.net
GIT非常好的整理 - 嵌入式Linux - CSDN博客?blog.csdn.net
GIT非常好的整理 - 嵌入式Linux - CSDN博客?blog.csdn.net
在git上push代碼時缺少Change-Id - 嵌入式Linux - CSDN博客?blog.csdn.net
https://stackoverflow.com/questions/1337320/how-to-grep-git-commit-diffs-or-contents-for-a-certain-word?stackoverflow.comHow to grep Git commit diffs or contents for a certain word??stackoverflow.com
How to grep Git commit diffs or contents for a certain word??stackoverflow.com
Git工具詳解以及與GitHub的配合使用_Linux教程_Linux公社-Linux系統門戶網站?www.linuxidc.com我的git筆記?yanhaijing.com
總結
- 上一篇: 队列仿真一个银行叫号系统
- 下一篇: 2022年下半年深圳地区数据分析师认证(