針對常用的git命令,進行彙總記錄,以便及時查詢
git 使用總結:
將服務端拉到本地:
git clone http://wfw……name.git .
最後一個點是拉到本地哪個目錄,如果不寫,則在當前目目錄下建一個name的目錄來放此git的本地副本
git pull
拉取最新的代碼狀態
———————分支———
git branch
列出所有分支,帶*的爲當前分支
git branch -d
嘗試刪除不用的分支,如果分支未合併,則不會刪除
git branch -D
刪除分支,未合併也刪除
git branch abc
創建一個abc分支
git checkout abc 切換到abc分支
git checkout origin/master -b test 用master創建一個test分支,即:抓取服務器上指定分支到本地
git push origin test 分支提交到服務器
git branch -av 查看服務器分支執行前,要先拉取最新的代碼狀態:git pull
git push origin :testbranch 將本地刪除的分支,提交到服務器
————————提交—————
git add -A
添加本地所有新增文件
git commit -a
提交所有到倉庫,直接提交,省去add但新增的文件夾另不進來
git diff 顯示本地所有文件修改的變化情況。 git push 將本地當前分支的代碼全部提交到服務器上的所有分支
git rebase -i 版本ID,修改此版本ID後面提交的提交情況
當你提交的代碼後,管理員發現,您的代碼不能提交到服務器上,主要原因在於,你的 commit 中和服務器中的有些commit不再同一時間軸上,即:你的有些commit要插入到服務器中的某些commit之間,這樣就會造成代碼的衝突。所以這個 時候就要使用git rebase。
假如,你平時使用的分支叫 new ,然後在這個分支上你剛提交過幾個commit。
做法:
1.新建一個分支,並且代碼和服務器中代碼同步
git checkout origin/v2.0 -b temp
2.爲了保證新建的temp分支代碼是最新的,可以多執行下面一步
git pull
3.當你新建分支後,系統會自動checkout到temp分支上,此時
git checkout new
4.合併代碼,並整理
git rebase temp //會將temp分支的代碼合並過來,並按照提交的順序排序
5. 因爲順序是重新整理的,所以肯定會出現衝突
6.解決衝突,最後 git add * ,但不許要git commit
7.解決後,執行 git rebase --continue
8.重新提交代碼: git push for-*
————————git 棧—————————
git stash 保存當前工作區內容,然後把最近一次的提交的代碼抓到本地以便修改緊急需求
git stash list 列出總共有多少次臨時保存記錄
git stash pop 將工作區恢復到最近一次臨時保存前狀態(臨時更改完成後,commit後進行操作)
git stash apply 將某一次的Git棧,恢復
git stash clear 將棧清空
————————配置
git config user.name
git config user.email
必須要與服務器上的一至,如果不一至,則要修改,但commit過的需要使用以下命令把已經提交的記錄修改過來:
git commit --amend --author=“XXX <[email protected]>"
git commit --amend --reset-author 重新定義提交者的帳號信息,有時改了user的信息,提交還是不行,用這個就可以了
git log
顯示所有修改日誌
git checkout . && git clean -xdf
刪除本次所有改動,把當前內容還原到上次push的狀態。
———————版本比較
git diff 顯示工作目錄與索引區文件之間的差異
git diff --cached 顯示索引區與git倉庫之間的差異
git diff HEAD 顯示工作目錄與git倉庫之間的差異
git diff HEAD^ 比較上次提交
git diff HEAD~2 比較上2次提交
git diff <branch1> <branch2> 在兩個分支之間比較
git diff <id1> <id2> 比較兩次提交之間的差異
抓取服務器上指定分支
git checkout -b staging origin/staging
——————————簡寫命令
vi ~/.gitconfig
添加下面的內容
[alias]
co = checkout
ci = commit
s = status
pl = pull
ps = push
d = diff
dt = difftool
dt = difftool
l = log --stat
cp = cherry-pick
ca = commit -a
b = branch
ac = commit -a -m
conl = git checkout production
online = pull origin production
用法如 在production分支下時,執行拉最新代碼 git online
代碼語法檢查,
可以定一個腳本,檢查語法錯誤的,或是借用第三方工作進行檢查,然後將該腳本放到項目的 .git/hook/pre-commit 位置,也可以放到一個位置軟鏈到多個項目 git/hook/pre-commit 中,這時,在提交時,會檢查語法規範,提高代碼質量。
windows中的換行符爲 CRLF, 而在Linux下的換行符爲LF,
所以在執行add . 時出現提示:warning: LF will be replaced by CRLF
解決辦法:
- $ git config --global core.autocrlf false //禁用自動轉換