Git學習攻略


Linux 經常使用命令:
1.cd pwd su   2.ls; ls-l; ll  3.mkdir   4.touch 
5.cat       6.grep   7.history   8.clear
9. 文件寫入 >   10.rm   11.cp mv  12.aliasgit

Git安裝配置:
git config --global user.name "..."
git config --global user.email "..."緩存

TortoiseGit 圖形化Git管理工具服務器

Git經常使用命令:
HEAD 當前版本庫的頭指針
HEAD^ 版本庫的上一次提交
~n 前n次提交
暫存區stage
工做區
1.git init 初始化倉庫
2.git clone 克隆倉庫代碼
git pull 更新代碼
git fetch; git merge
3.git branch
1)git branch name 建立分支
2) git branch -m oldName newName 本地分支重命名(未推送至遠程)
3) git branch -v 查看當前分支
4) git branch 查看全部分支
5) git branch -d 刪除本地分支 -D 強制刪除
6)git branch -f 強制修改分支位置,讓分支指向另外一個提交
7) git push origin --delete newName 刪除遠程分支
4.git checkout 檢出分支 默認是暫存區
1)git checkout -b 建立並切換分支
2)git checkout branch 切換分支,更新HEAD指向branch,並用branch指向的樹更新暫存區和工做區
3)git checkout 彙總顯示工做區、暫存區和HEAD的區別
4)git checkout -- filename 用暫存區的filename文件覆蓋工做區的文件。(至關於重置)
5)git checkout branch -- filename 用branch所指向的提交中的filename 替換工做區和緩存區的相應文件。
origin/develop 服務器develop分支
6)git checkout . 暫存區文件覆蓋本地全部文件
7)git checkout HEAD . 或git checkout HEAD <file> 用HEAD指向的master分支中的所有或部分文件替換暫存區和工做區中的文件
5.git add
1) git add -u 將本地文件的變動(修改、刪除)所有記錄到暫存區
2)git add -a 將工做區中全部改動和新增文件添加至暫存區
3) git add -i 選擇性的添加文件
4) git add . 添加全部變動的文件至暫存區
6.git commit
1) git commit -m "..." 提交代碼並註釋
2)git commit --amend 撤銷最近提交
7.git status 暫存區和工做區改變
1)git status -s 精簡輸出
8.git diff 代碼比對
1).git diff 工做區和暫存區比較
2).git diff HEAD 工做區和HEAD比較 HEAD是遠程分支
3).git diff --cached 暫存區和HEAD比較
4).git diff B A
9.git log 代碼提交歷史
1)git log --online
2)git log -n(數字) --pretty=oneline 最近提交的幾條記錄
3)git log --graph 查看分支合併圖
4) git log --stat 查看每次提交的文件變動統計
git reflog
1) git reflog show branch1 查看branch1提交記錄
10.git reset 重置命令
1). git reset --hard HEAD^ 完全撤銷最近的提交。引用,工做區,暫存區都回退。本身當前版本寫的代碼丟失。
  git reset --hard 版本號 回退值某個版本
2). git reset 和 git reset HEAD
重置暫存區,將git add命令撤銷
3). git reset --filname 和 git reset HEAD filename 將文件filename改動撤出暫存區,撤銷git add
4). git reset HEAD^ 和 git reset --mixed HEAD^ 工做區不改變,暫存區和引用回退。(未提交的代碼不受影響)
5).git reset --soft HEAD^ 工做區和暫存區不改變,引用回退。至關於撤銷git commit
11.git mv oldFileName newFileName 文件更名
12.git stash 保存和恢復工做進度
1)git stash 保存當前工做進度。分別對暫存區和工做區的狀態進行保存
save "message...." 保存進度並進行說明
2)git stash list 顯示進度列表。
3)git stash pop 恢復最新保存的工做進度,並將恢復的工做進度從儲存的工做進度列表中清除
4)git stash [save [--patch] [-k|--[no-] keep-index] [-q|--quiet] [<message>]]
--patch 顯示工做區和HEAD的差異
-k或--keep-index 保存進度後不會將暫存區重置
5)git stash apply 和stash pop同樣,可是不刪除恢復的進度
6)git stash drop [<stash>] 刪除一個存儲的進度。默認刪除最新的進度。
7) git stash clear 刪除全部儲存的進度
13.git push origin yourbranch 上傳你的分支至倉庫
1)git push -f 強制推送
2) git push origin --delete newName 刪除遠程分支app

14.git pull 更新代碼
1) git pull origin branch 從branch上更新到當前分支
從branch上更新的別人的新代碼自動放到暫存區中,更改完本身的代碼,git add,而後git commit會把更新的夜一塊兒提交上去。
15.git fetch origin 從遠程分支拉取代碼
git fetch origin branch1:branch2 拉取遠程branch1代碼 到 本地branch2
git diff temp git merge branch2 git branch -d branch2
16.git merge
1)git merge master 合併master分支至當前分支
2)git merge --no-ff dev --no-ff 分之合併以後,從分支歷史上就能夠看出分支信息 工具

git rebase develop 移動分支,把當前分支移動到develop分支以後合併
有衝突則解決衝突,而後git rebase --continue
git rebase --abort 終止rebase行動,回到rebase以前的狀態。
17.git remote and origin url 關聯遠程倉庫
git remote -v
18.git rev-parse 版本表示法
1)git rev-parse --symbolic --branchs 顯示分支
2)git rev-parse --symbolic --tags 顯示里程碑
3) 顯示爲對於哈希值 git rev-parse HEAD
19. git tag
1)git describe 版本號
2)git tag 查看全部標籤
      -n 查看標籤說明
3)git tag <tagname> 建立標籤
          -a帶說明
          -m "msg" 帶說明
4)git show <tagname> 查看標籤信息
5)git tag -d <tagname> 刪除標籤
6)git push origin <tagname> 本地標籤推送至遠程
7) git push origin --tags能夠推送所有未推送過的本地標籤
8) git push origin :refs/tags/<tagname>能夠刪除一個遠程標籤
20.git config --global alias.name "git commit -s" 命令別名
例如:name = ci ;git ci = git commit -sfetch

 

常見問題:ui

1.更新代碼有衝突:
1)、git stash ;git pull; git stash pop
2) 、git add ;git commit;git pull
3) 、git fetch ;git rebase o/master;git push ; rebase 當前分支移動到o/master分支,最後再用 git push 推送到遠程倉庫。
4)、git fetch;git merge o/master;git push 合併以後多一個分支
5) 、git pull --rebase;git push 沒合併,直接移動,少一個分支url

更新命令以後:
1.某個文件亂了,想修改這個文件。
1)、只改變工做區 git checkout --file 暫存區文件覆蓋工做區文件
2)、同時改變暫存區 1>. git reset HEAD file;git checkout --file 先重置暫存區,再覆蓋工做區文件
2>. git checkout origin/develop --file 用服務端develop分支文件覆蓋本地的文件spa

此時文件更改成修改前的,而後你把最新的代碼合併進來。指針

2.用工具解決衝突:tortoisegit,source tree