我的 git 备忘
分支
创建并切换至新分支 dev
git checkout -b dev
查看分支
git branch
push an existing repository from the command line
git remote add origin https://github.com/mozjiang/jekyll-demo.git
git push -u origin master
对特定文件不追踪
在 .gitignore 中写入
/images
对名字为'images'的文件和文件夹都不追踪。
/images/
仅对名字为'images'的文件夹不追踪
git 对已追踪的文件取消追踪
你需要 git rm --cached <file>
命令
如:
git rm -r --cached WebRoot/WEB-INF/classes/**/*
代理相关
设置 socks 5 代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
git push 或者 clone 出错
出错代码:
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
ffatal: The remote end hung up unexpectedly
atal: early EOF
fatal: index-pack failed
解决方法:增大 postbuffer
git config --global http.postBuffer 1048576000
git 初始化相关操作
你在安装 Git 之后想要做的第一件事是告诉它你的名字和邮箱,个性化一些默认设置。一般初始的设置过程看上去是这样的:
# 告诉Git你是谁
git config --global user.name "zhang san"
git config --global user.email john@example.com
# 选择你喜欢的文本编辑器
git config --global core.editor vim
# 添加一些快捷方式(别名)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit
git commit
git add hello.py
git commit
它会打开一个文件编辑器(可以通过 git config 设置) 询问提交信息,同时列出将被提交的文件。
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#modified: hello.py
Git 对提交信息没有特定的格式限制,但约定俗成的格式是:在第一行用 50 个以内的字符总结这个提交,留一空行,然后详细阐述具体的更改。比如:
Change the message displayed by hello.py
- Update the sayHello() function to output the user's name
- Change the sayGoodbye() function to a friendlier message
注意,很多开发者倾向于在提交信息中使用一般现在时态。这样看起来更像是对仓库进行的操作,让很多改写历史的操作更加符合直觉。
git log
用法 一节提供了 git log 很多的栗子,但请记住,你可以将很多选项用在同一个命令中:
git log --author="John Smith" -p hello.py
这个命令会显示 John Smith 作者对 hello.py 文件所做的所有更改的差异比较(diff)。
..句法是比较分支很有用的工具。下面的栗子显示了在 some-feature 分支而不在 master 分支的所有提交的概览。
git log --oneline master..some-feature
You can undo git add before commit with
git reset <file>
which will remove it from the current index (the "about to be committed" list) without changing anything else.
You can use
git reset
without any file name to unstage all due changes. This can come in handy when there are too many files to be listed one by one in a reasonable amount of time.
git push -u origin master