GIT 命令
2019-08-05 本文已影响6人
unual_
配置
- git config --list
查看配置
两个git账号共存
取消全局的用户名和邮箱,在本地各自工作目录设置(eg.D:/code/project)
git config --global --unset user.user
git config --global --unset user.email
git config user.name "username"
git config user.email "email"
- git config --global credential.helper store --file=~/.ssh/git_credentails
- git config --system --unset credential.helper manager
设置git的账号和密码
#~/.ssh/git_credentails文件
#github 和 gitlab 账号密码共存
https://username:password@github.com
http://username:password@git.xxx.com
远程仓库
- git clone https://github.com/unual/GitCommand.git [可选名字]
从远程仓库克隆到本地 - git remote [-v]
列出远程仓库 - git remote add origin https://github.com/unual/GitCommand.git
添加远程仓库 origin(仓库名字) - git remote get-url origin
获取仓库的地址 - git remote set-url origin https://github.com/unual/GitCommand.git
修改仓库的地址 - git fetch origin
抓取服务器上所有分支的内容到本地 - git remote show origin
查看远程仓库分支信息
分支
- git fetch
拉取远程仓库所有分支 - git branch
查看本地分支列表 - git branch develop
在本地仓库创建一个develop分支 - git branch (-u | --set-upstream) origin/master
设置已有的本地分支跟踪一个刚刚拉取下来的远程分支 - git pull [--allow-unrelated-histories(关联本地和远程分支,远程分支已有提交,会用到)]
拉取已跟踪的远程分支 - git push
将本地已提交内容推到远程 - git branch -d develop
删除本地分支 - git push origin -d develop
删除远程分支 - git push origin master:develop
本地master 提交到远程 develop,远程分支不存在则创建
新开分支及合并
1.开发某个网站。
2.为实现某个新的需求,创建一个分支。
3.在这个分支上开展工作。
正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:
1.切换到你的线上分支(production branch)。
2.为这个紧急任务新建一个分支,并在其中修复它。
3.在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
4.切换回你最初工作的分支上,继续工作。
新开分支,开发新需求
git checkout -b iss53
vim index.html
git commit -a -m 'added a new footer [issue 53]'
回到线上分支
git checkout master
从线上分支拉出新分支,改bug
git checkout -b hotfix
vim index.html
git commit -a -m 'fixed the bug'
回到线上分支,将修改bug分支合并
git checkout master
git merge hotfix
#可能会遇到冲突
#Auto-merging index.html
#CONFLICT (content): Merge conflict in index.html
#Automatic merge failed; fix conflicts and then commit the result.
git commit -a -m 'merge'
git branch -d hotfix
- 变基
- git cherry-pick 9e5e64ae43a6fd3e94888d76779ad79fb568ed180e5fcdf
从另外一个分支,检出某个提交,合并到当前分支
撤销提交
- git reset
重置到git commit,重置提交记录
- git reset --mixed 9e5e64a
重置到git add,重置暂存区 - git reset --hard 9e5e64a
重置到修改文件,恢复原文件,重置工作目录
链接
文件操作
-
工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。下图是git文件的生命周期(未修改,已修改,和暂存都属于已跟踪状态)
lifecycle.png
- git status [-s]
检查当前文件状态 - git add 文件或目录的路径
可以用它开始跟踪新文件,或者把已修改的文件放到暂存区。还能用于合并时把有冲突的文件标记为已解决状态等。将这个命令理解为 -- 添加内容到下一次提交中。 - git diff
查看修改之后还没有暂存起来的变化内容。 - git diff --staged
查看已暂存,下次将要提交。 - git commit -m 'message'
提交更新,将暂存状态改成未修改状态。 - git commit -a -m 'message'
自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤 - git rm
从暂存区中删除某个文件 - git log
查看提交历史记录 链接
git log --pretty="%h - %an - %s - %cd" .gitignore
a1ba2eb - unual - modified .gitignore - Tue Jul 30 21:35:38 2019 +0800
20d3401 - unual - 第一次提交 - Tue Jul 30 21:08:39 2019 +0800
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
作者:北山学者
链接:https://www.jianshu.com/p/15838b8b44c0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
- git reset HEAD add1
取消暂存文件add1 - git tag -a v1.0 -m 'init version 1.0'
打标签 链接 - .gitignore
#所有空行或者以 # 开头的行都会被 Git 忽略。
#可以使用标准的 glob 模式匹配。
#匹配模式可以以(/)开头防止递归。
#匹配模式可以以(/)结尾指定目录。
#要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf