gitgit 笔记HumphreyDan2019-03-172022-01-16 config 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192# 修改配置git config --local # 对某个仓库有效git config --global # 对当前用户所有仓库有效git config --system # 对系统所有登录用户有效# 查看配置git config --list --localgit config --list --globalgit config --list --system# 打开编辑器修改configgit config -e # 仅对当前仓库有效# 变更文件名git mv readme readme.md # 避免 mv x y -> git add -> git rmgit log [分支] --oneline # 一行显示 -n4 # 指定最新的几次提交 --all # 所有分支的提交 --graph # 图形化显示# 打开内置帮助网页.git help --web [log]# guigitk --allgit branch -av# 在 ./git/refs/heads/xxx 中查看信息git cat-file -t master # 返回 git object model 类型: blog, tree, commit, tag -p # 显示所有内容# 删除分支git branch -D [fixup]# 变基git rebase -i# 暂存区和最近一次提交的区别git diff --cached# 将暂存区的内容丢弃git reset HEAD -- <file># 将暂存区的内容恢复到本地git checkout -- <file># 设置别名git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st statusgit config --global alias.last 'log -1 HEAD'git config --global alias.unstage 'reset HEAD --'; git unstage fileA === git reset HEAD -- fileAgit config --global alias.visual '!gitk'# 查看各个分支所指的对象 --decorategit log --oneline --decorategit log --oneline --decorate --graph --all# 跟踪远程分支git checkout --track origin/serverfixgit checkout -b sf origin/serverfix; sf 分支追踪 origin/serverfix 分支.# 添加修改正在追踪的上游分支; -u / --set-upstream-togit branch -u origin/serverfix# 当设置好跟踪分支后,可通过 @{upstream} 或 @{u} 快捷方式来引用.所有如果 master 跟踪 origin/master。那么 git merge @{u} 可以取代 git merage origin/master.# 查看所有跟踪分支git branch -vv# 删除服务端的分支git push origin --delete serverfix#git init --bare --shared ; # shared 会自动修改该仓库目录的组权限为可写.# 为服务端配置 SSH 访问sudo adduser gitsu gitcdmkdir .ssh && chmod 700 .sshtouch .ssh/authorized_keys && chmod 600 .ssh/authorized_keyscat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keyscat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys# 限制 git 用户只能访问项目,无法登录远程主机.cat /etc/shellswhich git-shellsudo vim /etc/shells; # 将 git-shell 添加sudo chsh git /usr/bin/git-shell; # 限制 git 用户只能利用 SSH 连接对 Git 仓库进行推送和拉去操作,而不能登录机器并取得普通 shell.# 以守护进程的方式设置 git 协议,不需要配置 SSH 公钥.git daemon --reuseaddr --base-path=/opt/git/ /opt/git/;# --reuseaddr 允许服务器在无需等待旧连接超时的情况下重启# --base-path 允许用户在未完全指定路径的条件下克隆项目,结尾的路径将告诉 git 守护进程从何处寻找仓库来导出.如果有防火墙运行,请开放 9418 端口.# 空白错误(换行\tab\。。。)git diff --check# 部分暂存git add --patch#git merge --squash featureB# --squash 接受被合并分支上的所有工作,并将其压缩至一个变更及,使仓库成为真正合并发生的状态,而不是生成一个合并提交.# 打包 archivegit archive master --prefix='project/' | gzip > `git describe master`.tar.gzgit archive master --prefix='project/' --format=zip > `git describe master`.zips#git diff --ours # --theirs # --base -b