git 命令学习总结

初始化仓库

git init
git config –global user.name “***”
git config –global user.email “*******@**.com”
git config –global color.ui true 让git显示颜色

查看远程分支

git remote 列出远端别名
git remote -v 查看实际连接地址
git remote add origin git@server-name:path/repo-name.git 本地仓库关联远程仓库,origin为远侧端的alias
git remote rm [alias]
git push -u origin master第一次推送master分支的所有内容
git ls-remote [远程分支别名] 查看远程分支
git remote show [远程分支别名] 查看远程分支状态

git获取远程分支

1.git fetch orgin 获取所有分支
2.git checkout -b [本地分支名] origin/[远程分支名]
或者:
git checkout –track origin/[远程分支名]

git pull origin [远程分支名]:[本地分支名]
git push origin [本地分支名]:[远程分支名]

git push origin :[远程分支名] 删除远程分支

git clone 克隆远程库到本地

git fetch origin master:tmp
git diff tmp
git merge tmp

git 提交代码到本地仓库

git add file 将文件添加到缓冲区
git commit -am/ -m “sth.” 记录缓冲区快照

删除命令

git rm file 默认会将文件从缓存区和工作区同时删除,(删除git对文件的追踪)
git rm –cached file 删除缓存区引用,保留工作区文件
git rm -r –cached . 删除当前目录下的的缓存

文件,版本恢复

git checkout – file 直接用版本库的文件,还原工作区的文件
git reset HEAD file discard 缓存区的修改(撤销之前add的操作)
git reset –mixed 默认方式,回退commit和index信息,保留源码
git reset –soft 只回退commit信息,如果还要提交,直接commit就可以
git reset –hard HEAD^ 版本库,版本回退
git reset –hard HEAD~3 回退到倒数第3个版本
git reset –hard origin/master 将本地状态回退到和远程一样
git revert 用一次新的commit来回滚之前的commit

文件对比命令

git diff HEAD – file 查看工作区,缓存区和版本库的区别
git diff – file 比较工作区和版本库区别
git diff –cached – file 比较缓冲区和版本库区别
git diff –stat 显示摘要而非整个 diff
git diff refs/remotes/origin/master 比较远程仓库和当前的差异

git reflog 记录每一次操作命令
git fsck –lost-found 检查丢掉的commit,可以使用git reset–hard [commit-hash]
或者git merge [commit-hash] 来恢复之前的提交

git 分支

git checkout -b dev 创建并切换到分支dev
git branch 查看分支列表
git branch dev 创建分支dev
git checkout dev 切换到dev分支
git branch -D dev 删除dev分支
git merge dev 合并dev分支到当前分支

git branch -a 查看远程分支
git branch -m [原名称] [新名称] 对分支重命名
git cherry-pick [版本号] 把另一个分支的commit合并到当前分支

git缓存

git stash 缓存现场
git stash list 查看缓存的stash
git stash pop 恢复,同时把stash内容删掉

添加标签

git tag -a [标签名] -m [注解]打标签,并添加注解
git tag -a v0.9 [历史版本号] 对历史版本打上标签
git tag -d [标签名] 删除本地标签
git push origin [tagname] 推送本地标签
git push origin –tags 推送全部未推送过的本地标签
git push origin :refs/tags/[tagname] 删除一个远程标签

查看日志

git log –pretty=oneline 文件名 列出单个文件的所有改动历史
git log –oneline –decorate –graph 查看log
git log orgin/master ^master 忽略master分支提交的log
git log –author 只寻找某个特定作者的提交
git log -[number] 最近几次提交
git log –since –before 根据日期过滤提交记录
git log –grep 根据提交注释过滤提交记录
git log –no-merges 不包含merge的log
git log -p 显示每个提交引入的补丁
git log –stat 显示每个提交引入的改动的差值统计

git log –follow -p [文件名] 显示单个文件的修改历史
git show [某次提交的哈希值] [文件名] 显示单个文件的修改情况
git blame [文件名] 查看某个文件的每一个部分是谁修改的

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

忽略未跟踪的文件
1. 修改.git/info/exclude文件,可使用正则表达式:例如.[oa]等价于.o和*.a 设置只有自己需要忽略的文件
2. 在根目录下新建一个.gitignore的文件,在命令行执行 echo *.jpg>.gitignore

忽略已经跟踪的文件
git update-index –assume-unchanged /path/to/file 忽略跟踪
git update-index –no-assume-unchanged /path/to/file 恢复跟踪

问题:

当你推送到远端分支时会碰到的主要问题是,其他人在此期间也推送了的情况。
如果你和另一个开发者同时克隆了,又都有提交,那么当她推送后你也想推送时,
默认情况下 Git 不会让你覆盖她的改动。
$ git push github master
To git@github.com:schacon/hw.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘git@github.com:schacon/hw.git’
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the ‘Note about
fast-forwards’ section of ‘git push –help’ for details.

可以修正这个问题。执行 git fetch github; git merge github/master,然后再推送

关于使用Github,gitignore不起作用的解决方法

git rm -r –cached .
git add .
git commit -m ‘update .gitignore’

git commit不能提交中文注释

修改inputrc中对应的行:
set output-meta on
set convert-meta off

git log 乱码

在 etc\gitconfig 中添加

[gui]
encoding = utf-8
[i18n]
commitencoding = utf-8
logoutputencoding = gbk
[svn]
pathnameencoding = gbk

git设置代理

git config –local http.proxy http://proxy.bmcc.com.cn:8080
git config –local http.proxy http://user:password@proxy.bmcc.com.cn:8080
git config –get –local http.proxy
git config –local –unset http.proxy
参考
git config –local http.proxy http://ngcrm_xubo:xcv.2134@proxy.bmcc.com.cn:8080

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> master

以上内容学习自廖雪峰 git教程 和平时使用的总结

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值