git环境设置

Mobile Preview

1. git基础操作

使用 .gitattributesde 配置文件 内容如下
*.h linguist-language=C++
*.c linguist-language=C++

使用 .git-credentials  配置文件(win下面在 C:\user\username下面) 内容如下
https://username:password@github.com
再执行 git config --global credential.helper store
或执行(缓存10个小时) git config --global credential.helper cache –timeout=36000

git clone https://brinkqiang:password@github.com/brinkqiang/dmlua.git
git remote add origin https://brinkqiang:password@github.com/brinkqiang/dmlua.git
git branch -al 查看本地和远程的所有分支。 
本地创建仓库
git init
本地创建纯净的仓库
git init --bare --shared
添加
git readme.txt add
添加当前目录所有文件
git add .
本地提交
git commit 
拉取
git pull
远端提交
git push -u origin master   (注:此操作目的是把本地仓库push到github上面,此步骤需要你输入帐号和密码)
git submodule init && git submodule update
git submodule add https://github.com/google/googletest.git thirdparty/gtest
bat设置如下
git config --global user.name ""
git config --global user.email ""
git config --global credential.helper store
git config --global credential.helper cache –timeout=36000
git config --global http.postBuffer 200000000
git config --global http.sslVerify "false"

2. git代理设置

edit .gitconfig
[http]
    proxy = http://127.0.0.1:8087
    sslVerify = false
    postBuffer = 200000000

3. git放弃本地所有修改

git fetch --all
git reset --hard origin/master
git pull

4. git 切换当前链接方式

本地https -> ssh方式

git remote set-url origin git@github.com:username/project.git

本地ssh -> https方式

git remote set-url origin https://github.com/username/project.git

5. git换行符

5.1. 假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF: git config –global core.autocrlf true

5.2. Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

git config –global core.autocrlf input

5.3. 如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:

git config –global core.autocrlf false

6. 注意

使用gogs http上传方式 可能存在缓冲区过小的问题 fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400 Failed reading client body 可以在工作目录执行如下命令 git config –global http.postBuffer 204800000

7. 干净的新仓库

git checkout --orphan latest_branch
git add -A
git commit -am "commit message"
git branch -D master
git branch -m master
git push -f origin master

8. 本地签入合并冲突提示: Please, commit your changes or stash them before you can merge.

git stash
git pull
git stash pop

9. 本地上传gitlab项目

先删除.git目录

git init
git remote add origin git@gitlab.com:userName/projectName.git
git add .
git commit -m "note"
git push original master

10. 增加可执行权限

git ls-files --stage
100644 0479304e6086a7b886718aacd1e4e50da9145f66 0       dmgen

644权限,默认不能执行

git update-index --chmod +x dmgen

git ls-files --stage
100755 0479304e6086a7b886718aacd1e4e50da9145f66 0       dmgen

现在文件是755可执行权限.

git commit -m "xxx!"
 1 files changed, 0 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 src/dmgen

git push

11. 仓库迁移

git clone ne https://github.com/brinkqiang/dmgen pushd dmgen git remote add gitlab https://new.github.com/brinkqiang/dmgen git push gitlab master popd

12. zsh git

git branch 分支名 //创建分支

gco 分支名 //切换分支

gwip //签入
ggpush //推送远端

gpoat //创建上传分支

13. git lfs

git lfs install git lfs track “.zip” git lfs track “.rar” git add .gitattributes

14. windows更新git

git update-git-for-windows

14.1. The git Plugin

The git plugin provides many aliases and a few useful functions.

Enable it by adding git to the plugins array before sourcing OMZ (see [[Plugins]]).

14.2. Aliases

Alias Command
g git
ga git add
gaa git add –all
gapa git add –patch
gau git add –update
gb git branch
gba git branch -a
gbda git branch –merged | command grep -vE “^(*|\smaster\s$)” | command xargs -n 1 git branch -d
gbl git blame -b -w
gbnm git branch –no-merged
gbr git branch –remote
gbs git bisect
gbsb git bisect bad
gbsg git bisect good
gbsr git bisect reset
gbss git bisect start
gc git commit -v
gc! git commit -v –amend
gca git commit -v -a
gcam git commit -a -m
gca! git commit -v -a –amend
gcan! git commit -v -a -s –no-edit –amend
gcb git checkout -b
gcf git config –list
gcl git clone –recursive
gclean git clean -df
gcm git checkout master
gcd git checkout develop
gcmsg git commit -m
gco git checkout
gcount git shortlog -sn
gcp git cherry-pick
gcpa git cherry-pick –abort
gcpc git cherry-pick –continue
gcs git commit -S
gd git diff
gdca git diff –cached
gdt git diff-tree –no-commit-id –name-only -r
gdw git diff –word-diff
gf git fetch
gfa git fetch –all –prune
gfo git fetch origin
gg git gui citool
gga git gui citool –amend
ggf git push –force origin $(current_branch)
ghh git help
ggpull ggl
ggpur ggu
ggpush ggp
ggsup git branch –set-upstream-to = origin/$(current_branch)
gpsup git push –set-upstream origin $(current_branch)
gignore git update-index –assume-unchanged
gignored git ls-files -v | grep “^[[:lower:]]”
git-svn-dcommit-push git svn dcommit && git push github master:svntrunk
gk \gitk –all –branches
gke \gitk –all $(git log -g –pretty = format:%h)
gl git pull
glg git log –stat –color
glgg git log –graph –color
glgga git log –graph –decorate –all
glgm git log –graph –max-count = 10
glgp git log –stat –color -p
glo git log –oneline –decorate –color
glog git log –oneline –decorate –color –graph
glol git log –graph –pretty = format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ –abbrev-commit
glola git log –graph –pretty = format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ –abbrev-commit –all
glp _git_log_prettily
gm git merge
gmom git merge origin/master
gmt git mergetool –no-prompt
gmtvim git mergetool –no-prompt –tool = vimdiff
gmum git merge upstream/master
gp git push
gpd git push –dry-run
gpoat git push origin –all && git push origin –tags
gpristine git reset –hard && git clean -dfx
gpu git push upstream
gpv git push -v
gr git remote
gra git remote add
grb git rebase
grba git rebase –abort
grbc git rebase –continue
grbi git rebase -i
grbm git rebase master
grbs git rebase –skip
grh git reset HEAD
grhh git reset HEAD –hard
grmv git remote rename
grrm git remote remove
grset git remote set-url
grt cd $(git rev-parse –show-toplevel || echo “.”)
gru git reset –
grup git remote update
grv git remote -v
gsb git status -sb
gsd git svn dcommit
gsi git submodule init
gsps git show –pretty = short –show-signature
gsr git svn rebase
gss git status -s
gst git status
gsta git stash save
gstaa git stash apply
gstd git stash drop
gstl git stash list
gstp git stash pop
gstc git stash clear
gsts git stash show –text
gsu git submodule update
gts git tag -s
gunignore git update-index –no-assume-unchanged
gunwip git log -n 1 | grep -q -c “--wip--” && git reset HEAD~1
gup git pull –rebase
gupv git pull –rebase -v
gupa git pull –rebase –autostash
gupav git pull –rebase –autostash -v
gunignore git update-index –no-assume-unchanged
glum git pull upstream master
gvt git verify-tag
gwch git whatchanged -p –abbrev-commit –pretty = medium
gwip git add -A; git rm $(git ls-files –deleted) 2> /dev/null; git commit -m “–wip–”

14.3. Deprecated Aliases

These are aliases that have been removed, renamed, or otherwise modified in a way that may, or may not, receive further support.

Alias Command Modification  
gap git add –patch new alias gapa  
gcl git config –list new alias gcf  
gdc git diff –cached new alias gdca  
gdt git difftool no replacement  
ggpull git pull origin $(current_branch) new alias ggl (ggpull still exists for now though)  
ggpur git pull –rebase origin $(current_branch) new alias ggu (ggpur still exists for now though)  
ggpush git push origin $(current_branch) new alias ggp (ggpush still exists for now though)  
gk gitk –all –branches now aliased to \gitk --all --branches  
glg git log –stat –max-count = 10 now aliased to git log --stat --color  
glgg git log –graph –max-count = 10 now aliased to git log --graph --color  
gwc git whatchanged -p –abbrev-commit –pretty = medium new alias gwch  
gwip git add -A; git ls-files –deleted -z \ xargs -r0 git rm; git commit -m “–wip–” now aliased to git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit -m "--wip--"

14.4. Functions

14.4.1. Current

Command Description
current_branch Return the name of the current branch
current_repository Return the names of the current remotes
git_current_user_name Returns the user.name config value
git_current_user_email Returns the user.email config value

14.4.2. WiP

These features allow to pause a branch development and switch to another one (“Work in Progress”, or wip). When you want to go back to work, just unwip it.

Command Description
work_in_progress Echoes a warning if the current branch is a wip
gwip Commit wip branch
gunwip Uncommit wip branch

14.5. github host

14.5.1. 获取Github相关网站的ip

访问https://www.ipaddress.com,找到页面中下方的“IP Address Tools - Quick Links”,分别输入github.global.ssl.fastly.net和github.com,查询ip地址。

14.5.2. 修改host

140.82.113.4 github.com
140.82.113.4 gist.github.com
185.199.109.153 assets-cdn.github.com
185.199.109.153 raw.githubusercontent.com
185.199.109.153 gist.githubusercontent.com
185.199.109.153 cloud.githubusercontent.com
185.199.109.153 camo.githubusercontent.com
185.199.109.153 avatars0.githubusercontent.com
185.199.109.153 avatars1.githubusercontent.com
185.199.109.153 avatars2.githubusercontent.com
185.199.109.153 avatars3.githubusercontent.com
185.199.109.153 avatars4.githubusercontent.com
185.199.109.153 avatars5.githubusercontent.com
185.199.109.153 avatars6.githubusercontent.com
185.199.109.153 avatars7.githubusercontent.com
185.199.109.153 avatars8.githubusercontent.com

14.5.3. 更新缓存

ipconfig /flushdns sudo dscacheutil -flushcache

14.5.4. github验证机制调整

在新机器上 设置好ssh-key的情况。 依旧需要账号密码, 这里的密码 不是登陆密码 而是Personal access tokens