Git命令使用记录

日期:2015-8-29 08:51 | 标签: Git | 阅读:1384

自己在业余则用GIT比较多,程序员天生的敲命令舒适感,还有就是GIT实在太火了,不会GIT都不好意思说自己是程序员。 这里记录自己git使用记录,做一些备忘。更全请参考这个..

速查表

下图居然没有git config,查看配置信息可以使用git config -l 合成二维码

查看项目GIT INFO

查看今天代码量

git diff --shortstat "@{0 day ago}"

git查看上一次提交内容

git log -n 1

查看最近一次提交的所有更改细节,可以使用

 git log -n 1 -p

查看最近一次提交所有更改文件

 git log -n 1 --stat

显示所有提交

git log --oneline --abbrev-commit --all
# 可视化显示(图)
git log --oneline --abbrev-commit --all --graph
# 查看branch与tag
git log --oneline --abbrev-commit --all --graph --decorate
# 颜色区分
git log --oneline --abbrev-commit --all --graph --decorate --color
# 设置别名
alias gl='git log --oneline --abbrev-commit --all --graph --decorate --color'

当然,这只是命令行的可视化,还可以试用GUI如GitX

合并多次提交

修改最后一次提交的信息,否则

# 未PUSH
git commit --amend
git push
# 已PUSH
git push -f

合并多次提交用rebase,可以使用如下命令,n代表合并提交的次数

git rebase –i HEAD~n
# 将对应提交的pick修改为squash或者s,然后输入":wq”退出。

合并到指定位置可以使用(注意:指定的分支并不会合并,只是一个分割点而已)

git rebase -i f7d0bd75c8dabe127d8cbd2c1d70ff188ff83392

接下来会进入vim模式,除第一个 pick 外,其余的全部修改成 squash,也可以缩写为 s,保存即可。 具体使用可以参考这篇文章,说得还是比较详细的: http://blog.csdn.net/yangcs2009/article/details/47166361
合并其它分支提交,但是最好有可视化界面,不然真不好看!

git cherry -pick

强制更新覆盖

git fetch --all
git reset --hard origin/master
# 取消本地提交至commit-id,commit-id后的提交都会失效
git reset --soft commit-id

Tag

喜欢每次在有重大更新之前对之前的版本打一个Tag,那么Tag怎么打呢?

# 查看
git tag -l
# 查看详细
git show v0.1
# 添加,ps:a:标签; m:说明
git tag -a v0.1 -m "tag说明"
# 给某次提交打 tag
git tag -a "v0.x" tag_rev_number -m 'your_message'
# 删除
git tag -d v0.1
# 提交至服务器
git push origin v0.1

Branch

准备新建一个分支重整软件架构

# 查看
git branch
# 创建
git branch branch-name
# 切换
git checkout branch-name
# 删除分支
git branch  -d  branch-name
# 重命名
git branch  -m old_branch-name  new_branch-name

merge

git merge --no-ff  branch-name

撤销

  1. 已修改未提交的文件

    git checkout file-name
    
  2. 撤销某次操作

    # 撤销前一次 
    git revert HEAD   
    # 撤销前前一次 
    git revert HEAD^            
    # 撤销指定的版本 
    git revert commit-id
    

解决冲突

  1. 确认本地修改无用,直接reset,见强制更新覆盖
  2. 本地修改有用,则直接一个一个文件看,修正冲突再提交
    git stash
    git pull
    # 当然,你可以直接使用GIT UI
    git diff -w 文件名
    
  3. 想直接忽略合并
    git reset --hard HEAD
    

排除文件(.gitignore )

#忽略gitignore文件  
.gitignore  
#忽略后缀名为.o和.a的文件  
*.[oa]  
#显示指定忽略名称为main的文件  
main

参考:http://blog.csdn.net/pipisorry/article/details/45532883
解决提交冲突(pull request方式):http://www.tuicool.com/articles/Z326v2

windows配置Git

  1. 下载,最好去官网,百度推荐的是64位的(也没个提示),下载下来后才发现不能用。
  2. 利用GitBash生成public ssh key
    cd ~
    ssh-keygen -t rsa
    
    会提示输入文件名与密码
  3. C:\Users\lenovo.ssh(我的路径)生成
    • id_rsa
    • id_rsa.pub

安装git服务端

参考0: 个人推荐这个
参考1: 使用gitosis :基于CentOS
参考2: 使用Gitolite:本人未测试
参考3: http://www.lifeba.org/arch/git_gitosis.html :关键词:其他客户端ssh支持 错误1

gitosis.init.InsecureSSHKeyUsername: Username contains not allowed characters

stackoverflow上的解释都是用户名不合法,当然,提示信息也是这么说的。主要原因是@后的第一个字母不能为数字。
错误2

gitosis.serve.main:Repository read access denied

解决办法:

  1. 原因1 :gitosis.conf 中的 members 与 keydir 中的用户名不一致
    办法:改为一致
  2. gitosis.conf配置问题
    [group gitosis-admin]
    writable = gitosis-admin 
    members = lenovo@kobepeng
    [group git-test]
    writable = git-test
    members = lenovo@kobepeng
    
    改为【待究】
    [group gitosis-admin]
    writable = gitosis-admin git-test
    members = lenovo@kobepeng
    
  3. 以上两种必须更新到服务端才有效

  4. 服务端创初始化 useradd 命令可参考链接

    # useradd -r -s /bin/sh -c 'git version control' -d /home/git git
    # sudo -H -u git gitosis-init <filename_key-rsa.pub
    

    如果你要重新初始化,那么可以预先移除 gitosis-admin 目录,再次执行以下命令

    sudo -H -u git gitosis-init <filename_key-rsa.pub
    

修改Git配置文件

cd .git
vim config

趣事

  1. reating a branch in Git just means writing 40 bytes to disk
  2. Tag references are basically like branch references that never move,unless use --force
  3. git gc
  4. creating a branch is like saving your game before you battle the boss

参考

我的Git笔记-颜海镜
Git命令清单-阮一峰
Git目录结构
GIT SHOULDN'T BE SO HARD TO LEARN.
谷歌的代码管理

版权声明: 署名-非商业性使用-禁止演绎 4.0 国际(CC BY-NC-ND 4.0
Copyright ©2013-2017 | 粤ICP备14081691号 | yipeng手工打造 | 联系方式