拉代碼
git clone ssh://user-name@url
獲取遠(yuǎn)程信息
git fetch (--all)
更新代碼
git pull (--rebase| -r)
//(pull 表示把遠(yuǎn)程倉庫的更新拉下來钦铁, --rebase 雖然是可選項(xiàng), 但是一般都建議一起使用倔既,這里涉及到 “基”的概念呢蔫。
分支
切分支
代碼拉下來后默認(rèn)是在master分支切心, 需要用 git checkout ref_name
切過去
列分支
git branch
列出本地分支
git branch -r
列出遠(yuǎn)程分支
切分支
``git checkout branch_name (執(zhí)行命令前本地不能有未緩存的提交,否則失斊酢)
新建分支
git branch 'branch_name'
git checkout -b 'branch_name' // 執(zhí)行完后會立即切換到新分支
git branch 'branch_name' 'origin/branch_name' //新建遠(yuǎn)程分支
git checkout branch_name (等價于 git checkout -b 'branch_name' 'origin/branch_name' )
//使用遠(yuǎn)程分支绽昏,并在本地建立branch
刪除本地分支
git branch -D 'branch_name' //大寫D表示強(qiáng)制刪除
本地分支與遠(yuǎn)程分支的對應(yīng)
特殊情況下,執(zhí)行 git pull
命令時會提示找不到對應(yīng)的遠(yuǎn)程分支俏脊, 需要用 git branch --set-upstream-to=<upstream>
命令指定一個遠(yuǎn)程分支.
顯示遠(yuǎn)程分支的url
//if referential integrity has been broken:
git config --get remote.origin.url
//If referential integrity is intact:
git remote show origin
//本地git與遠(yuǎn)程服務(wù)器綁定
git remote add origin git@github.com:xxx.git
提交
本地提交
- 一般都用圖形化工具 citool.用
git citool
命令可調(diào)起全谤。 - 命令行的方式:
git add // 把文件加到版本庫的管理中 ,執(zhí)行完后文件在緩存區(qū)
git add --all //將所有文件放入stage中联予,包括新增加的文件
git rest // unstaged all files
git commit -m 'msg' //將stage中文件提交
git commit -am 'msg' //將modify和 stage 中文件提交啼县,不包括不在stage中的新增文件
git commit --amend -m‘msg’ 將本次提交和上次提交合并。在本地的提交中使用沸久,還沒有push到服務(wù)器中
推送到服務(wù)器
git push
git push origin HEAD:branch_name //本地分支名與遠(yuǎn)程名稱不對應(yīng)時候
git push origin HEAD:refs/for/ref_name //推送到gerrit
注意1:HEAD在LINUX下需要大寫
注意2: 不要忘記加 HEAD:refs/for/ 否則有可能會創(chuàng)建一個新分支季眷。
沖突的解決
命令:
git mergetool 'file_path'
git 對比
git difftool --dir-diff(-d) //git open all diff files
git difftool -d HEAD //stage 中files對比
git difftool -d sha sha^1 // 提交sha的文件變更
git svn
git svn fetch // 更新svn代碼
git svn rebase //更新本分支head到最新
tag
打tag
命令:
git tag V_1.0.0.0 -m “version 1.0”
一般每編一次發(fā)布版,都會打上一個tag
將tag推送到遠(yuǎn)程
git push origin tag_name
注意: 推送到遠(yuǎn)程的TAG必須得有日志信息卷胯,對應(yīng)于上面 -m 參數(shù)后的內(nèi)容子刮。
gitk使用
查看分支
gitk // 查看當(dāng)前本地分支
gitk ref_name //查看其他分支
gitk origin/ref_name //查看某個遠(yuǎn)程分支
gitk --all //查看所有分支
本地修改
常用命令
git reset [--hard|--soft|--mixed] [revision] //reset命令只對入庫的文件有效,
git clean –fd //對未入庫的文件,可使用 git clean –fd 清除
git reset --hard //回退所有的內(nèi)容
//可以回退某一個提交挺峡,這個操作相當(dāng)于是把當(dāng)時那個提交逆向PATCH了一次葵孤。
//操作完成后,需要COMMIT到倉庫橱赠。
git revert –n sha1-id
//回退某一次的提交某一個文件
git checkout sha1-id file (file1...)
git stash
//工作到一般時有緊急任務(wù)時尤仍, 配合
git stash
git stash pop
git stash save -m'log'
git stash -p //stash 某一文件
// y - stash this hunk
// n - do not stash this hunk
// q - quit; do not stash this hunk or any of the remaining ones
// a - stash this hunk and all later hunks in the file
// d - do not stash this hunk or any of the later hunks in the file
// g - select a hunk to go to
// / - search for a hunk matching the given regex
// j - leave this hunk undecided, see next undecided hunk
// J - leave this hunk undecided, see next hunk
// k - leave this hunk undecided, see previous undecided hunk
// K - leave this hunk undecided, see previous hunk
// s - split the current hunk into smaller hunks
// e - manually edit the current hunk
// ? - print help//
git stash clear // delete all stashes at once
git 提取patch.
- 可以先使用git citool本地提交。
- git format-patch -w head~1
- 使用 git reset --hard 撤銷本地提交.
- 使用gitk查看是否撤銷本地提交狭姨。
- 應(yīng)用patch.
git diff --binary > xxx.patch //生成patch
git apply xxx.patch //好用
git am xxxxxx.patch //不好用.
git 回退
git reset HEAD~1
git reset HEAD^
(master分支向前回退一個提交宰啦。gqg:回退本地提交,恢復(fù)到提交前更改狀態(tài), 或者用:git reset HEAD~1 1表示回退一次提交饼拍,N表示回退N次提交).
- 只要有.git目錄 就可以使用git reset --hard 把代碼恢復(fù)出來赡模。
git 修改只有大小寫區(qū)別的文件
git mv (--force) myfile MyFile
(mv: allow renaming to fix case on case insensitive filesystems)
revert某個提交:
- 使用gitk, 查看要revert的提交,把SHA1 ID復(fù)制下來.
- git revert -n xxxxxxxxxxxxxxxxxxxxxxxxxxxx
- git citool 提交然后push.
cherry pick
git cherry-pick "branch_name" //cherry pick "branch_name" 最上方修復(fù)师抄,并提交
git cherry-pick "sha-id" //cherry pick 某一次提交
回退制定版本
git checkout 'SHA' //回退到制定'sha'值
git 配置
- 修改git默認(rèn)的編輯器nano為vim的方法
git config --global core.editor vim
- 指定全局 ignore 文件
git config --global core.excludesfile '/Users/xx/.gitignore_global'
- 修改某個git庫下的用戶名和郵箱
git config user.name 'user-name'
git config user.email 'email'