工作7年收集到的git命令
概念
git 中的術語解釋:
- 倉庫也叫版本庫(repository)
- stage:暫存區,add 後會存到暫存區,commit 後提交到版本庫
git 安裝
linux 下安裝 git
-
第一種方法:yum install git-core 安裝的版本比較老
-
第二種方法:(我是 linux centos)
- 卸載老版本
yum remove gi
- 安裝依賴
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum install gcc perl-ExtUtils-MakeMaker
- 執行安裝
wget //github.com/git/git/archive/v2.2.1.tar.gz tar -zxvf v2.2.1 cd git-2.2.1 make configure ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv make make install echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc source /etc/bashrc
初始化一個倉庫用
- 先新建一個文件夾 mkdir test
- 進入該文件夾執行 git init 命令,就能初始化倉庫了
命令合集
提交相關
添加文件到倉庫(實際就是把工作區的內容添加到暫存區)
git add <file>
提交程式碼(就是把暫存區的內容提交到當前分支)
git commit -m "說明"
強制提交,比如用舊版本覆蓋老版本時原本會報錯,就可以用下面的命令
git push -f origin master
查看提交歷史
git log
記錄著操作命令,也就是命令歷史
git reflog
將現有工作區的隱藏起來(一個分支開發到一半,程式碼還不能提交,但是需要切換到別的分支去看看程式碼時可以使用)
git stash
恢復隱藏的工作區
git stash pop
清空隱藏的工作區
git stash clear
git stash drop stash@{0} 刪除第一個隊列
查看隱藏的工作區的內容
git stash list
指定恢復哪一個隱藏的工作區內容
git stash apply stash@{0}
提交時忽略指定文件
- 在.gitignore 中寫要忽略的文件名即可
- 如果已經使用過 add 命令了,那麼要先執行 git rm -r –cached .
- 然後在使用 add . 才能加入忽略規則
合併分支時合為一次提交
git merge --squash dev
取消命令
取消 rebase
git rebase --abort
取消提交了的內容
git reset --soft HEAD^
清除快取/清除已經推上去的不要的文件
git rm -r --cached . //需要完整複製
清除推上去的 idea 相關文件
git rm --cached -r .idea
撤銷相關
將工作區的修改撤銷掉
git checkout -- a.txt (注意:--很重要,如果沒有--,這個命令就變成了切換分支)
這個撤銷會有兩種效果:
第一種是修改後沒有放到暫存區,那麼撤銷後會回到和版本庫一樣的狀態
第二種是修改後放入了暫存區,又做了修改,那麼撤銷後會回到和暫存區一樣的狀態。
總之,就是讓這個文件回到最近一次 git commit 或 git add 時的狀態。
將暫存區的修改撤銷掉
git reset HEAD file
程式碼回退 (提交一次就有一個版本,HEAD 表示當前版本,HEAD^表示上一個版本,HEAD~10 表示前第 100 個版本)
git reset --hard HEAD^ //回退到上一個版本
程式碼回退之後還可以前進,只要知道前一個版本的版本號
git reset --hard 3628164 //版本號不用寫全,前幾位即可
如果刪除了文件,想讓版本庫里的文件也刪掉
#第一步
git rm -- a.txt
#第二步
git commit -m ""
想讓工作區刪除的文件恢復
git checkout -- a.txt
撤銷新增的文件
rm filename / rm dir -rf //單個文件
git clean -xdf //所有文件
遠程庫推送相關
關聯遠程庫
git remote add origin [email protected]:mmcLine/firstGit.git
取消關聯取消關聯
git remote remove origin
第一次推送資訊
git push -u origin master
不是第一次推送資訊
git push origin master
查看遠程庫的資訊
git remote
# 更詳細的資訊
git remote -v
推送遠程倉庫有衝突的處理
git push origin dev #發現失敗,有衝突
git pull #把最新的提交抓下來(git pull如果失敗運行 git branch --set-upstream dev origin/dev)
# 在合併,如果有衝突就手動解決後在提交
更新遠程庫的程式碼
git fetch origin
git rebase origin
克隆程式碼(僅克隆最近的一次提交記錄的最新版本)
git clone url --depth=1
分支相關
創建分支
git branch <name>
切換分支
git checkout dev
創建並切換分支
git checkout -b dev
查看當前分支
git branch
把 dev 分支合併到 master 上
git merge dev
刪除分支
git branch -D dev
查看提交的分支表
git log --graph
禁用 Fast forward 的合併,禁用後每次都會有新的提交
git merge --no-ff -m "merge with no-ff" dev
僅合併某次提交
# commitid是提交的id
git cherry-pick commitid
其他
設置 git 操作命令的別名
git config --global alias.st status 將git status 設置別名為git st
配置文件在.git 裡面的 config 裡面,或者對應用戶的家目錄的.gitconfig 裡面
- 刪除別名就在文件里刪除別名就好了
github 相關操作
- 從 github 下載程式碼
git clone git://github.com/mmcLine/firstGit.git
# 也可使用https
git clone //github.com/mmcLine/firstGit.git
- 推送程式碼到 github
修改了程式碼之後先
git add test.txt
git commit -m "test"
git push -u origin master 第一次推送命令
git push origin master 以後的推送命令
創建項目並關聯
- 先在伺服器上創建一個文件夾
- 然後在文件夾下運行 git init –bare
- 在本地創建一個倉庫
- 然後關聯遠程庫
git remote add origin [email protected]:/data/git/tofocus
- 然後上傳本地項目
遇到的錯誤
- 添加遠程配置時出現 fatal: 遠程 origin 已經存在。提示
處理方法:git remote rm origin
- 從 github 克隆時報這個錯誤 while accessing //github.com/mmcLine/gitskills.git/info/refs
處理方法: git 的版本太低了,我之前是 yum 安裝了,我卸載了用源碼安裝就好了
處理衝突:
- 更改衝突的地方
- 在 git gui 裡面把衝突的類點一下
- 讓上面那個區域的類都沒有了。
- 然後 git rebase –continue