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 https://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
初始化一個倉庫用
提交相關
新增檔案到倉庫(實際就是把工作區的內容新增到暫存區)
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}
提交時忽略指定檔案
合併分支時合為一次提交
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 裡面
git clone git://github.com/mmcLine/firstGit.git
# 也可使用https
git clone https://github.com/mmcLine/firstGit.git
修改了程式碼之後先
git add test.txt
git commit -m "test"
git push -u origin master 第一次推播命令
git push origin master 以後的推播命令
建立專案並關聯
git remote add origin [email protected]:/data/git/tofocus
處理方法:git remote rm origin
處理方法: git 的版本太低了,我之前是 yum 安裝了,我解除安裝了用原始碼安裝就好了
處理衝突: